Comment ajouter une commande dans l'éditeur vim?

87

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?

Abhijeet Rastogi
la source

Réponses:

103

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", ce 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(moins le montant initial :bien sûr) et elle sera définie chaque fois que vous démarrez vim. Utilisez également %:tpour faire référence au fichier en cours d'édition (l'écriture ! gcc %:test 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.

James Polley
la source
4
si vous remplacez une commande existante, vous devez utiliser command!.
Phyatt
14

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.

Jeremy L
la source
5

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

Ainsi, lorsque l'utilisateur tape :Legenden 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é.

Essaye-le

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

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

Eric Leschinski
la source
0

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.

Juan Miguel AR
la source