我想知道Vim中是否有任何键映射允许我缩进某些代码行(是否在可视模式下选择了这些行,或者当前光标位置上方/下方的 n 行)。
所以基本上可以转换以下内容
def my_fun(x, y):
return x + y
到
#def my_fun(x, y):
# return x + y
我可以使用#
或"""
来评论相关的行。理想情况下,如果给定的行已被注释掉,我也希望使用相同的键映射来取消注释行。
答案 0 :(得分:395)
第1步:转到要评论的第一行的第一列。
第2步:按: Ctrl + v 并选择要评论的行:
第3步: Shift - I
# space (在左侧插入模式下,键入要插入的字符。选择将消失,但其中的所有行将在步骤4后修改。)
第4步: Esc
答案 1 :(得分:65)
手动单向
:set number
:10,12s/^/#
答案 2 :(得分:45)
您可以将以下映射添加到.vimrc
vnoremap <silent> # :s/^/#/<cr>:noh<cr>
vnoremap <silent> -# :s/^#//<cr>:noh<cr>
使用以下内容突出显示您的区块:
Shift+v
#
来评论第一栏中的行。
-#
以同样的方式取消注释。
答案 3 :(得分:24)
突出显示您的区块: Shift V
使用以下选项对所选区块进行注释::norm i#
(小写i)
要取消注释,请再次突出显示您的阻止,并取消注释::norm ^x
:norm
命令对每个选定的行执行操作。评论会在每行的开头插入#
,取消评论会删除#
。
答案 4 :(得分:21)
我通常扫出一个视觉区块(<C-V>
),然后搜索并替换第一个字符:
:'<,'>s/^/#
(进入命令模式并自动选择一个视觉块,在命令行上放置'&lt;,'&gt;)然后,我可以通过清除相同的视觉块取消注释该块,并且:
:'<,'>s/^#//
答案 5 :(得分:19)
有一些很好的插件可以帮助评论/取消注释行。例如The NERD Commenter。
答案 6 :(得分:8)
我的.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
答案 7 :(得分:5)
坦率地说,我为link使用了一个tcomment插件。它几乎可以处理所有语法。它定义了很好的动作,使用它与python特有的一些文本块匹配器使它成为一个强大的工具。
答案 8 :(得分:5)
NERDcommenter是一个出色的评论插件,可自动检测多种文件类型及其相关的评论字符。使用Pathogen可以轻松安装。
评论<leader>cc
。取消注释<leader>cu
。并使用<leader>c<space>
切换评论。
(vim中的默认<leader>
键为\
)
答案 9 :(得分:2)
无需插件或映射。尝试使用内置的“norm”命令,它可以在每个选定的行上执行任何您想要的任何操作。
添加#评论
1. shift V to visually select lines
2. :norm i#
删除#个评论
1. visually select region as before
2. :norm x
或者如果你的评论是缩进的,你可以:norm ^x
请注意,这些只是普通的vim命令,前面是“:norm”,以便在每一行上执行它们。
在这里的答案中使用“norm”命令的更详细的答案
答案 10 :(得分:1)
vim有很多评论插件 - 其中一些是多语言 - 而不仅仅是python。如果您使用像Vundle这样的插件管理器,那么您可以使用例如来搜索它们(一旦安装了Vundle):
:PluginSearch comment
你会得到一个结果窗口。或者,你可以search vim-scripts for comment plugins。
答案 11 :(得分:1)
Ctrl K 进行评论(可视模式):
Model.group("DATE_FORMAT(date, '%Y%m%d')").sum(:value)
Ctrl U 取消注释(可视模式):
vnoremap <silent> <C-k> :s#^#\##<cr>:noh<cr>
答案 12 :(得分:1)