1

ここの初心者。+のようなショートカットを1 つだけ使用して (ビジュアル モードに移動せずに)、コードVIMのコメント/コメント解除 (最も頻繁なコメント タイプである 1 行のコメントのみ) を行う簡単な方法を探しています。nerd などのサードパーティ製プラグインを使用せずにマッピングすることで、この効果を実現することは可能ですか? ありがとうC++Ctrl/

4

2 に答える 2

5

次のマッピングでそれを達成します(leader/コメントする、コメントleader?を外す)

map <leader>/ :s/^\(\s*\)/\1\/\/ <CR>:noh<CR>
map <leader>? :s/^\(\s*\)\/\/\(\s*\)/\1<CR>:noh<CR>
  • ^\(\s*\)行頭から最初の非空白文字まで一致します。
  • \1\/\/キャプチャされた空白 ( \1) を同じ空白に置き換え、その後に//

残りのもの<CR>:noh<CR>は検索パターンの強調表示をオフにして、バッファ内で強調表示されたすべての先頭の空白を残さないようにします。

挿入モードではなく、通常モードのマッピングとしてのみ使用します。通常モード (mapleader を使用すると、次の 4 行にコメントを付けるなどの,ことができますが、たとえば4,/、内部のすべてにコメントを付けるほどスマートではありません。{}

NERDCommenter のようなものほどきれいではありません。たとえば、次のようになります。

if (thing) {
  doSomething();
}

これに:

// if (thing) {
  // doSomething();
// }

このようなものが望ましい場合。

// if (thing) {
//   doSomething();
// }

autocmd頻繁に使用する//コメント言語でマッピングを適用します。

autocmd FileType c,cpp,php,javascript map <leader>/ :s/^\(\s*\)/\1\/\/ <CR>:noh<CR>
autocmd FileType c,cpp,php,javascript map <leader>? :s/^\(\s*\)\/\/\(\s*\)/\1<CR>:noh<CR>
于 2013-11-13T17:04:08.973 に答える