[英]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
單向手動
: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有很多評論插件 - 其中一些是多語言 - 而不僅僅是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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.