特定のコード行をインデントできるようにするために、Vimにキーマッピングがあるかどうか疑問に思いました(それらの行がビジュアルモードで選択されているか、またはn現在のカーソル位置の上下の行)。
だから基本的には次のものを変換するもの
def my_fun(x, y):
return x + y
に
#def my_fun(x, y):
# return x + y
#
または"""
を使用して、関連する行をコメントアウトします。理想的には、特定の行がコメント化されている場合は、同じキーマッピングで行のコメントを解除したいと思います。
ステップ1:コメントする最初の行の最初の列に移動します。
ステップ2:を押します: Ctrl+v そしてコメントしたい行を選択します:
ステップ3: Shift-I
#space (左挿入モードに入り、charsと入力して挿入します。選択は消えますが、その中のすべての行はステップ4の後に変更されます。)
ステップ4: Esc
手動で片道
:set number
:10,12s/^/#
次のマッピングを.vimrcに追加できます
vnoremap <silent> # :s/^/#/<cr>:noh<cr>
vnoremap <silent> -# :s/^#//<cr>:noh<cr>
ブロックをハイライトします:
Shift+v
#
は、最初の列の行をコメント化します。
-#
は同じ方法でコメントを外します。
ブロックをハイライトします: ShiftV
選択したブロックをコメントアウトします::norm i#
(小文字のi)
コメントを解除するには、ブロックを再度ハイライトし、次のコメントを解除します::norm ^x
:norm
コマンドは、選択されたすべての行に対してアクションを実行します。コメントはすべての行の先頭に#
を挿入し、コメント解除するとその#
が削除されます。
通常、ビジュアルブロック(<C-V>
)を一掃し、最初の文字を検索して次の文字列に置き換えます。
:'<,'>s/^/#
(ビジュアルブロックを選択してコマンドモードに入ると、コマンドラインに「<、」>が自動的に配置されます)同じビジュアルブロックをスイープしてブロックのコメントを外すことができます。
:'<,'>s/^#//
コメント/コメント解除行を支援するいくつかの良いプラグインがあります。たとえば、 The NERD Commenter 。
.vimrc
に次の行があります:
" comment line, selection with Ctrl-N,Ctrl-N
au BufEnter *.py nnoremap <C-N><C-N> mn:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR>:noh<CR>`n
au BufEnter *.py inoremap <C-N><C-N> <C-O>mn<C-O>:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR><C-O>:noh<CR><C-O>`n
au BufEnter *.py vnoremap <C-N><C-N> mn:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR>:noh<CR>gv`n
" uncomment line, selection with Ctrl-N,N
au BufEnter *.py nnoremap <C-N>n mn:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR>:s/^#$//ge<CR>:noh<CR>`n
au BufEnter *.py inoremap <C-N>n <C-O>mn<C-O>:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR><C-O>:s/^#$//ge<CR><C-O>:noh<CR><C-O>`n
au BufEnter *.py vnoremap <C-N>n mn:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR>gv:s/#\n/\r/ge<CR>:noh<CR>gv`n
ショートカットは、#
(#の後にスペースがある)で始まる限り、カーソル位置とコメントを保持します。例えば:
# variable x
x = 0
コメントした後:
# variable x
#x = 0
コメント解除後:
# variable x
x = 0
NERDcommenter は、多くのファイルタイプとそれに関連するコメント文字を自動的に検出するコメント用の優れたプラグインです。 Pathogen を使用すると、途方もなく簡単にインストールできます。
<leader>cc
でコメントします。 <leader>cu
のコメントを外します。そして、<leader>c<space>
でコメントを切り替えます。
(vimのデフォルトの<leader>
キーは\
です)
率直に言って、そのためにtcommentプラグインを使用します link 。ほとんどすべての構文を処理できます。ナイスムーブメントを定義し、pythonに固有のいくつかのテキストブロックマッチャーで使用すると、強力なツールになります。
プラグインやマッピングは必要ありません。組み込みの「norm」コマンドを試してください。これは、選択したすべての行で必要なものを文字通り実行します。
#コメントを追加
1. shift V to visually select lines
2. :norm i#
#コメントを削除
1. visually select region as before
2. :norm x
または、コメントがインデントされている場合は、:norm ^x
を実行できます
これらは、各行で実行するために「:norm」が前に付いた単なる普通のvimコマンドであることに注意してください。
ここでの回答の1つで「norm」コマンドを使用するためのより詳細な回答
Vimには多くのコメントプラグインがあります-その多くは多言語-Pythonだけではありません。 Vundle のようなプラグインマネージャーを使用している場合、(Vundleをインストールしたら)以下を使用してそれらを検索できます:
:PluginSearch comment
そして、結果のウィンドウが表示されます。または、単に vim-scriptsでコメントプラグインを検索 にすることもできます。
CtrlK コメント用(ビジュアルモード):
vnoremap <silent> <C-k> :s#^#\##<cr>:noh<cr>
CtrlU コメント解除(ビジュアルモード):
vnoremap <silent> <C-u> :s#^\###<cr>:noh<cr>
非常に最小限の軽量 プラグイン :vim-commentary。
gcc 行をコメントする
gcgc コメントを外します。詳細については、プラグインのページをご覧ください。
v+k/j 次にブロックをハイライトします gcc そのブロックにコメントします。