C

De Vim-fr


Ébauche.png

Cette page est une ébauche concernant ViM, n'hésitez pas à l'améliorer en partageant vos connaissances.

Si vous codez en C, ce script vous permettra de faire de l'omni-complétion.

Personnalisation

Compilation du fichier en cours

Voici un petit truc qui va ravir certaines personnes. Lorsque vous faites un petit fichier C, qui n'est pas lié à d'autres fichiers C, vous n'avez qu'un seul fichier à compiler. On peut donc mapper une touche pour compiler ce fichier automatiquement :

noremap <F6> <c-\><c-n>:!gcc -Wall % -o <c-r>=expand("%:r").".x"<cr><cr>
"Autre méthode plus facile
noremap <F6> <c-\><c-n>:!gcc -Wall % -o %<.x<cr>

Placez ceci dans votre .vimrc, ou mieux dans un c-ftplugin vu que le .vimrc n'est pas fait pour ça, et essayez, c'est vraiment pas mal. Petites explications : j'ai utilisé la commande :map, qui permet de définir en modes normal et visuel une touche pour effectuer une action (ce n'est que l'exemple ici, on peut faire beaucoup plus de choses). J'ai donc associé la compilation à la touche F6. La commande de compilation est constituée de :

  • <c-\><c-n> pour être sûr de commencer en mode normal, et sans bipper inutilement (on sait jamais)
  • : pour entrer en mode commande
  • ! pour exécuter une commande shell
  • gcc -Wall pour compiler avec tous les warnings
  • % indique le fichier courant
  • <c-r>= permet de retourner le résultat de ce qui suit
  • expand("%:r") retourne le nom du fichier courant sans l'extension
  • %< remplace les deux commandes précédentes
  • .".x" concaténation avec .x
  • <cr> permet de valider le expand
  • <cr> valide la commande

Si vous n'avez pas compris, je vous conseille de lire les manuels de :map, c_CTRL-R, et expand().


Encore plus propre et mieux intégré à vim ? Le mode Quickfix permet de compiler dans vim et de sauter directement aux lignes d'erreur avec :cc, :cn(ext) et :cp(rev). Pour cela, il suffit :

  • soit d'avoir un makefile où les diverses options seront positionnées, où l'on choisira d'avoir une sortie en .x, etc.
  • soit que le make installé soit en réalité GNUmake. Les règles implicites par défaut de ce dernier permettent qu'un make nom-executable génère l'exécutable à partir d'un fichier s'appelant 'nom-executable.c' ou 'nom-executable.cpp', sans qu'un seul Makefile soit défini. Le mapping sous vim devient alors:
:noremap <F6> <c-\><c-n>:make %<<cr>

Et le -Wall nous direz-vous ? Et bien il suffit tout simplement de positionner les variables d'environnement qui servent à paramétrer les règles par défaut de make. Ici, il suffit de taper dans votre session vim (ou exploiter des solutions comme les c-ftplugin, ou des plugins comme local_vimrc, project.vim ou let-modeline):

:let $CFLAGS='-Wall'

Liens externes

  • (en) Un script pour pouvoir faire de l'omni-complétion.