web-dev-qa-db-ja.com

Vimエディタでコマンドを追加するにはどうすればいいですか?

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

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

":debug"とタイプすれば上記のコマンドが実行されるようにVimにカスタムコマンドを追加できますか?どうやってそれを達成できますか?

82

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

Vimエディタはあなたがあなた自身のコマンドを定義することを可能にします。これらのコマンドは、他のコマンドラインモードコマンドと同じように実行します。コマンドを定義するには、次のように ":command"コマンドを使用します。

:コマンドDeleteFirst 1delete

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

注:ユーザー定義コマンドは大文字で始めなければなりません。 ":X"、 ":Next"、 ":Print"は使用できません。アンダースコアは使用できません。数字を使用できますが、これはお勧めできません。

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

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

98
James Polley

Vimはすでに Makefile (:make)をサポートしています。あなたがあなたのソースのためにそれを作成するなら、あなたはそれであなたがやりたいことを指定することができます。また、ctagsを通して、Vimはコンパイル中に発見されたエラーを繰り返すことができます。

14
Jeremy L

ユーザ定義の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の内容は、カーソルがある場所に追加する必要があります。

5
Eric Leschinski

Cコードをコンパイルして実行するために、私の.vimrcでこのコマンドを使用します。

: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のないソース名になることを確認できます。

0
Juan Miguel AR