web-dev-qa-db-ja.com

VimでPythonコードのブロックをコメントアウトする方法

特定のコード行をインデントできるようにするために、Vimにキーマッピングがあるかどうか疑問に思いました(それらの行がビジュアルモードで選択されているか、またはn現在のカーソル位置の上下の行)。

だから基本的には次のものを変換するもの

def my_fun(x, y):
    return x + y

#def my_fun(x, y):
#    return x + y

#または"""を使用して、関連する行をコメントアウトします。理想的には、特定の行がコメント化されている場合は、同じキーマッピングで行のコメントを解除したいと思います。

181
Rishabh Manocha

ステップ1:コメントする最初の行の最初の列に移動します。

Initial State

ステップ2:を押します: Ctrl+v そしてコメントしたい行を選択します:

Select lines

ステップ3: Shift-I#space (左挿入モードに入り、charsと入力して挿入します。選択は消えますが、その中のすべての行はステップ4の後に変更されます。)

Comment

ステップ4: Esc

<Esc>

397
theosp

手動で片道

:set number
:10,12s/^/#
66
ghostdog74

次のマッピングを.vimrcに追加できます

vnoremap <silent> # :s/^/#/<cr>:noh<cr>
vnoremap <silent> -# :s/^#//<cr>:noh<cr>

ブロックをハイライトします:

Shift+v

#は、最初の列の行をコメント化します。

-#は同じ方法でコメントを外します。

46
cdated

ブロックをハイライトします: ShiftV

選択したブロックをコメントアウトします::norm i#(小文字のi)

コメントを解除するには、ブロックを再度ハイライトし、次のコメントを解除します::norm ^x

:normコマンドは、選択されたすべての行に対してアクションを実行します。コメントはすべての行の先頭に#を挿入し、コメント解除するとその#が削除されます。

24
user2437225

通常、ビジュアルブロック(<C-V>)を一掃し、最初の文字を検索して次の文字列に置き換えます。

:'<,'>s/^/#

(ビジュアルブロックを選択してコマンドモードに入ると、コマンドラインに「<、」>が自動的に配置されます)同じビジュアルブロックをスイープしてブロックのコメントを外すことができます。

:'<,'>s/^#//
21
comand

コメント/コメント解除行を支援するいくつかの良いプラグインがあります。たとえば、 The NERD Commenter

19
Geoff Reedy

.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
8
Lukas Cenovsky

NERDcommenter は、多くのファイルタイプとそれに関連するコメント文字を自動的に検出するコメント用の優れたプラグインです。 Pathogen を使用すると、途方もなく簡単にインストールできます。

<leader>ccでコメントします。 <leader>cuのコメントを外します。そして、<leader>c<space>でコメントを切り替えます。

(vimのデフォルトの<leader>キーは\です)

5
Abid H. Mujtaba

率直に言って、そのためにtcommentプラグインを使用します link 。ほとんどすべての構文を処理できます。ナイスムーブメントを定義し、pythonに固有のいくつかのテキストブロックマッチャーで使用すると、強力なツールになります。

5
Darek

プラグインやマッピングは必要ありません。組み込みの「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で行をコメント/コメント解除する簡単な方法は何ですか?

2
Magnus

Vimには多くのコメントプラグインがあります-その多くは多言語-Pythonだけではありません。 Vundle のようなプラグインマネージャーを使用している場合、(Vundleをインストールしたら)以下を使用してそれらを検索できます:

:PluginSearch comment

そして、結果のウィンドウが表示されます。または、単に vim-scriptsでコメントプラグインを検索 にすることもできます。

1
Pierz

CtrlK コメント用(ビジュアルモード):

vnoremap <silent> <C-k> :s#^#\##<cr>:noh<cr>

CtrlU コメント解除(ビジュアルモード):

vnoremap <silent> <C-u> :s#^\###<cr>:noh<cr>
1
Pradip Das

非常に最小限の軽量 プラグイン :vim-commentary。

gcc 行をコメントする
gcgc コメントを外します。詳細については、プラグインのページをご覧ください。

v+k/j 次にブロックをハイライトします gcc そのブロックにコメントします。

1
yantaq