Teraz przełączam się VIM
z TextMate. Uważam, że ^+W
tryb INSERT jest bardzo przydatny. Chciałbym jednak usunąć nie tylko słowo przed kursorem, ale także słowo za kursorem lub wokół niego.
Zrobiłem trochę googlingu, ale jedyne, co mogłem znaleźć, to ^+W
usunąć słowo PRZED kursorem.
vim
keyboard-shortcuts
Mantas
źródło
źródło
imap <C-d> <C-o>diw
też działa. Nie tworzy też punktu cofania, co zawsze robi <Esc>.Tryb normalny:
źródło
da)
aci)
jednak nigdy nie myślał o tym!.vimrc
pliku:nmap <Leader>d daw
inmap <Leader>c caw
aw
jest to jeden z przykładów wyboru obiektów. Możesz wypróbować selekcje obiektów w trybie wizualnym, aby zobaczyć, jaki mają one efekt: vimdoc.sourceforge.net/htmldoc/motion.html#object-selectMyślę, że to jest po prostu
daw
źródło
a
to polecenie,Append text after the cursor [count] times.
ale jakdaw
działa?d
dyktuje, że będziesz „ usuwał ”. „A” jest rodzajem parametru określającym, że usunięcie ma obejmować separator. Wreszcie „w”, kolejny -parameter
jeśli chcesz - określa, żeword
jednostka zostanie usunięta.dw
idaw
?dw
usunie się z kursora na koniec słowa, a jednocześniedaw
usunie całe słowo wraz ze spacją.diw
usunie całe słowo bez dotykania białych znaków wokół niego.Poniżej działa tryb normalny: zgadzam się z odpowiedzią Dana Olsona, że prawdopodobnie powinieneś być w trybie normalnym w przypadku większości operacji usuwania. Więcej szczegółów poniżej.
Jeśli kursor znajduje się wewnątrz słowa:
diw
aby usunąć słowo (nie zawiera spacji),daw
aby usunąć słowo (obejmuje spacje przed następnym słowem).Jeśli kursor znajduje się na początku słowa, wystarczy nacisnąć
dw
.Można to pomnożyć przez dodanie zwykłych liczb dla ruchu, np. 2w, aby przejść do przodu o 2 słowa, więc d2w usuwa dwa słowa.
Tryb wstawiania ^ w
Pomysł użycia hjkl do poruszania się w Vimie polega na tym, że bardziej produktywne jest trzymanie rąk w głównym rzędzie. Na końcu słowa ^ w działa świetnie, aby szybko usunąć słowo. Jeśli przeszedłeś do trybu wstawiania, wprowadziłeś tekst i użyłeś klawiszy strzałek, aby skończyć w środku słowa, które postąpiłeś wbrew filozofii wiersza domowego.
Jeśli jesteś w trybie normalnym i chcesz zmienić słowo, możesz po prostu użyć
c
(zmień) zamiastd
(usuń), jeśli chcesz całkowicie zmienić słowo i ponownie wejść w tryb wstawiania bez konieczności naciskania,i
aby wrócić do pisania.źródło
Masz na myśli?
źródło
dw
nie usuwa obok myślnika ani innej interpunkcji.Aby usunąć wszystkie znaki między dwoma białymi spacjami, w trybie normalnym:
Aby usunąć tylko jedno słowo:
źródło
Nie wygląda na to, żeby istniał jakikolwiek wbudowany sposób na to w trybie wstawiania, o co pytano. Niektóre inne odpowiedzi są poprawne dla trybu normalnego, a także wskazuje, że można utworzyć niestandardowe odwzorowanie w celu dodania funkcji w trybie wstawiania.
Szczerze mówiąc, prawdopodobnie powinieneś zrobić większość usuwania w trybie normalnym. ^ W to fajnie wiedzieć, ale nie jestem pewien, czy mogę wymyślić sytuację, w której wolałbym to zrobić niż esc, aby przejść do trybu normalnego i mieć do dyspozycji potężniejsze polecenia usuwania.
W ten sposób Vim bardzo różni się od wielu innych edytorów (w tym TextMate). Jeśli używasz go produktywnie, prawdopodobnie zauważysz, że nie spędzasz dużo czasu w trybie wstawiania.
źródło
Aby usunąć całe słowo, którego używa kursor
diw
Aby usunąć całe słowo, na którym znajduje się kursor i przejść do trybu wstawiania, użyj,
ciw
jeśli nie chcesz usunąć całego słowa, ale usuń z miejsca, w którym jesteś
dw/cw
źródło
Ponieważ istnieje tak wiele sposobów na usunięcie słowa, zilustrujmy je.
Zakładając, że edytujesz:
i wywołać polecenie, gdy kursor znajduje się na pasku „a” na pasku:
źródło
Niestety tryb wstawiania nie ma takiego polecenia. W VIM, aby usunąć całe słowo pod kursorem, możesz wpisać
viwd
w trybie NORMALNYM. Co oznacza „ V isual-Block I nner W ord D elete”. Użyj dużej litery,W
aby uwzględnić interpunkcję.źródło
Przyjęta odpowiedź nie powiedzie się podczas próby powtórzenia usuwania słów, spróbuj zamiast tego:
Mapuje CTRL-BackSpace, działając również w trybie normalnym.
źródło
Aby usunąć pewną liczbę znaków przed kursorem, możesz użyć X. Aby usunąć pewną liczbę słów za kursorem, możesz użyć dw (wiele słów można usunąć za pomocą 3dw dla 3 słów, na przykład). Aby usunąć ogólnie kursor, możesz użyć daw.
źródło
W starym vi
b
przesuwa kursor na początek słowa przed kursorem,w
przenosi kursor na początek słowa za kursorem,e
przenosi kursor na końcu słowa za kursorem idw
usuwa z kursora na koniec słowa.Po wpisaniu
wbdw
usuwasz słowo wokół kursora, nawet jeśli kursor znajduje się na początku lub na końcu słowa. Pamiętaj, że spacje po słowie są uważane za część słowa do usunięcia.źródło
Nie jestem pewien, czy używasz „przed” i „po”, ale próbowałeś
?
Edycja: Myślę, że szukasz czegoś do użycia w trybie wstawiania. O dziwo, w dokumentach nie ma nic, ctrl-w wydaje się być wszystkim.
źródło
Zrobiłem dwa mapowania, aby uzyskać spójność w trybie wstawiania i poza trybem wstawiania.
:map <'Key of your choice'> caw
:imap <'Key of your choice'> <'Esc'> caw
źródło
W takim przypadku rozwiązanie zaproponowane przez OP (tj. Za pomocą
<c-w>
) można połączyć z zaakceptowaną odpowiedzią, aby uzyskać:alternatywnie (krótsze rozwiązanie):
Przykładowe dane wejściowe:
Wynik:
źródło