Najprostszy sposób na usunięcie „złożonego” słowa?

20

Przepraszamy, jeśli „kompozyt” nie jest terminem technicznym. Mam na myśli:

Hi, I-am-a-composite-word and we are not

Chciałbym usunąć tylko słowo złożone. W trybie komend, jeśli przesunę kursor do I, a następnie powtórzenie dwkilka razy lub lepsze pisanie dwraz, a następnie kilka .naciśnięć, załatwi sprawę. Jednak z różnych powodów robię to dość często w ciągu dnia, dlatego zastanawiałem się, czy jest jakiś prostszy sposób.

PS NIE uważałbym tego polecenia d9wza prostszy sposób. Liczenie długiej sekwencji słów i myślników nie jest moim pomysłem na „prostsze”.

DeltaIV
źródło

Odpowiedzi:

33

To, co nazywacie słowem złożonym, jest W rzeczywistości SŁOWEM (w przeciwieństwie do słowa). Czytanie :h wordi :h WORDpowinno być pomocne:

                            *word*
A word consists of a sequence of letters, digits and underscores, or a
sequence of other non-blank characters, separated with white space (spaces,
tabs, <EOL>).  This can be changed with the 'iskeyword' option.  An empty line
is also considered to be a word.
                            *WORD*
A WORD consists of a sequence of non-blank characters, separated with white
space.  An empty line is also considered to be a WORD.

Co szukasz tu jest dW, gdy jesteś na Ilub diWgdy jesteś w dowolnym miejscu wyrazu.

Może w przyszłości będziesz także musiał przeczytać :h 'iskeyword'.

statox
źródło
1
dzięki za odpowiedź: to działa. A propos definicji: A WORD consists of a sequence of non-blank characters, separated with white space. Separated with white spaceoznacza, że ​​SŁOWO jest oddzielone innymi słowami lub SŁOWAMI spacją, prawda?
DeltaIV,
2
@DeltaIV Taa in-this-sentence there are four"WORDsW 4 słowa są in-this-sentence, there, arei four"WORDs. Łatwo zobaczyć, kiedy używasz wi Wczy bi Bprojekty np. Pamiętaj, że biały znak może być „zwykłą” spacją lub znakiem tabulacji.
statox
1
Ta odpowiedź byłaby bardziej przydatna, gdyby zaczęła się od „To, czego tu szukasz, to dW ..” zamiast zmuszania czytelnika do przejścia do środkowego akapitu w celu znalezienia rozwiązania.
Mark Meuer,
9

Innym bardziej ogólnym rozwiązaniem jest usunięcie do znaku spacji za pomocą dt (ze spacją po t), co oznacza „usuń do [znaku]. Często jest to przydatne w przypadku rzeczy podobnych dt:i podobnych.

allo
źródło
Co ma dt: zrobić?
DeltaIV
1
Kiedy opublikowałem tę samą odpowiedź, dowiedziałem się, że możesz użyć <code>dt </code>spacji na końcu.
BurnsBA
2
@DeltaIV Tak naprawdę to, czego naprawdę potrzebujesz, to czytać :h motion.txti używać vimtutor, co znacznie pomoże ci zdobyć podstawy Vima
statox
@statox Miałem doświadczenie w VIM ... 10 lat temu :-) vimtutorbrzmi bardzo interesująco. Nie jestem pewien, czy jest zainstalowany na zdalnym serwerze (wygląda na to, że nawet mannarzędzie nie jest zainstalowane). Jednak sprawdzę: jeśli zostanie automatycznie zainstalowany wraz z vimpakietem, są duże szanse, że będę mógł go użyć.
DeltaIV,
1
@BurnsBA Dziękuję, to naprawdę przydatne dla tej strony. Btw. możesz edytować posty innych osób, a nawet uzyskać reputację +2, jeśli Twoja edycja przejdzie przez proces recenzji. Ale w ten sposób nauczyłem się również czegoś nowego :-).
allo
4

Jeśli chcesz nadal używać dwi tym podobne, a także chcesz, aby działało po dwukrotnym kliknięciu słowa, możesz dodać

set iskeyword+=-

do twojego .vimrc, który dodaje -jako znak słowny.

Przykład:

Dwukrotne kliknięcie dowolnej postaci w ab-cdpodświetleniu wizualnym ab-cd.

nst0022
źródło
Nie mam nic przeciwko zmianie dW, ale twoje rozwiązanie jest również całkiem fajne, ponieważ, jak sądzę, wpływa również na tryb wizualny. Mam na myśli, modyfikując iskeyword, klikając dwukrotnie, a następnie naciskając d, powinienem móc usunąć ab-cd. Dobrze?
DeltaIV
A może powinienem przejść do trybu wizualnego vzamiast podwójnego klikania. Dobrze?
DeltaIV
1
@DeltaIV, modyfikując słowo kluczowe, możesz użyć dowolnej metody z obiektami słownymi (w tym iw lub aw, znacznie prostsze niż użycie myszy lub trybu wizualnego)
D. Ben Knoble
4

Nie zapomnij poleceń f(znajdź) i t(do). Prawdopodobnie po prostu dt lub df (zwróć uwagę na spację na końcu).

BurnsBA
źródło