Astuces

De Vim-fr


Cette page a pour but de contenir un paquet de petites découvertes sur le fonctionnement de vim. N'hésitez pas à ajouter les votres.

Mode insertion

C-y Permet de recopier le caractère de la ligne du dessus en mode insertion.
^T,^D Permet d'indenter la ligne courante vers la droite, vers la gauche.
<C-o> Permet, dans le mode insertion, d'exécuter une commande du mode normal (par exemple dd) puis de retourner dans le monde insertion.
<C-v> Permet de sélectionner en block.
<C-v><Shift i> Permet de sélectionner en block et d'éditer le bloc sélectionné en mode insertion : on tappe le même texte sur toutes les lignes sélectionnées à partir de la position du buffer.

Mode normal

:mo,:co Permet de déplacer ou de copier les lignes sélectionnées à l'adresse indiquée
:ce,:ri,:le Permet de ce(ntrer), et de justifier à droite (right) ou à gauche (left) le texte sélectionné
gi Permet de rentrer en mode insertion à l'endroit où la dernière insertion à été effectuée.
I,A Permet de rentrer en mode insertion au début de la ligne courante, à la fin de la ligne courante.
^,<Entrer>,- Permet d'aller sur le premier caractère de la ligne courante, permet de faire la même chose mais pour la ligne suivante, permet d'aller à la ligne précédente.
gv Permet de récupérer la précédente sélection visuel que l'on vient de perdre suite à l'application d'une commande ou une autre manipulation.
zz Permet de centrer la ligne courante sur l'écran.
ZZ,:wq,:x Permet d'enregistrer puis de fermer vim.
:<#ligne1>,<#ligne2>!fmt Formate le texte dans la porté à 75 colonnes.
`` Permet de retourner à l'endroit (ligne + colonne) où l'on était avant un saut (par exemple suite à une recherche).
:e! Recharge le fichier courant.
:marks Permet de lister toutes les marques posées, en indiquant le nom de la marque, la ligne, la colonne, ainsi que le fichier concerné.
:%s/\n//,:%s/^.*$// Permet de supprimer toutes les lignes vides. La deuxième solution permet de supprimer également les lignes ne contenant que des espaces, c'est à dire sans caractères visibles mais pas vides non plus.

Pour votre .vimrc

:source ~/.vimrc Permet de recharger son vimrc sans avoir à relancer vim. Cela marche aussi pour les scripts que vous venez de modifier ou que vous êtes en train de développer.
set scrolloff=1000 Permet d'avoir constamment la ligne courante au centre de l'écran.
au FileType * setl fo-=cro Désactive l'autocomplétion pour les lignes de commentaires.
inoremap ( ()<left> Ferme une parenthese, et se place entre les deux. Cf vim.wikia pour des solutions plus avancées.
autocmd BufNewFile * silent! 0r ~/Templates/%:e.tpl Lors de la création d'un nouveau fichier vim ira voir si un fichier <code><extension>.tpl existe dans votre $HOME/Templates/ et le chargera. Astuce volé à calico.jeff.
abbr </> </<C-x><C-O> Fermeture automatique des tags lors d'édition html lorsque vous tapez "</>"
silent! runtime macros/matchit.vim Le plugin matchit est intégré au runtime ! (vérifiez dans /usr/share/vim/vim7X/macros)
nnoremap n nzz Lors d'une recherche, en appuyant sur 'n' (correspondance suivante), les correspondances seront centrée dans la fenêtre.

Autres

vim +numéro_de_ligne fichier,vim fichier +numéro_de_ligne,$ Permet d'ouvrir un fichier de se placer à la ligne indiquée. Le "$" permet d'indiquer la dernière ligne du fichier.
:mksession session.vim,$ vim -S session.vim Permet d'enregistrer une session, de charger une ssession.
:set t_Co=256 Permet, dans certains cas, de résoudre certains problèmes de coloration avec certains colorscheme.
:!cp %{,.save} Permet de sauvegarder le fichier courant avec l'extansion .save
K Permet d'afficher la documentation de la fonction ou de l'objet sur lequel le curseur est placé.
:e . Ouvre un navigateur de fichiers à partir du répertoire courant.
if glob("/path/to/file", 1) != "" Permet de déterminer si un fichier existe.


Le mode "Lecture Seul" ou "Read Only"

Lorsque vous éditez un fichier, et que vous ne possédez pas les droits en écriture sur ce fichier, VIM se met en mode "Read Only".

Vous pouvez vous même décider de mettre VIM en mode "Read Only" avec l'option -R.


Lorsque vous avez ouvert un fichier en mode "Lecture Seul", il est tout de même possible d'enregistrer vos modifications avec la commande :

:w !sudo tee %

le mot de passe root vous sera bien sûr demandé.

La complétion automatique selon le type de fichier

omnifunc permet de compléter des mots clefs selon le code édité. Un google?q="omnifunc+vim" donnerait de bon résultats. Mais rapidement, pour php par exemple:

 autocmd FileType php set omnifunc=phpcomplete#CompletePHP

dans ~/.vimrc devrait le faire.

savoir aussi que

set omnifunc=syntaxcomplete#Complete

suffit à activer la chose pour tous les langages avec la coloration syntaxique.

Mais a priori (et c'est le cas pour vim70 sous debian lenny/etch (oui, je sais c'est pas récent récent)) ces configurations sont automatiques pour tous les types de fichiers par le mécanisme de l'autoload pour peu que le filetype soit positionné (merci les ftplugins).

Pour plus d'info, essayer le traditionnel :help omnifunc et :help ft-syntax-omni.

Sinon, tous les fichiers de la complétion se trouvent ici:

ls /usr/share/vim/vimcurrent/autoload/*complete.vim


comment ça c'est trop long pour une astuce ? rhaaa, jamais content /o\