如何使用nerdcommenter在#之后提供额外的空间

时间:2014-08-13 06:25:18

标签: vim nerdcommenter

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

之后留一个空格

例如。

#string = 'abc'

但我希望它评论:

# string = 'abc'

3 个答案:

答案 0 :(得分:51)

我发现在我的.vimrc中添加以下信息很有帮助。

let NERDSpaceDelims=1

这为所有语言添加了所需的额外空间 (参见&#34; NERDSpaceDelims&#34;在https://github.com/scrooloose/nerdcommenter/blob/master/doc/NERD_commenter.txt

答案 1 :(得分:2)

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

更新: 我找到了一种更有意和更优选的方法来实现这一目标。该插件具有处理它所谓的CustomDelimiters的代码。您可以在vimrc中使用类似的内容,以更加明显和可转换的方式完成上述相同的操作:

let g:NERDCustomDelimiters = { 'py' : { 'left': '# ', 'leftAlt': '', 'rightAlt': '' }}

答案 2 :(得分:0)

未经超级测试但似乎有效。

" Add space after comments if NERDCommenter didn't.
augroup NERDCommenter_whitespace_defender
    au!

    " SOURCE: https://github.com/preservim/nerdcommenter/blob/master/plugin/NERD_commenter.vim#L58
    au BufEnter * if has_key(g:NERDDelimiterMap, &ft) |
                    \    let g:NERDSpaceDelims = (g:NERDDelimiterMap[&ft]['left'][-1:] =~ '\s') ? 0 : 1 |
                    \elseif &filetype ==? 'vim' |
                    \    let g:NERDSpaceDelims = 1 |
                    \endif
augroup END