CTRL-K в Vim дает неожиданные результаты - PullRequest
3 голосов
/ 04 января 2012

Привет! Я пытаюсь оптимизировать управление окнами в vim, сопоставляя ctrl k с ctrl + w , k так я могу просто нажать ctrl + k , чтобы переключиться в разделенное окно над тем, в котором я работаю (я делаю это также для h, j и l, но это только k это вызывает проблему).

Я добавил это в свой .vimrc

noremap <silent> <c-k> <C-W>k                                                                                                                
noremap <silent> <c-j> <C-W>j                                                                                                      
noremap <silent> <c-h> <C-W>h                                                                                                      
noremap <silent> <c-l> <C-W>l

Однако, если я нажму ctrl + k , произойдет что-то странное. Это меняется в зависимости от того, где я нахожусь в документе.

  • Если я нахожусь в верхней части документа с множеством строк под курсором, курсор переместится на несколько строк и столбцов в совершенно другое место.
  • Если я в нижней части документа, он создает множество пробелов от курсора и далее.

Я проверил, и удаление вышеуказанных строк вызывает прекращение симптомов. Я просто очень смущен тем, что происходит!

Некоторая информация: я использую двоичный файл vim, который поставляется с macvim через командную строку.

Любая помощь будет принята с благодарностью!

Спасибо!

Ответы [ 3 ]

4 голосов
/ 04 января 2012

Я не могу объяснить вторую проблему, но если вы вставили все напрямую из vimrc, то у вас есть много пробелов, которых там быть не должно.Это может объяснить первую проблему.Попробуйте запустить

:%sm/\s\+$

, затем сохраните и посмотрите, исчезла ли проблема.Если это так, используйте

:set list listchars=trail:-

, чтобы увидеть конечные пробелы, чтобы вы больше не столкнулись с этой проблемой.

2 голосов
/ 04 января 2012

Может быть, <C-k> уже сопоставлен с чем-то другим. Попробуйте :verbose map <C-k>.

0 голосов
/ 04 января 2012

Возможно, ваше отображение запускается в визуальном или операторном отображении, где <c-w>k имеет другое значение.

Вы можете попробовать это:

nnoremap <C-J> <C-W>j
nnoremap <C-K> <C-W>k
nnoremap <C-H> <C-W>h
nnoremap <C-L> <C-W>l

, который будет срабатывать только в обычном режиме.режим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...