web-dev-qa-db-ja.com

Vimのいくつかの行にコメントするためのお気に入りの方法は何ですか?

Vimで一度に複数の行にコメントしなければならないことがよくあります。私が知っているメソッドは、TextMateが行をコメントアウトする方法ほど速くはありません。

それを行うためのあなたの好きな方法は何ですか?

私は現在使用しています:

方法1:

  • 行の最初の文字に移動し、ブロック単位のビジュアルモードを使用します(ctrl-v
  • コメントアウトするすべての行の最初の文字が選択されるまで上下に移動します
  • 使用する shift-i 次に、コメント文字を入力します(Rubyの場合は#
  • 使用する esc すべての行にコメント文字を挿入します

方法2:

  • 行ごとのビジュアルモードを使用してコメントアウトする必要がある行を選択します(shift-v
  • :と入力すると、:'<,'>に拡張できる:'<,'>s/^/#/プロンプトが表示されます。

方法3:

  • コメントアウトする最初の行に移動します
  • ブックマークを作成します。たとえば、mmと入力します。
  • コメントアウトする最後の行に移動します
  • タイプ:'m,.s/^/#/

私は方法1が一番好きですが、それでももっと良い方法があることを願っています。

31
dimus

コードをコメント化する最も一般的な方法を説明したと思いますが、Vimスクリプトを使用することにオープンである場合は、それらを見てください。

9
CMS

正規表現部分にキーマップを使用しますが、最初に同じ視覚的選択を行います。通常使用するもの:

vip

ビジュアルブロックを取得するには(段落のビジュアル選択)

その後、

\cc
\co

コメントの追加/削除(筋肉の記憶上の理由でcc、coが選択されました)

.vimrcで次のように定義されたマッピングを使用します。

vmap <leader>cc :s/^/#/<cr>
vmap <leader>co :s/^#//<cr>
3
zen

これはかなり古いですが、他の人と非常によく似ているが、ハイライト解除機能を追加するソリューションを追加したかっただけです。私の.vimrcファイルには次のマップがあります。

:vmap `c :s/^/\/*/<cr>gv:s/$/*\//<cr>:noh<cr>i
:vmap `r :s/^\/\*//<cr>gv:s/\*\/$/<cr>:noh<cr>i

注:古いcコードと互換性を持たせるために、/ *コード行* /スタイルのコメントを使用しています。 vimでは、行を強調表示し、 `cを押してコメントし、` rを押してコメントを削除します。

2
Josh Albert

私は通常、ステップをマクロに保存してから、好きな方法でマクロを呼び出します。

1
Sridhar Iyer

プラグインは行く方法です。それらは拡張可能であり、これまでに使用するより多くのファイルタイプをすでにサポートしており、行のコメント状態を自動的に切り替えることができます(つまり、1つで十分な場合に2つのショートカットを使用する必要はありません)。

CMSによって提供されたリスト を参照してください。

1
Luc Hermitte

ANSI Cの1行コメント用の一連のコマンドを探していましたが、SOでほとんどの回答を試しました。

それらはどれも私のニーズに合わず、現時点では古い7.2バージョンのVimを使用する必要があり、適切なプラグインを簡単にダウンロードできないため、次の便利なマッピングを思いつきました。

:nnoremap <leader>c :exe "normal mqI/* "<esc> :exe "normal A */"<esc> :exe "normal 'q"<cr>
:nnoremap <leader>r ^xxx$xxx^

<leader>c行をコメントアウトし、その行の先頭に戻ります。

<leader>rは、現在の行の最初と最後からコメントを削除します。

1