По умолчанию клавиша End переводит меня к последнему символу в строке в Vim. Тем не менее, я set virtualedit=onemore в моем vimrc, и я действительно хочу, чтобы End перенес меня на один символ за последним.

Сначала я попробовал map <End> g$ но если строка выходит за пределы экрана, она переводит меня только на последний видимый символ.

Затем я попробовал map <End> $<Right> но если строка пуста, я перехожу на следующую строку вместо того, чтобы ничего не делать.

Есть идеи?

2 ответа2

0

Вам нужно запустить выражение, которое проверяет, есть ли в строке символы, и действует ли оно соответствующим образом. Попробуй это:

:noremap <expr> <end> (col('$')>1?"\<lt>end>\<lt>right>":'')

Увидеть:

:help :map-<expr>
0

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

   :map <End> $a<space><ESC>

Это переместится к последнему символу, затем добавляет пробел и затем перемещается к нему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .