Mój kursor znajduje się w środku akapitu, gdy nagle postanawiam skopiować ten akapit:
Więc piszę, vip
aby wybrać akapit wizualnie:
Teraz nacisnę, cmd+C
aby skopiować do schowka (może się to różnić w twoim systemie, ale nie powinno to być istotne w przypadku głównego pytania mojego postu), co pozostawia mój kursor na początku akapitu:
zamiast pożądanej pozycji, czyli tam, gdzie była, kiedy zaczynałem.
Zauważ, że ten sam problem występuje, gdy szarpanie zaznaczenia nie jest wizualnie yip
.
Chciałbym, aby domyślnym zachowaniem było „powrót do pierwotnej pozycji kursora” po wykonaniu takich czynności wyboru / kopiowania. Czy istnieje konfiguracja, która to umożliwia?
vimscript
vimrc
cursor-movement
Jonasz
źródło
źródło
mm "+yap `m
(Zauważ, że"+y
szarpnie się do twojego schowka systemowego)Odpowiedzi:
Możliwym rozwiązaniem jest użycie skoków:
Przed szarpnięciem lub wizualnym wyborem możesz ustawić nowy skok, do którego będziesz mieć dostęp po przesunięciu kursora. Aby to zrobić, użyj m`.
Następnie po przesunięciu kursora z powodu zaciągnięcia użyj przycisku, ctrloaby przejść z powrotem na listę skoków. Możesz także zobaczyć listę dostępnych skoków za pomocą
:jumps
i nawigować po tej liście za pomocą ctrloictrliPodsumowując, Twój przepływ pracy byłby następujący:
Używając m` ustawia znak, możesz przeskoczyć do niego za pomocą ``zamiast ctrlo.
Możesz przeczytać
:h mark-motions
i:h :jumps
uzyskać więcej informacji.źródło
<leader>'
aby być`
, co działa całkiem dobrze dla mnie. (Używam<space>
jako mojego lidera.):h 'langmap'
. Nie twierdzę, że jest to idealne rozwiązanie, ale może być dla Ciebie interesujące.noremap ' `
noremap ` '
... To jest w moim vimrc i działa świetnieMożesz uniknąć poruszania kursorem:
Zobacz
:help range
,:help mark-motions
oraz:help :y
.źródło
:nmap <key> :'{,'}y<CR>
powinno wystarczyć.Jeśli właśnie go edytowałeś, najprostszym rozwiązaniem jest g ;wpisanie kursora na ostatniej pozycji edycji.
A jeśli nie edytowałeś akapitu, możesz wykonać prostą operację zastępowania tym samym znakiem, na którym się znajdujesz (np. Jesteś włączony
h
, piszeszrh
), aby wywołać „zdarzenie” edycji bez faktycznej edycji.źródło
'.
, ale bardzo przydatne może być przechodzenie między ostatnimi zmianami za pomocąg;
ig,
.g;
która zabiera Cię również do właściwej pozycji kolumny?Plugin vim-easyclip ma ustawienie to:
Trochę dla mnie jest instalacja całej wtyczki tylko dla tej małej funkcji, więc wolę używać znaków zgodnie z moim komentarzem.
źródło
Rozszerzając odpowiedź Al.G., możemy przejść do wymaganej lokalizacji bez edycji. Rozwiązaniem jest gi. Dotrzemy do tej samej pozycji, w której wcześniej byliśmy w ostatnim trybie wstawiania.
Jeśli chcemy przejść do początku lub końca podświetlonego tekstu.
Gdy pociągniesz podświetlony tekst, powrócisz również do trybu normalnego i możesz zachować pierwotną pozycję kursora.
Powrót do pierwotnej lokalizacji po wyrwaniu:
gv aby uzyskać poprzednią atrakcję.
Teraz możesz przełączać się między pierwotną i bieżącą lokalizacją w trybie wizualnym za pomocą klawisza
olub O.
Numer linii i kolumny linii statusu pomoże poznać dokładną pozycję kursora.
Dokumentacja:
źródło
vip
gdy kursor zaczyna się w środku akapitu.vip
sprawdzenia mojej edycji.