Jaki jest najlepszy sposób zastąpienia wielu wierszy zawartością schowka?
Problem, który mam polega na tym, że kiedy szarpię linię i wklejam ją w inną linię, „szarpnięcie” jest zastępowane linią, którą właśnie zastępuję. Teraz, jeśli chcę zastąpić inną linię tą samą linią, muszę cofnąć się i ponownie ją szarpnąć.
Musi być lepszy sposób na zrobienie tego.
vnoremap
). Plik pomocy Vimaversion7.txt
stwierdza, że xmap i smap pojawiły się w tej wersji.xnoremap
nievnoremap
działa"0
powinien mieć zawartość twojego szarpnięcia. Pisanie jest nieco bardziej uciążliwe, ale"0p
powinno robić, co chcesz.Alternatywnie, nie wybieraj i nie zastępuj starych linii z góry. Jeśli znajdziesz te wiersze za pomocą wyszukiwania, po prostu naciskaj wielokrotnie
n.
(po inicjałup
), a gdy wszystkie zostaną wklejone, wykonajndd
tylen.
znaków, ile potrzeba.Największym przełącznikiem mentalnym, jakiego musiałem dokonać, przechodząc do Vima, jest wymyślenie, jak po kolei zastosować edycje grupowe. To znaczy zamiast robić kilka zmian w jednym wierszu, a potem zrobić kilka takich samych zmian w innym wierszu, pierwszą edycję dokonam w kilku liniach (używając
.
do świetnego efektu), a następnie drugą edytuję w paczce linii itp. Alternatywnie, użycie makr może pomóc, ponieważ są fantastyczne, ale czasami trochę bardziej uciążliwe, aby poprawnie pracować ze „złożonymi” zmianami.źródło
:%s/.../.../gc
poleceniami typu potwierdzenia może być bliższe temu, czego chcesz5@m
(dla makra o nazwiem
)xnoremap p "0p
w moim ~ / .vimrcCzęsto używam innego rejestru, kopiuję potrzebną linię do jakiegoś nazwanego rejestru,
"ay
a następnie wklejam stamtąd"ap
źródło
Kiedy wkleisz zaznaczenie w Vimie, zastąpi on domyślny rejestr zawartością zaznaczenia. Jeśli wklejenie zaznaczenia wymazuje zawartość rejestru schowka, to najprawdopodobniej masz następujący wiersz w swoim .vimrc
Jedną z opcji jest usunięcie tego i użycie jawnego rejestru schowka
"+
Inną opcją jest użycie dowolnego z innych jawnie nazwanych rejestrów (az). Po pierwszym wklejeniu,
"c
na przykład, przeciągnij linię z powrotem, a następnie użyj,"cp
aby wkleić od tego miejsca.źródło
użyj
np
gdzien
to liczba, ile czasu chcesz wkleić linie, np.3p
wklei 3 linie.źródło
Zamiast używać kopiuj / wklej, często lepiej jest użyć polecenia obiektu tekstowego, takiego jak
ciw
zmiana wewnętrznego słowa. Zaletą tej metody jest to, że można ją łatwo.
powtórzyć za pomocą polecenia powtarzania.yiw
Szarpnij słowo wewnętrzne (skopiuj słowo pod kursorem, powiedz „pierwsze”).ciw<C-r>0
Zmień „drugi”, zastępując go „pierwszym” (to Ctrl-R)..
Zmień „trzeci”, zastępując go „pierwszym”.źródło
ciw<C-r>0
nie działa w moim przypadku.ciw
przechodzi do trybu wstawiania, w którym<C-r>
staje się bezużyteczny. Czy istnieje na to proste wytłumaczenie? Czy może to mieć coś wspólnego z tekstem (nie używam pur VIM, ale powiązań klawiatury VIM w RStudio)<C-r>
jest przeznaczony do użytku w trybie wstawiania, ponieważ w ten sposób wklejasz z rejestru bez wychodzenia z trybu wstawiania - to znaczy w Vimie; Nie jestem zaznajomiony z RStudio, ale zgaduję, że masz rację i nie zaimplementowali tego konkretnego powiązania klucza.