2013-04-04 11 views
13

Powiedzmy, że wpisałem "abcdefg", z kursorem na końcu. Chcę usunąć z powrotem do c, więc pozostało mi tylko "abc".Jak usunąć, w tym bieżący znak?

Czy istnieje polecenie takie jak d zawierające bieżący znak? Wiem, że mogłem zrobić dTcx, ale x jest jak obejście i sądzę, że jest lepsze rozwiązanie.

+0

Robię to z najgłupszym z możliwych sposobów: D –

+1

@MostafaShahverdy 'xxxx'? Lub 'ddOabc'? – Andreas

+0

Humm: D i czasami używając Del z 'c'! –

Odpowiedz

6

Nie. Ruchy do tyłu zawsze zaczynają się po lewej stronie od bieżącego znaku dla c, y i d, co jest w pewnym sensie logiczne, ale także niepokojące.

tylko „czyste” rozwiązania mogłem pomyśleć albo zakładają przeniesienie do char po c pierwszy, a następnie zrobić naprzód usunąć:

Tcde 

lub stosując tryb wizualny:

vTcd 
v3hd 

Ale , biorąc pod uwagę twoją próbkę i zakładając, że wchodzisz w normalny tryb tylko dla tej korekty, cała ta sprawa brzmi dla mnie wyjątkowo nieefektywnie.

Co o pobyt w trybie wstawiania i po prostu robi ?

+0

+1 dla 4x'backspace', myślę, że zrobiłbym tak w prawdziwej pracy. – Kent

+6

Dzięki. Oczywiście był to tylko przykład; może być 12 lub 30 znaków do usunięcia i może być w środku linii. – Andreas

1

Użyj d?c Rozpocznie się tryb d, wyszukaj ponownie "c", a następnie usuń do pozycji kursora.

Edit: Nie, że nie zawiera aktualną pozycję ...

+0

musi być "d? d" –

+0

Tak, dobrze, aby zachować "c". – Cometsong

1

I może być nieporozumienie swój wniosek, ale nie 3hd$ zrobić?

+1

Tak, robi. Lub 'Fdd $'. Ale chciałbym pracować, gdy nie jestem na końcu linii, i to też jest jak praca. Zasadniczo pytam, czy istnieje ruch/usuwanie, które obejmuje obecny znak. – Andreas

2

spróbuj tego:

TcD 

ten pozostawi abc dla przykładu ... dobrze jeśli abcdefg jest ostatnim słowem wiersza.

jeśli nie jest to ostatnie słowo w tym wierszu, można zrobić:

ldTc 

lub golfa, czy go w ciągu 3 naciśnięciu klawisza:

3Xx or l4X 
2

Zobacz this answer do podobnego pytania : istnieje ustawienie umożliwiające wyjście poza koniec linii.

Z dokumentu:

Wirtualna edycja oznacza, że ​​kursor może być ustawiony w miejscu, w którym znajduje się , bez faktycznego znaku. Może to być w połowie do zakładki lub poza linię linii. Przydatny przy wyborze prostokąta w trybie Visual i edycji tabeli. "onemore" to nie to samo, to zezwala tylko na przesuwanie kursora po po ostatnim znaku linii. To powoduje, że niektóre polecenia są bardziej spójne. Poprzednio kursor zawsze był za końcem wiersza , jeśli linia była pusta. Ale jest to dalekie od kompatybilności Vi. Może również przerwać niektóre wtyczki lub skrypty Vima. Na przykład, ponieważ | l | można przesunąć kursor za ostatnią postacią. Używaj ostrożnie! Użycie polecenia $ spowoduje przejście do ostatniego znaku w wierszu, a nie za nim. Może to faktycznie przesunąć kursor w lewo! Polecenie g$ przesunie się na koniec linii ekranu. Nie ma sensu, aby łączyć "wszystkie" z "onemore", ale nie dostaniesz ostrzeżenia o tym, ponieważ .

Krótko mówiąc, możesz wypróbować :set virtualedit=onemore i sprawdzić, czy Twoje środowisko jest stabilne, czy nie.

Powiązane problemy