113 votes

Comment ajouter une commande dans l'éditeur vim ?

Supposons que le nom du fichier de mon code source soit "foo.c". Lors de l'édition et du débogage, j'exécute toujours cette commande:-

:!gcc -g foo.c -o foo;gdb foo

Puis-je ajouter une commande personnalisée à Vim de sorte que si je tape ":debug", la commande ci-dessus s'exécute ? Comment puis-je réaliser cela ?

141voto

halr9000 Points 255

Oui. Documentation de Vim, section 40.2, Correspondance des lignes de commande :

L'éditeur Vim vous permet de définir vos propres commandes. Vous exécutez ces commandes comme n'importe quelle autre commande en mode ligne de commande. Pour définir une commande, utilisez la commande ":command". comme suit :

commande DeleteFirst 1delete

Maintenant, lorsque vous exécutez la commande ":DeleteFirst", Vim exécute ":1delete", qui supprime la première ligne.

Note : Les commandes définies par l'utilisateur doivent commencer par une lettre majuscule. Vous ne pouvez pas utiliser ":X", ":Next" et ":Primo". ":Print". Le trait de soulignement ne peut pas être être utilisé ! Vous pouvez utiliser des chiffres, mais cela mais c'est déconseillé.

Mettez cette ligne dans votre ~/.vimrc (moins les frais initiaux : bien sûr) et il sera défini à chaque fois que vous démarrez vim. Utilisez également %:t pour faire référence au fichier en cours d'édition (en écrivant ! gcc %:t est remplacé par ! gcc foo.c ).

Si vous souhaitez qu'il ne soit défini que pour un seul fichier, ou pour certains fichiers, vous voulez un fichier de type autocommande.

16voto

Svet Points 1432

Vim a déjà un support pour Makefiles (:make). Si vous en créez un pour votre source, vous pouvez y spécifier ce que vous voulez faire. De plus, grâce aux ctags, Vim sera capable d'itérer à travers toutes les erreurs trouvées pendant la compilation.

9voto

Eric Leschinski Points 6388

Ajouter une commande de l'éditeur vi définie par l'utilisateur :

Cela fera en sorte que lorsque l'utilisateur tape :Legend en mode normal, un bloc de texte est ajouté sous le curseur.

Étape 1 : Mettez cette ligne dans un fichier nommé ~/legend_header.txt`.

this text will be added

Étape 2 : Mettez cette commande dans votre fichier ~/.vimrc (si le fichier n'existe pas, créez-le) :

"The following command puts the contents of ~/legend_header.txt 
"under the cursor when the user types ":Legend" in normal mode.
command Legend :r ~/legend_header.txt

Étape 3 : Redémarrez vi pour que les modifications soient prises en compte. Vous avez terminé.

Testez-le

Étape 1 : Ouvrez un nouveau fichier dans vi. Soyez dans le "mode normal" par défaut de vi. Tapez :Legend

Étape 2 : Le contenu de ~/legend_header.txt doit être ajouté là où se trouve le curseur.

1voto

Juan Miguel AR Points 11

J'utilise cette commande dans mon .vimrc pour compiler et exécuter le code C :

:command Gcc !set $1 `echo "%" | sed 's/\.c//g'` ;gcc -o $1 "%" ; chmod o+x $1; $1

mais pour vos besoins, vous pourriez mettre :

:command Gdb !set $1 `echo "%" | sed 's/\.c//g'` ;gcc -o $1 "%" ; gdb $1

Vous pouvez être sûr que le nom du fichier d'exécution sera le nom de la source sans l'extension .c.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X