Vim复制线并注释掉旧线

mmt*_*mtj 4 vim

我试图在这里问到同样的事情,但是在Vim.

重复一行并注释掉旧的

基本上我想要拉线,注释旧的,粘贴新的,并将光标保持在新行的开头并以插入模式结束.

例如:

def func (param)
Run Code Online (Sandbox Code Playgroud)

将改为:

//def func (param)
def func (param)
Run Code Online (Sandbox Code Playgroud)

我为它录制了一个宏,把它放入.vimrc,我正在使用它@y

" copy-and-comment-line macro
" yank line, comment out original line, move cursor at the begining
" of copied line and end in insert mode
let @y='yypkui//kdklkl'
Run Code Online (Sandbox Code Playgroud)

(我不确定它会对你有用~@,因为它包含不可打印的字符,代码块不会显示)

宏工作,但是在vim中是否有内置命令可以实现同样的功能?

Ken*_*ent 6

这个映射应该为你做:

nnoremap YOURKEY YI//<esc>p
Run Code Online (Sandbox Code Playgroud)
  • 光标将位于粘贴的行上.
  • YOURKEY你喜欢的钥匙(或钥匙)代替
  • 请注意,此答案仅适用于您的示例//样式注释.如果您希望它是通用解决方案,则必须构建一个函数,在此函数中检查文件类型,并确定应使用哪种注释样式.到目前为止还没有好的内置解决方案,但您可以查看NERDCommentervim-commentary插件以了解它们是如何实现的,或者您可以安装其中一个(或类似的插件)并在映射中调用它的功能.