TL; DR; wersja - Jak mogę cofnąć tekst wklejony z bufora kopii systemu operacyjnego bez cofania innego tekstu, który został wpisany od czasu przejścia do trybu wstawiania?
Dłuższy opis:
- Umieść coś w buforze kopii systemu operacyjnego (np. Zaznacz tekst i zrób
Command-c
na Macu) - Przejdź do trybu wstawiania w vim (
i
) - Wpisz coś (np.
asdf
) - Bez wychodzenia z trybu wstawiania, wklej z bufora kopiowania do vima (
Command-v
na Macu) - Trafienie
escape
- Spróbuj cofnąć wklej (
u
)
Cofa wszystko od ostatniego przejścia w tryb wstawiania. Innymi słowy, usuwa się asdf
cały tekst, który wkleiłem.
Jak po prostu cofnąć wklejony tekst? Czy muszę zawsze wychodzić z trybu wstawiania i wracać przed wklejeniem tekstu, aby mieć opcję cofnięcia wklejonego tekstu?
:h i_CTRL-G_u
(tzn. „Przerwij sekwencję cofania, rozpocznij nową zmianę” w trybie wstawiania).W MacVimie należy odznaczyć
Edit > Paste
element menu, aby zastąpić skrót, a następnie można ponownie przypisać Cmd-V (D-v
w języku MacVim) do odpowiedniego polecenia w każdym trybie. Dodałem to do mojego~/.gvimrc
i teraz wszystko działa cudownie:Jest
<C-g>u
to konieczne tylko w trybie wstawiania, aby naprawić historię cofania;noremap
icnoremap
są po prostu przywrócić domyślne zachowanie Wklej w normalnych i dowodzenia trybach.Dzięki Ingo Karkat za skierowanie mnie tutaj we właściwym kierunku.
źródło
W rzeczywistości rozwiązaniem jest przejście do trybu poleceń (np. Esc) I ponowne wejście w tryb wstawiania, ale działa to tylko wtedy, gdy piszę ręcznie, ale wydaje się, że „losowo” przestaje działać, jeśli go przetestuję
~/.vimrc
. Google wcale nie pomaga.Spędzam dużo czasu, próbując naprawić ten problem, i po prostu znajduję przyczynę w moim przypadku:
Nie mapuj klucza wklejania tak samo jak istniejącego klucza wklejania w terminalu
np Ctrl+Shift+Vbędzie wklejać w moim terminalu Konsole, ale jeśli przypisać ten klucz
<C-S-v>
w~/.vimrc
The „Cofnij do jednorazowego pasty zamiast wielu past” nie będzie działać.W moim przypadku muszę użyć
<C-v>
zamiast<C-S-v>
:Twoja sprawa może się różnić, ale chodzi o to samo: nie przypisuj tego samego konfliktu klucza wklejania z istniejącym kluczem emulatora terminala.
W 100% udowodniłem ten wniosek, ustawiając mój klucz wklejania terminala na Ctrl+Vi teraz
<C-v>
przestaję działać, ale<C-S-v>
działa.Zauważ też, że vim jest zbyt wrażliwy i dziwny. Rozumiem, że muszę użyć,
i
a następnie 2 prawych klawiszy ręcznie, aby działało we właściwej pozycji kursora, to znaczy, że muszę umieścići
i 2 prawe klawisze~/.vimrc
też. Twoja sprawa może się różnić, ale chodzi o to samo, upewnij się, że klucze + kolejność w ~ / .vimrc są w 100% zgodne z tym, co wpisujesz ręcznie.źródło