[英]Is it possible to comment/uncomment a line in vim with “ctrl+/”
新手在这里。 我在寻找一个更简单的方法VIM
评论/取消注释(只有一行评论,这是最常见的评论型) C++
代码只使用一个快捷方式,如Ctrl + /(不打算视觉模式)。 是否可以通过映射而不使用nerd之类的第三方插件来实现这种效果? 谢谢
我通过以下映射实现( 领导者 /要评论, 领导者 ?到不评论)
map <leader>/ :s/^\(\s*\)/\1\/\/ <CR>:noh<CR>
map <leader>? :s/^\(\s*\)\/\/\(\s*\)/\1<CR>:noh<CR>
^\\(\\s*\\)
从行的开头到第一个非空白字符匹配。 \\1\\/\\/
用相同的空格替换捕获的空格( \\1
),然后//
其余的<CR>:noh<CR>
将关闭搜索模式突出显示,以免在缓冲区中保留所有突出显示的空白。
我仅将它们用作普通模式映射,而不用作插入模式。 在正常模式下(使用mapleader为,
我可以执行4 , /等操作来注释下4行,但是例如,注释内部{}
中的所有内容并不足够聪明。
它不像NERDCommenter产生的那样整洁。 例如,它将变为:
if (thing) {
doSomething();
}
变成这个:
// if (thing) {
// doSomething();
// }
当这样的事情将是可取的。
// if (thing) {
// doSomething();
// }
我通过autocmd
以//
常用的注释语言应用映射:
autocmd FileType c,cpp,php,javascript map <leader>/ :s/^\(\s*\)/\1\/\/ <CR>:noh<CR>
autocmd FileType c,cpp,php,javascript map <leader>? :s/^\(\s*\)\/\/\(\s*\)/\1<CR>:noh<CR>
他们不使用<C-/>
作为键绑定,但是要获得完整的解决方案,请参见tcomment.vim或vim-commentary
我使用下面的quick'n'dirty解决方案,它使//
根据文件类型注释掉一行,但是它有一些缺陷(例如,无法通过.
重复):
" make // comment out a line
au FileType * nmap <buffer> // 0i# <Esc>
au FileType vim nmap <buffer> // I" <Esc>
au FileType sh,zsh,csh,tcsh,make nmap <buffer> // I# <Esc>
au FileType html,xhtml,xml,xslt,dtd,xsd nmap <buffer> // I<!-- <Esc>A --><Esc>
au FileType sql,haskell nmap <buffer> // I-- <Esc>
au FileType c nmap <buffer> // I/* <Esc>A */<Esc>
au FileType cpp nmap <buffer> // I// <Esc>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.