pozycja kursora po wklejeniu w vi / vim

11

Jedna rzecz, która zawsze przeszkadzała mi w vi / vim :

Jeśli „szarpnę” (inaczej „skopiuję”) jakiś tekst, a następnie przejdę do innego miejsca w pliku i zrobię „wklej”, mój kursor pozostanie na początku właśnie wklejonego tekstu. Różni się to od tego, co robią większość współczesnych edytorów, czyli umieszczania kursora na końcu wklejonego tekstu.

Na przykład założenie, że „bufor kopii” zawiera słowo „niesamowite”, które chcę wkleić po słowie „an” w wyrażeniu:

This is an editor

W, na przykład gedit , po wklejeniu:

This is an awesome editor
                  ^ Cursor is here

W vi :

This is an awesome editor
           ^ Cursor is here

Czy mogę zmienić vi, aby zachowywał się pod tym względem jak (na przykład) gedit ?

JoelFan
źródło
Co jeszcze dziwniejsze, na liście z moją wersją Vima: jeśli szarpany tekst obejmuje więcej niż jeden wiersz, kursor pozostawia się na początku wklejonego tekstu, w przeciwnym razie pozostawia się go na końcu wklejonego tekstu.
Alexey,
przepraszam, przynajmniej
Alexey

Odpowiedzi:

12

W vimie użyj gpi gPzamiast pi, Paby opuścić kursor po wklejonym tekście. Jeśli chcesz zamienić wiązania, wstaw następujące linie w .vimrc:

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

O dziwo, w vim piP pozostaw kursor na ostatnim wklejonym znaku dla bufora znaków, nawet w trybie kompatybilnym.

Nie wiem jak to zmienić w innych wersjach vi.

Gilles „SO- przestań być zły”
źródło
1
Myślę, że „vi” jest zazwyczaj „vim” w większości dystrybucji, prawda?
JoelFan
@JoelFan: Może większość nie osadzonych dystrybucji Linuksa. Gdzie indziej nie. Jeśli nie masz nic przeciwko rozwiązaniu opartemu wyłącznie na vimie, nie wprowadzaj vi do gry: 99% możliwości konfiguracji vima nie jest w podstawowej vi.
Gilles „SO- przestań być zły”
Waht o „nvi”? Nie jestem pewien co do różnych vi. Najbardziej interesuje mnie debian i ubuntu
JoelFan
1
@JoelFan: nvi jest dość prostym vi, ma na celu zapewnienie zgodności z oryginalną implementacją i nic więcej. Jeśli interesują Cię tylko instalacje stacjonarne lub serwery, na których możesz łatwo instalować programy, możesz założyć, że vim jest dostępny. Znajomość mniejszych implementacji vi jest przydatna tylko na zablokowanych serwerach i urządzeniach wbudowanych.
Gilles „SO- przestań być zły”
1
Używam „vi” głównie na serwerach, na których mogę instalować
różne
0

Jestem prawie pewien, że jest to zgodne z projektem. Jeśli wkleisz za pomocą „p” (małe litery P), to wklei się po bieżącej pozycji lub linii. Jeśli jednak wkleisz za pomocą „P” (duże P), wklei się przed bieżącą pozycją lub linią. Jeśli chcesz, aby kursor znajdował się na końcu nowo wklejonego tekstu, spróbuj nawyk używania „P” zamiast „p”.

Założę się, że jeśli kopiesz wystarczająco głęboko, możesz znaleźć przepis vim, aby umieścić w swoim .vimrc, który zawsze przesuwałby kursor na koniec twojej pasty, nawet jeśli użyjesz „p”.

SethG
źródło
2
Ppozostawia kursor na początku wklejonego tekstu w vi (przynajmniej w nvi i na POSIX).
Gilles „SO- przestań być zły”
P i P wpływają na pozycję wstawki względem otaczającego tekstu. nie wpływają na pozycję samego kursora, który zawsze znajduje się w tej samej pozycji względem wstawionego tekstu.
eMBee