Отображение VIM не полностью повторяется - PullRequest
0 голосов
/ 17 ноября 2018

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

1 Ответ

0 голосов
/ 18 ноября 2018

Для подсчета вы переключитесь на команду :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
...