положение курсора после вставки в vi / vim

11

Одна вещь, которая всегда беспокоила меня в vi / vim :

Если я «дергаю» (то есть «копирую») некоторый текст, затем перехожу в другое место в файле и делаю «вставку», мой курсор остается в начале текста, который я только что вставил. Это отличается от того, что делают большинство современных редакторов, когда курсор помещается в конец вставленного мной текста.

Например, предположим, что «буфер копирования» содержит слово «удивительный», которое я хочу вставить после слова «an» во фразе:

This is an editor

Например, в gedit после вставки:

This is an awesome editor
                  ^ Cursor is here

В vi :

This is an awesome editor
           ^ Cursor is here

Могу ли я изменить vi, чтобы он действовал как (например) gedit в этом отношении?

JoelFan
источник
Что еще более странно, в списке с моей версией Vim: если вытянутый текст занимает более одной строки, то курсор остается в начале вставленного текста, в противном случае он остается в конце вставленного текста.
Алексей
извините, по крайней мере
Алексей

Ответы:

12

В vim используйте gpи gPвместо pи Pчтобы оставить курсор после вставленного текста. Если вы хотите поменять местами привязки, добавьте следующие строки .vimrc:

noremap p gp
noremap P gP
noremap gp p
noremap gP P

Странно, в vim pи Pоставить курсор на последний вставленный символ для символьного буфера даже в совместимом режиме.

Я не знаю, как это изменить в других версиях vi.

Жиль "ТАК - прекрати быть злым"
источник
1
Я думаю, что "vi" обычно действительно "vim" в большинстве дистрибутивов, верно?
JoelFan
@JoelFan: Может быть, большинство не встроенных дистрибутивов Linux. В другом месте нет. Если вы согласны с решением только для vim, не включайте vi в игру: 99% конфигурируемости vim не относятся к базовому vi.
Жиль "ТАК - перестань быть злым"
Что насчет "nvi"? Я запутался во всех различных ви. Я в основном заинтересован в Debian и Ubuntu
JoelFan
1
@JoelFan: nvi - довольно простой vi, он нацелен на совместимость с оригинальной реализацией и ничего более. Если вас интересуют только настольные установки или серверы, на которых вы можете легко устанавливать программы, вы можете предположить, что vim доступен. Знакомство с меньшими реализациями vi полезно только на заблокированных серверах и встроенных устройствах.
Жиль "ТАК - перестань быть злым"
1
Я использую "vi" в основном для серверов, где я могу установить вещи, да
JoelFan
0

Я почти уверен, что это так. Если вы вставляете, используя «p» ( строчный P), он должен вставляться после текущей позиции или строки. Однако, если вы вставляете, используя «P» (заглавная P), то он вставляется перед текущей позицией или строкой. Если вы хотите, чтобы курсор находился в конце вновь вставленного текста, попробуйте использовать «P» вместо «p».

Бьюсь об заклад, если вы вырыли достаточно глубоко, вы могли бы найти рецепт vim, чтобы вставить ваш .vimrc, который всегда будет перемещать курсор в конец вашей вставки, даже если вы используете «p».

SethG
источник
2
Pоставляет курсор в начале вставленного текста в vi (по крайней мере, в nvi и в POSIX).
Жиль "ТАК ... перестать быть злым"
p и P влияют на положение вставки относительно окружающего текста. они не влияют на положение самого курсора, который всегда находится в той же позиции относительно вставленного текста.
eMBee