2011-02-06 9 views
6

Jestem doświadczonym programistą na platformie Windows i próbuję nauczyć się, jak używać Vima. Jestem całkiem niezły z wyrażeniami regularnymi i rozumiem zasady używania Vima. Mam jednak specyficzny problem i chociaż mam rozwiązanie, wydaje mi się, że powinien być lepszy.Nauka Vima: Najlepszy sposób na usunięcie przestrzeni między słowami

Mam plik zawierający wiersz podobny do następującego:

CODE<tab><tab>Lorem ipsum dolor sit amet 

nie może być zmienna liczba <tab> lub <space> znaków między CODE i Lorem. Zakładając, że kursor znajduje się nad literą "C" CODE w trybie normalnym, chciałbym znaleźć kombinację klawiszy, która wygeneruje następujące dane wyjściowe, i pozostawić kursor między literą "E" o numerze CODE, a on "L". 'z Lorem w trybie wstawiania.

CODELorem ipsum dolor sit amet 

Moja curent rozwiązaniem jest użycie następującą sekwencję klawiszy:

wagowod?\s\+< powrót >

To działa, ale czuje się nielogiczne przejść obok rzeczy chcę usunąć, zanim można go usunąć. Czuję, że powinienem przejść do końca CODE i usunąć przekierowania. Rozumiem, że może to być po prostu idiom Vima, którego nie jestem świadomy. Mogłabym też całkowicie pominąć kluczową wiedzę Vima.

Jaki jest najlepszy sposób na osiągnięcie mojego celu?

Odpowiedz

15

eldw się to zrobić.

  • e - naprzód na koniec słowa
  • l - krok 1 znak w prawo
  • dw - Usuń wszystkie wykroje

Jeśli twój kursor znajduje się pośrodku jakiegoś spacji, diw usunie białe znaki z lewej i prawej strony kursora. (Jeśli jest gdzieś w środku wyrazu, będzie usunąć słowo.)

+1

Dzięki, Matt.Właściwie to myślałem, że na początek, ale odkładałem słuchawkę na fakt, że "l" przesuwa kursor na koniec tabulatora, a nie do pozycji następującej po kodzie "CODE". Teraz, kiedy próbuję, to ma sens. Myślę, że podkreśla to, o czym myślałem: uczenie się Vima to nie tylko polecenia - to także wymaga poznania pewnych idiomów. –

+0

@Damian: Jasne, są ładne prawidłowości w całym vi/vim, wciąż mam do czynienia z nimi samemu :-) –

+2

po nieco dalszych eksperymentach, myślę, że kluczowa sekwencja, której szukałem, to 'elcw'. To pozostawia mnie w trybie wstawiania, gotowe do dodania mojego tekstu zastępczego. Niesamowite! Dzięki jeszcze raz. –

4

kilka alternatyw:

:s/\s\+// 
e xx 
elxx 
eldtL 
f<tab>xx 
eldw 
+0

Dzięki za sugestie, Ross. Chciałem użyć tej sekwencji w snipet, więc jedna lub dwie z twoich sugestii nie będą działać, ponieważ biorą pod uwagę dokładny układ i zawartość, która różni się od linii do linii w moim pliku. Dzięki za wskazówki do innych rzeczy, o których wcześniej nie wiedziałem. –

Powiązane problemy