17

我是 vim 用户并且有 nerdcommenter 插件,问题是当我<leader>c<space>用来注释代码(也是代码块)时,它在代码前面加上 # 前缀,但是 pep8 样式检查器抱怨我应该在后面有一个空格这 #

例如。

#string = 'abc'

但我希望它评论:

# string = 'abc'
4

3 回答 3

58

我发现将以下内容添加到 my.vimrc很有帮助。

let NERDSpaceDelims=1

这为所有语言添加了所需的额外空间(请参阅https://github.com/scrooloose/nerdcommenter/blob/master/doc/NERD_commenter.txt上的“NERDSpaceDelims” )

于 2014-09-25T15:17:21.187 回答
2

从第 67 行开始,分隔符似乎是硬编码在/plugin/NERD_commenter.vim 文件中的。对于要修改的文件类型,您应该能够将 '#' 更改为 '#'。

更新:我找到了一种更有意和更首选的方式来实现这一点。该插件有代码来处理它所谓的 CustomDelimiters。你可以在你的 vimrc 中使用类似的东西以一种更可见和可转移的方式完成与上面相同的事情:

let g:NERDCustomDelimiters = { 'py' : { 'left': '# ', 'leftAlt': '', 'rightAlt': '' }}
于 2014-08-13T06:41:16.897 回答
0

没有经过超级测试,但似乎有效。

编辑:我认为他们修复了插件,因此现在无需以下代码即可使用:let g:NERDSpaceDelims = 1

augroup NERDCommenter_whitespace_defender
   au!

   " NOTE: g:NERDSpaceDelims can only be set to [0,1] according to :h NERDSpaceDelims
   au BufEnter * if has_key(nerdcommenter#delimiterMap, &ft) |
                 \    let g:NERDSpaceDelims = (nerdcommenter#delimiterMap[&ft]['left'][-1:] =~ '\s') ? 0 : 1 |
                 \elseif &filetype ==? 'vim' |
                 \    let g:NERDSpaceDelims = 1 |
                 \endif
augroup END
于 2021-03-23T19:25:22.583 回答