簡體   English   中英

如何在Vim中注釋掉一段Python代碼

[英]How to comment out a block of Python code in Vim

我想知道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 (在左側插入模式,輸入要插入的字符。選擇將消失,但其中的所有行將在步驟4之后被修改。)

評論

第4步: Esc

<Esc>鍵

單向手動

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

您可以將以下映射添加到.vimrc

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

突出顯示您的區塊:

Shift+v

#來評論第一列中的行。

-#以相同的方式取消注釋。

使用以下選項突出顯示塊: Shift V.

用以下內容注釋所選的塊:norm i# (小寫i)

要取消注釋,請再次突出顯示您的塊,並取消注釋:norm ^x

:norm命令為每個選定的行執行操作。 注釋將在每行的開頭插入一個# ,取消注釋將刪除#

我通常掃出一個可視塊( <CV> ),然后搜索並替換第一個字符:

:'<,'>s/^/#

(進入命令模式並選擇一個可視塊自動在命令行上放置'<,'>)然后我可以通過清除相同的視覺塊取消注釋該塊,並且:

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

有一些很好的插件可以幫助評論/取消注釋行。 例如NERD評論者

我的.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

坦率地說,我為該鏈接使用了一個tcomment插件。 它幾乎可以處理所有語法。 它定義了很好的動作,使用它與python特有的一些文本塊匹配器使它成為一個強大的工具。

NERDcommenter是一個出色的評論插件,可以自動檢測多種文件類型及其相關的注釋字符。 使用Pathogen可以輕松安裝。

評論<leader>cc 取消注釋<leader>cu 並使用<leader>c<space>切換注釋。

(vim中的默認<leader>鍵是\\

無需插件或映射。 嘗試內置的“norm”命令,它可以在每個選定的行上執行您想要的任何操作。

添加#評論

1. shift V to visually select lines
2. :norm i#

刪除#Comments

1. visually select region as before
2. :norm x

或者,如果你的評論是縮進的,你可以這樣做:norm ^x

請注意,這些只是普通的vim命令,前面是“:norm”,以便在每一行上執行它們。

在這里的一個答案中使用“norm”命令的更詳細的答案

什么是在Vim中評論/取消注釋行的快速方法?

vim有很多評論插件 - 其中一些是多語言 - 而不僅僅是python。 如果您使用像Vundle這樣的插件管理器,那么您可以使用以下方法搜索它們(一旦安裝了Vundle):

:PluginSearch comment

你會得到一個結果窗口。 或者,您可以只搜索vim-scripts以獲得評論插件

按Ctrl K進行注釋(可視模式):

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

Ctrl U取消注釋(可視模式):

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

一個非常輕量級的插件 :vim-appmentary。

gcc評論一條線
gcgc取消注釋。 查看插件頁面了解更多信息。

v + k / j突出顯示塊然后gcc注釋該塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM