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


11

Одна річ, яка мене завжди турбувала в vi / vim :

Якщо я "янька" (він же "копіює") якийсь текст, а потім переміщуюсь до іншого місця у файлі і роблю "вставити", мій курсор залишається на початку тексту, який я щойно вставив. Це відрізняється від того, що роблять більшість сучасних редакторів, який ставиться курсором у кінці тексту, який я вставив.

Наприклад, якщо припустити, що "буфер копіювання" містить слово "awesome", яке я хочу вставити після слова "a" у фразу:

This is an editor

У, наприклад, gedit після пасти:

This is an awesome editor
                  ^ Cursor is here

In vi :

This is an awesome editor
           ^ Cursor is here

Чи можу я змінити vi, щоб діяти як (наприклад) gedit в цьому плані?


Що ще дивніше, у списку з моєю версією Vim: якщо текст, який закручується, охоплює більше одного рядка, то курсор залишається на початку вставленого тексту, інакше він залишається в кінці вставленого тексту.
Олексій

вибачте, принаймні
Олексій

Відповіді:


12

In vim, використовуйте gpта gPзамість, pа Pтакож залишайте курсор після вставленого тексту. Якщо ви хочете поміняти місцями прив’язки, поставте у своєму рядку такі рядки .vimrc:

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

Як не дивно, in vim, pі Pзалиште курсор на останньому вставленому символі для буфера символів, навіть у сумісному режимі.

Я не знаю, як це змінити в інших версіях vi.


1
Я думаю, що "vi" зазвичай справді "vim" у більшості дистрибутивів, правда?
JoelFan

@JoelFan: Можливо, більшість невбудованих дистрибутивів Linux. В іншому місці немає. Якщо у вас все з рішенням, призначеним лише для vim, не вводьте vi в гру: 99% налаштування vim не в базі vi.
Жил 'ТАК - перестань бути злим'

Ви про "nvi"? Я розгублений у всіх різних видах життя. Мене найбільше цікавлять debian та ubuntu
JoelFan

1
@JoelFan: nvi - це доволі основна версія, яка спрямована на сумісність із оригінальною реалізацією та більше нічого. Якщо вас цікавлять лише настільні установки або сервери, на яких ви можете легко встановлювати програми, ви можете припустити, що vim доступний. Ознайомлення з меншими реалізаціями vi корисно лише на заблокованих серверах та вбудованих пристроях.
Жил 'ТАК - перестань бути злим'

1
Я використовую "vi" здебільшого для серверів, де я можу встановлювати речі, так
JoelFan

0

Я майже впевнений, що це дизайн. Якщо ви вставляєте, використовуючи "p" (нижній регістр P), його слід вставити після поточного положення чи рядка. Однак якщо ви вставляєте, використовуючи "P" (з великої літери P), він вставляється перед поточним положенням або рядком. Якщо вам потрібна поведінка, щоб курсор знаходився в кінці нещодавно вставленого тексту, спробуйте скористатися звичкою використовувати "P" замість "p".

Б'юсь об заклад, якщо ви викопали досить глибоко, ви можете знайти рецепт vim, який слід помістити у свій .vimrc, який завжди переміщуватиме курсор до кінця вашої пасти, навіть якщо ви використовуєте "p".


2
Pзалишає курсор на початку вставленого тексту in vi (принаймні, у nvi та на POSIX).
Жил 'ТАК - перестань бути злим'

p і P впливають на положення вставки стосовно навколишнього тексту. вони не впливають на положення самого курсору, яке завжди знаходиться в одному положенні відносно вставленого тексту.
eMBee
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.