【问题标题】:VIM mapping not fully repeatingVIM 映射未完全重复
【发布时间】:2018-11-17 19:02:07
【问题描述】:

为了快速注释代码行,我在 vimrc 中添加了以下几行:

augroup cmnts
    autocmd FileType c, cpp, javascript nnoremap <buffer> <leader>c 
I//<esc>j
    autocmd FileType python nnoremap <buffer> <leader>c I#<esc>j
augroup END

我的期望是,当我用数字重复映射时,会注释该行数,但它只是多次添加注释字符。

例如在 Python 中,当我输入 Hc Hc Hc(H 是我的前导键)时,它会变成三行,但是当我输入 3Hc 时,我会在当前行的开头得到 ###。

【问题讨论】:

    标签: vim macros keymapping


    【解决方案1】:

    要进行计数,您将改用 :normal Ex 命令。对于 ruby​​/python,这将如下所示:

    nnoremap <leader>c :normal I# <CR>
    

    另外,vim 知道大多数语言和文件类型的注释字符串。因此,您不必明确告诉每种语言使用什么作为注释字符串,而是使用如下内容:

    nnoremap <leader>c :call CommentLine()<CR>
    function! CommentLine()
        let comment_character = split(&commentstring, '%s')
        exec 'normal I' . comment_character[0] . ' '
    endfunction
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 2014-12-30
      相关资源
      最近更新 更多