Как определить карту ключей, которая переключается на одно из двух разделенных окон, а затем выполняет команду ненормального режима? - PullRequest
0 голосов
/ 08 июня 2019

Я работаю в двух разделенных окнах в vim. Я хотел бы определить карту ключей, которая переключится в другое окно, вставить содержимое какого-либо регистра в верхнюю часть файла в этом окне, а затем выполнить ненормальную команду для этого файла (например, отсортировать содержимое файл через вызов bash sort).

Я могу определить отображение, которое выполняет первые две задачи, но я не знаю, как добавить ненормальную команду в конец карты.

Команда, которую я использую для переключения в окно (ниже) и вставки последнего рывка в верхнюю часть файла, (в командном режиме):

:exe "norm ^Wbgg0P"

Теперь я могу объединить ненормальную команду до конца этой (без определения отображения), например, так (обратите внимание, что последняя команда ненормальная):

:exe "norm ^Wbgg0P" | exe 'norm gg0vG$' | '<,'>!sort

Но мой вопрос: как я могу определить карту ключей с помощью приведенной выше команды как "rhs"?

Я попробовал следующее, но, похоже, оно не работает (не было сообщения об ошибке, но карта, похоже, не определяется должным образом на основе поведения, когда я нажимаю <F5> впоследствии):

:map <F5> exe "norm ^Wbgg0P" | exe 'norm gg0vG$' | '<,'>!sort

1 Ответ

0 голосов
/ 08 июня 2019

Если вы хотите использовать команду ex в {rhs} карты, вы должны начать ее с : и завершить ее <cr>

Вы должны использовать norm!, ! предотвращать отображение.

Используйте noremap, если только вы не знаете, что {rhs} следует дополнительно сканировать для картирования.

% равно 1,$ в :h :range

Наконец, есть :h :sort, он сортирует все строки, если вы не задаете ему диапазон.

nnoremap <F5> <c-w>bgg0P:sort<cr>
...