User Tools

Site Tools


informatique:logiciels:vim

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatique:logiciels:vim [2018/03/14 08:18] – [Les options] pteuinformatique:logiciels:vim [2020/11/17 08:39] (current) – Désactiver l'indentation pour coller du texte pteu
Line 110: Line 110:
 </code> </code>
  
 +  * pour lancer vim en mode insertion : ''vim +startinsert'' ou ''vim +start'' en plus court
 =====Commandes avancées===== =====Commandes avancées=====
  
Line 121: Line 122:
  
  
-====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 ligneOn 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+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''.
  
  
Line 290: Line 308:
  
 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]]
  
  
informatique/logiciels/vim.1521015537.txt.gz · Last modified: 2018/03/14 08:18 by pteu