Отображение VIM повторяется не полностью

Я добавил следующие строки в свой 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, я получаю ### в начале моей текущей строки.


person Joe    schedule 17.11.2018    source источник


Ответы (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
person Harish    schedule 18.11.2018