VIM 映射不完全重复
VIM mapping not fully repeating
为了快速注释代码行,我在我的 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 时,我在当前行的开头得到了###。
要进行计数,您将切换到使用 :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
为了快速注释代码行,我在我的 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 时,我在当前行的开头得到了###。
要进行计数,您将切换到使用 :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