Both sides previous revisionPrevious revisionNext revision | Previous revision |
informatique:logiciels:vim [2015/10/20 06:16] – [.vimrc] backup et writebackup pteu | informatique:logiciels:vim [2020/11/17 08:39] (current) – Désactiver l'indentation pour coller du texte pteu |
---|
| |
Le mode insertion permet de taper du texte, le mode commande permet de faire tout le reste (tout ce qui suit). Il faut noter que en mode commande, la touche ''<tab>'' permet l'auto-complétion comme en console. | Le mode insertion permet de taper du texte, le mode commande permet de faire tout le reste (tout ce qui suit). Il faut noter que en mode commande, la touche ''<tab>'' permet l'auto-complétion comme en console. |
| |
| |
| =====Les options===== |
| |
| * ''-R'' **r**eadonly : pour ouvrir un fichier en lecture seule |
| |
| |
====Commande sur tous les buffers==== | ====Commande sur tous les buffers==== |
| |
Pour appliquer une commande non pas sur le fichier courant mais sur ous les buffers, il faut utiliser le préfix '':bufdo!''. Pour faire un remplace ment de chaine par exemple : | Pour appliquer une commande non pas sur le fichier courant mais sur tous les buffers, il faut utiliser le préfixe '':bufdo!''. Pour faire un remplacement de chaine par exemple : |
:bufdo! %s/init/final/g | <code bash> |
| :bufdo! %s/init/final/g |
| </code> |
| |
=====Divers===== | =====Divers===== |
</code> | </code> |
| |
| * pour lancer vim en mode insertion : ''vim +startinsert'' ou ''vim +start'' en plus court |
=====Commandes avancées===== | =====Commandes avancées===== |
| |
| |
| |
====Diviser la fenêtre==== | ====Diviser la fenêtre (split)==== |
VIM permet de diviser la fenêtre de façon à travailler simultanément sur 2 fichiers (ou plus..). | |
| |
En mode commande, taper '':split'' permet de diviser l'écran horizontalement, et '':vsplit'' verticalement. Si on spécifie en paramètre un nom de fichier ('':split <fic>'', en sachant que vous pouvez utiliser l'auto-complétion avec <tab> comme en console), ce dernier sera ouvert dans le nouveau cadre ; sinon le cadre sera rempli par le même fichier que l'original. Les opérations sur les fenêtre commencent par ''ctrl+w''. | VIM permet de diviser (splitter) la fenêtre de façon à travailler simultanément sur 2 fichiers (ou plus..). Pour lancer vim directement splitté : |
| <code bash> |
| # Ouvrir fic1 et fic2 en partage horizontal (split) |
| vim -o fic1 fic2 |
| |
On passe d'un cadre à l'autre avec ''<ctrl+w> w'' (les touches control et w simultanément, puis w). On peut redimentionner le cadre courant avec ''ctrl+w +'' et ''ctrl+w -'' pour respectivement agrandir ou rétrécir le cadre d'une ligne. On peut ajouter un facteur devant le **+** et le **-** : ''ctrl+w 5+'' augmentera la taille du cadre courant de 5 lignes. On annule le dernier redimentionnement avec un ''ctrl+w x''. | # Ouvrir fic1 et fic2 en partage vertical (vsplit) |
| vim -O fic1 fic2 |
| </code> |
| |
| Dans une fenêtre vim, en mode commande taper '':split'' pour diviser l'écran horizontalement, et '':vsplit'' verticalement. Si on spécifie en paramètre un nom de fichier ('':split <fic>'', en sachant que vous pouvez utiliser l'auto-complétion avec <tab> comme en console), ce dernier sera ouvert dans le nouveau cadre ; sinon le cadre sera rempli par le même fichier que l'original. Les opérations sur les fenêtres commencent par Controle + w : ''Ctrl+w s'' pour splitter (horizontalement) et ''Ctrl+w v'' pour "vsplitter" (verticalement). |
| |
| On sélectionne un cadre avec: |
| * ''Ctrl+w'' ''w'' pour sélectionner le suivant ; |
| * ''Ctrl+w'' + ''j'', ''k'', ''h'' ou ''l'' pour sélectionner celui respectivement celui du bas, du haut, de gauche ou de droite. |
| |
| On peut redimensionner le cadre courant avec : |
| * ''Ctrl+w +'' et ''Ctrl+w -'' pour agrandir ou rétrécir le split d'une ligne, ou |
| * ''Ctrl+w >'' et ''Ctrl+w <'' pour agrandir ou rétrécir le vsplit d'une colonne |
| On peut ajouter un facteur devant le ''+/-/>/<'' pour augmenter la taille de X lignes/colonnes, par ex: ''Ctrl+w 5+'' pour agrandir de 5 lignes. On annule le dernier redimensionnement avec un ''Ctrl+w x''. |
| |
| Pour fermer le split courant : ''Ctrl+w q'' ; pour fermer tous les splits sauf le courant : ''Ctrl+w o''. |
| |
| |
| |
La solution est de se rendre dans les options de Kitty/Putty, dans : Terminal/Features et de cocher l'option "Disable application keypad mode". | La solution est de se rendre dans les options de Kitty/Putty, dans : Terminal/Features et de cocher l'option "Disable application keypad mode". |
| |
| ====Désactiver l'indentation pour coller du texte==== |
| |
| L'auto-indentation c'est pratique lorsqu'on écrit du code mais lorsqu'on copie/colle du texte ça devient infernal car chaque nouvelle ligne se décale un peu plus pour devenir une suite informe de bouts de mots. |
| <code bash> |
| ligne 1 |
| ligne 2 |
| ligne 3 |
| </code> |
| Pour éviter cela il suffit d'activer l'option '':set paste'', qui désactive toute initiative de vim d'auto-indenter quoi que ce soit. On copie/colle le contenu, puis on réactive : '':set nopaste''. |
| |
| Un premier niveau de sagesse consiste à mapper ce switch sur une touche, comme par exemple ''F3'' : |
| <code bash> |
| set pastetoggle=<F3> |
| </code> |
| |
| Un second niveau d'érudition est d'activer ce switch automatiquement lors du copier/coller (lignes à ajouter dans le vimrc) : |
| <code bash> |
| let &t_SI .= "\<Esc>[?2004h" |
| let &t_EI .= "\<Esc>[?2004l" |
| |
| inoremap <special> <expr> <Esc>[200~ XTermPasteBegin() |
| |
| function! XTermPasteBegin() |
| set pastetoggle=<Esc>[201~ |
| set paste |
| return "" |
| endfunction |
| </code> |
| |
| source: [[https://coderwall.com/p/if9mda/automatically-set-paste-mode-in-vim-when-pasting-in-insert-mode|Automatically set paste mode in Vim when pasting in insert mode]] |
| |
| |