Vim: как создать сопоставление клавиш для: редактировать и перейти к последней строке? - PullRequest
2 голосов
/ 02 ноября 2011

Я сопоставил ключ F2 , чтобы обновить (:edit) открытый в данный момент файл.Я использую это при просмотре файла журнала для обновления экрана, когда файл был обновлен снаружи (новые строки добавляются в конец файла журнала).

nnoremap <silent> <F2> :edit<CR>

Я хотел бы перейти к концуфайла после его обновления.

Как создать сопоставление клавиш, которое выполняет :edit и одновременно перейти к концу файла (ярлык G)?

Ответы [ 5 ]

5 голосов
/ 02 ноября 2011

Идиоматический способ позиционирования курсора в только что открытом (или вновь открытом) файле заключается в использовании аргумента + команды :edit (см. :help +cmd).Хотя общий синтаксис позволяет выполнять любую команду, существуют особые случаи перехода к определенной строке по тексту, соответствующему шаблону в этой строке (+/, за которым следует шаблон), или по номеру строки (+, за которым следуетчисло).Если число опущено в последней форме, предполагается, что это последняя строка файла.

Таким образом, чтобы перезагрузить текущий файл, поместив курсор на последнюю строку, можно использоватькоманда

:edit +$

или

:edit + %

Можно сократить эти команды, используя :e вместо :edit и оставив необязательный пробел перед аргументом +.

:e+$

или

:e+ %

Соответствующие отображения будут иметь вид

:nnoremap <silent> <F2> :edit +$<CR>

и

:nnoremap <silent> <F2> :edit + %<CR>

Обратите внимание, что это *Синтаксис аргумента 1029 * также действителен для открытия файла из командной строки, поэтому

$ vim + filename

также работает.

4 голосов
/ 02 ноября 2011

Вот что я бы использовал:

nnoremap <silent><F2> :edit<bar>$<CR>
2 голосов
/ 02 ноября 2011

Вы можете объединять команды в карту, используя <bar>.Это сопоставление делает то, что вы хотите:

:nnoremap <silent> <F2> :edit <bar> :normal! G<enter>

Важно использовать normal! вместо normal в сопоставлениях / сценариях, потому что предыдущий не будет принимать во внимание определенные пользователем сопоставления.Даже если в этом случае есть сопоставление для G, vim будет обрабатывать G так, как если бы оно вообще не отображалось.

2 голосов
/ 02 ноября 2011

Вы можете использовать :normal, чтобы использовать нормальный режим G движение :

:nnoremap <silent> <F2> :edit<CR>:norm! G<CR>

Возможно, лучше было бы использовать команду :$, чтобы перейти к концу файла:

:nnoremap <silent> <F2> :edit<CR>:$<CR>
0 голосов
/ 02 ноября 2011

В Vim '|' может использоваться для разделения команд, как и многие разновидности Linux / Unix. Для получения дополнительной информации об использовании бара проверить :help bar

Пример:

:edit | normal! G

Если вы хотите использовать это в сопоставлении клавиш, вы можете обнаружить, что ваши ~/.vimrc не любят карты, использующие | или \|. Для выполнения этой работы используйте эквивалент <bar>.

...