vimエディターでコマンドを追加する方法は?


87

私のソースコードのファイル名が「foo.c」だとします。編集およびデバッグ中に、私は常にこのコマンドを実行します-

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

「:debug」と入力すると上記のコマンドが実行されるように、Vimにカスタムコマンドを追加できますか?どうすればそれを達成できますか?

回答:


103

はい。Vimドキュメント、セクション40.2、コマンドラインマッピング

Vimエディターを使用すると、独自のコマンドを定義できます。これらのコマンドは、他のコマンドラインモードコマンドと同じように実行します。コマンドを定義するには、次のように「:command」コマンドを使用します。

:コマンドDeleteFirst 1delete

さて、コマンド ":DeleteFirst"を実行すると、Vimは ":1delete"を実行し、最初の行を削除します。

注:ユーザー定義コマンドは大文字で始める必要があります。「:X」、「:Next」、「:Print」は使用できません。アンダースコアは使用できません!数字を使用できますが、これはお勧めできません。

その行を~/.vimrc:もちろん初期値を差し引いて)あなたの行に入れると、vimを起動するたびに定義されます。また、使用%:tして、編集中のファイルへの参照を作成します(書き込み! gcc %:tはに置き換えられます! gcc foo.c)。

1つのファイルまたは特定のファイルに対してのみ定義する場合は、オートコマンドが必要です


4
既存のコマンドを置き換える場合は、を使用する必要がありますcommand!
フィアット

14

VimはすでにMakefiles(:make)をサポートしています。ソース用に作成する場合、何をしたいかを指定できます。また、Vimはctagsを介して、コンパイル中に見つかったエラーを反復処理できます。


5

ユーザー定義のviエディターコマンドを追加します。

これにより、ユーザー:Legendが通常モードで入力したときに、カーソルの下にテキストブロックが追加されます。

ステップ1:この行を〜/ legend_header.txt`という名前のファイルに入れます

this text will be added

ステップ2:このコマンドを〜/ .vimrcファイルに追加します(ファイルが存在しない場合は作成します):

"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

ステップ3:変更を有効にするためにviを再起動します。できました。

試して

ステップ1:viで新しいファイルを開きます。viのデフォルトの「通常モード」になります。タイプ:Legend

ステップ2:~/legend_header.txtカーソルがある場所にコンテンツを追加する必要があります。


0

.vimrcでこのコマンドを使用して、cコードをコンパイルおよび実行します。

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

、しかしあなたのニーズのためにあなたは置くことができます:

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

execファイルの名前は、.c拡張子のないソース名になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.