FAQ

De Vim-fr

Cette page regroupe un ensemble de questions récurrentes.

Questions posées sur le chan irc ou le salon jabber

Y a-t-il une commande pour facilement commenter et décommenter du code dans Vim ?
  • Non, Vim n'est pas un IDE, c'est un éditeur de texte avancé. Cependant il existe un bon nombre de scripts conçus pour cela, tel que NERDCommenter ou encore EnhCommentify.
Comment obtenir le caractère sous le curseur dans un script vim ?
  • Tout simplement: getline('.')[getcol('.')-1]
Comment enregistrer un fichier qu'on n'a pas le droit d'enregistrer ?
  • si sudo est installé: [1]

sinon:

Danger: ça ne fonctionne qu’en environnement mono-utilisateur. Peut présenter une failler de sécurité si un attaquant modifie le fichier /tmp/sudoSave, entre le moment où il est créé et le moment où il est copié, suivant le umask utilisé. L'utilisation de mktemp pourrait remédier à ça.

nnoremap <leader>es :w! /tmp/sudoSave \| let $fileToSave=expand('%') \| let $fileToSaveBackup=expand('%').'~' \| !su -c "cp $fileToSave $fileToSaveBackup && cp /tmp/sudoSave $fi leToSave"<CR><ESC>:e!<CR>

dans le .vimrc, puis \es pour enregistrer.

Comment renommer un fichier en cours d'édition ?

  • A priori il n'existe pas de commande native.

Il est cependant possible d'enregistrer dans un nouveau fichier, puis de supprimer l'ancien.

:saveas nouveau_nom
:!rm ancien

saveas, contrairement à write ouvre le fichier écrit dans le buffer courant.

Comment supprimer les (horribles) retours à la ligne de Windows ?

  • :%s/<ctrl-v><ctrl-m>//g

Quand je suis en mode "wrap", comment faire pour que 'j' et 'k' me permettent de naviguer de ligne d'écran en ligne d'écran, et non uniquement de ligne physique en ligne physique ?

Utiliser gj et gk, il est aussi possible de les mapper à 'j' et 'k'