картографированиек чему-то в Vim - PullRequest
6 голосов
/ 01 февраля 2012

Я сопоставил Ctrl - j , чтобы перейти в буфер ниже.Однако он был жестко сопоставлен с чем-то другим, поэтому мне пришлось написать первую строку ниже, чтобы вообще сделать его сопоставимым.

Сценарий ниже работает отлично, за исключением случаев, когда я пишу .sh файлы.У меня установлен плагин поддержки bash.

let g:C_Ctrl_j = 'off'
map <C-j> <C-w>j

РЕДАКТИРОВАТЬ: Я только что обнаружил, что проблема в поддержке bash.Bash-support отображает Ctrl - j для перехода по вставке (или что-то в этом роде), которая перемещает курсор в предопределенную точку и переходит в режим вставки.Я предполагаю, что изменение в скрипте bash-support сделает эту работу, хотя мне не нравится возиться с этими файлами.

EDIT2: let g: C_Ctrl_j = 'off' фактически включает функцию вставки перехода плагина csupport.

Ответы [ 4 ]

8 голосов
/ 02 февраля 2012

Согласно документу bash-support.vim :

Первоначальное значение Ctrl-j - «переместить [n] строк вниз» (см. | CTRL-j |). Если вы привыкли использовать значение по умолчанию и вам не нравятся эти цели прыжка, вы можете выключить их. Поместите следующую строку в файл '.vimrc':

let g: BASH_Ctrl_j = 'off'

Так что вы должны поместить let g:BASH_Ctrl_j = 'off' в свой vimrc.

Кроме того, используйте nnoremap <C-j> <C-w>j вместо map <C-j> <C-w>j в вашем vimrc. Последний определяет сопоставления клавиш в обычном, визуальном и операторском режимах ожидания. Соответствия клавиш также рекурсивно расширяются. Это может вызвать проблемы, когда вы определяете больше сопоставлений клавиш.

6 голосов
/ 01 февраля 2012

Ctrl - j (0x0A) - это специальный символ, перевод строки .

Существует высокая вероятность, что нажатие этой клавишиis not не прибывает в Vim как Ctrl - j (0x0A).

В Vim в окне Terminal.app на моем Mac введите Ctrl - v Ctrl - j отображает ^@, (0x00 или NULL).В то время как Ctrl - v Ctrl - g и Ctrl - v Ctrl - k display ^G и ^K, соответственно.

Я бы предложил использовать другое отображение (или просто научиться использовать Ctrl - ш j ).

2 голосов
/ 19 июля 2015

У меня была такая же проблема, но по другой причине. VIM-LaTeX использует плагин imaps.vim , который также переназначает некоторые клавиши , включая Ctrl - j . Для меня сработало установить autocmd в моем .vimrc:

augroup vimrc
    au!
    au VimEnter * unmap <C-j>
    au VimEnter * noremap <C-j> <C-w>j
augroup END

Триггер VimEnter гарантирует, что отображение будет выполнено после запуска vim, и плагины загружены (если я правильно понимаю), поэтому он перезаписывает карты плагина imaps.vim. Распечатка не нужна, но не может повредить.

1 голос
/ 01 февраля 2012

Попробуйте нерекурсивные отображения,

nnoremap <C-j> <C-w>j

должно это сделать.

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