Jak poradzić sobie z sytuacją, gdy słowo zawiera kropki lub ukośniki (np. /usr/bin/bashLub 1222.333)? Wygląda na to, że vim interpretuje /i .jako koniec słowa i nie wybierze całego ciągu.
Alexander Cska
85
Często mam ochotę zastąpić jedno słowo innym, które wyszarpnąłem z innego miejsca. Problem z innych rozwiązań jest to, że jeśli spróbujesz zmienić słowo, wówczas obok pasta będzie się to słowo, które zostało usunięte z cw.
Spróbuj wykonać następujące czynności:
1 "This first word should overwrite the second"
yiw yank inner word (copy word under cursor, say "first").
... Move the cursor to another word (say "second").
viwp select "second", then replace it with "first".
Działa ładnie, ale tylko wtedy, gdy trzeba dokonać wymiany once. Jeśli muszę zamienić kilka second' by pierwszych (w twoim przykładzie), skopiowane słowo stanie się secondpo pierwszej zamianie.
ViFI
32
ciw
c change
iw inner word
Spowoduje to usunięcie słowa pod kursorem (nawet jeśli kursor znajduje się gdzieś w środku słowa) i przejście do trybu wstawiania.
Zobacz także dokumentację Vima w celach informacyjnych:
Jeśli chcesz zmienić słowo z poprzednio wyszarpanym słowem, istnieje inne rozwiązanie viwp(po wyszarpnięciu pierwszego słowa).
ciwusuwa poprzednie słowo i przełącza cię w tryb wstawiania tam, gdzie było. Ale wtedy możesz użyć ctrl+r, 0do wstawienia zawartości rejestru 0 (który zawiera poprzednio wyszarpane słowo).
Więc:
yiw
[move to next word]
ciw
ctrl+r
0
Działa to lepiej niż viwpdlatego, że po pierwszym użyciu możesz wielokrotnie dokonywać wymiany za pomocą .. Nie przełącza się również w tryb wizualny i na krótko wyróżnia.
Nie jestem pewien, co masz na myśli, że nie zmienia trybów, wydaje się, że jest odwrotnie, ale może właśnie tego chciałeś, aby pozostać w trybie wstawiania. Ale dużą zaletą jest to, że (w przeciwieństwie do viwp) można to zrobić kilka razy za pomocą jednego szarpnięcia. Dzięki!
Palo
Och, masz rację, myślałem o wejściu w tryb wizualny, edytowany. Nie zdawałem sobie sprawy, że to ograniczenie viwp- nawet .go nie powiela.
Connor
3
Jest to zdecydowanie najlepsze rozwiązanie, gdy już wyszarpnęliśmy słowo zastępcze.
mljrg,
1
To jest odpowiedź! Możliwość korzystania .z tego jest świetna!
/usr/bin/bash
Lub1222.333
)? Wygląda na to, że vim interpretuje/
i.
jako koniec słowa i nie wybierze całego ciągu.Często mam ochotę zastąpić jedno słowo innym, które wyszarpnąłem z innego miejsca. Problem z innych rozwiązań jest to, że jeśli spróbujesz zmienić słowo, wówczas obok pasta będzie się to słowo, które zostało usunięte z
cw
.Spróbuj wykonać następujące czynności:
Mam nadzieję, że tego właśnie szukałeś.
źródło
once
. Jeśli muszę zamienić kilkasecond' by
pierwszych (w twoim przykładzie), skopiowane słowo stanie sięsecond
po pierwszej zamianie.ciw
Spowoduje to usunięcie słowa pod kursorem (nawet jeśli kursor znajduje się gdzieś w środku słowa) i przejście do trybu wstawiania.
Zobacz także dokumentację Vima w celach informacyjnych:
źródło
Jeśli chcesz zmienić słowo z poprzednio wyszarpanym słowem, istnieje inne rozwiązanie
viwp
(po wyszarpnięciu pierwszego słowa).ciw
usuwa poprzednie słowo i przełącza cię w tryb wstawiania tam, gdzie było. Ale wtedy możesz użyćctrl+r, 0
do wstawienia zawartości rejestru 0 (który zawiera poprzednio wyszarpane słowo).Więc:
Działa to lepiej niż
viwp
dlatego, że po pierwszym użyciu możesz wielokrotnie dokonywać wymiany za pomocą.
. Nie przełącza się również w tryb wizualny i na krótko wyróżnia.źródło
viwp
) można to zrobić kilka razy za pomocą jednego szarpnięcia. Dzięki!viwp
- nawet.
go nie powiela..
z tego jest świetna!Spróbuj
cw
- jak w przypadku „zmień słowo”.Użyj http://linuxmoz.com/vi-commands-cheat-sheet/ lub dowolnego innego ściągawki jako odniesienia.
źródło