web-dev-qa-db-fra.com

Comment ajouter une commande dans l'éditeur vim?

Si supposons que mon nom de fichier de code source est "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 telle que si je tape ": debug", la commande ci-dessus est exécutée? Comment puis-je y arriver?

82
Abhijeet Rastogi

Oui. Documentation Vim, Section 40.2, Mappages de ligne de commande :

L'éditeur Vim vous permet de définir vos propres commandes. Vous exécutez ces commandes comme toute 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.

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

Mettez cette ligne dans votre ~/.vimrc (bien sûr le : initial__) et elle sera définie à chaque démarrage de vim. Utilisez également %:t pour faire référence au fichier en cours d'édition (l'écriture ! gcc %:t est remplacée par ! gcc foo.c).

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

98
James Polley

Vim a déjà un support pour Makefiles (: make). Si vous en créez un pour votre source, vous pouvez spécifier ce que vous voulez faire. De plus, à travers les balises ctags, Vim pourra parcourir les erreurs trouvées lors de la compilation.

14
Jeremy L

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

Ainsi, lorsque l'utilisateur saisit :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 prennent effet. Vous avez terminé.

Testez-le

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

Étape 2: Le contenu de ~/legend_header.txt devrait être ajouté à l'emplacement du curseur.

5
Eric Leschinski

J'utilise cette commande dans mon fichier .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 exec sera le nom de la source sans l'extension .c.

0
Juan Miguel AR