Jak usunąć zaznaczony tekst w edytorze vi

116

Używam PuTTY i edytora vi. Jeśli wybiorę pięć linii za pomocą myszy i chcę je usunąć, jak mogę to zrobić?

Ponadto, w jaki sposób mogę wybierać linie za pomocą klawiatury, tak jak w systemie Windows, w którym naciskam Shifti przesuwam strzałki, aby zaznaczyć tekst? Jak mogę to zrobić w vi?

Peter Mortensen
źródło
1
Mam wydrukowaną listę ludzi, ale nie mogłem znaleźć sposobu usunięcia zaznaczonego tekstu
x Usuń znak na prawo od kursora X Usuń znak na lewo od kursora D Usuń do końca linii dd Usuń bieżącą linię: d Usuń bieżącą linię z lagmonster.org/docs/vi.html mam nadzieję, że to trochę pomoże
Mawg mówi, że przywróć Monikę
1
Pytania VIM dotyczące superużytkownika? LOL!
Pascal Thivent
1
@ Pascal: hmm, tak, masz rację. Nawiasem mówiąc, ładnie sformatowana odpowiedź. Aha, i jego / jej pytanie nie dotyczyło VIM, ale VI. ;)
Marcel Korpel

Odpowiedzi:

215

Używam PuTTY i edytora vi. Jeśli wybiorę pięć linii za pomocą myszy i chcę je usunąć, jak mogę to zrobić?

Zapomnij o myszy. Aby usunąć 5 wierszy:

  • Przejdź do pierwszej linii i wpisz d5d( ddusuwa jedną linię, d5dusuwa 5 linii) ~ lub ~
  • Wpisz Shift-v, aby wejść w tryb wyboru linewise , a następnie przesunąć kursor w dół za pomocą j(tak, stosowanie h, j, ki l, aby przejść w lewo , w dół , w górę , w prawo , odpowiednio, to dużo bardziej wydajny niż za pomocą strzałek) i wpisać d, aby usunąć zaznaczenie.

Ponadto, w jaki sposób mogę wybierać linie za pomocą klawiatury, tak jak w systemie Windows, w którym naciskam Shifti przesuwam strzałki, aby zaznaczyć tekst? Jak mogę to zrobić w vi?

Jak powiedziałem, użyj albo Shift-vaby wejść w tryb wyboru liniowego , albo by wejść w tryb zaznaczania znakowego albo vby wejść w tryb Ctrl-vwyboru blokowego. Następnie przenieść z h, j, ki l.

Proponuję spędzić trochę czasu z Vim Tutorem (bieganie vimtutor), aby lepiej zapoznać się z Vimem w bardzo dydaktyczny sposób.

Zobacz też

Pascal Thivent
źródło
1
Właściwie, vim ma świetne wsparcie dla myszy, jeśli twój terminal to obsługuje. Na przykład używając gpmdemona w konsoli, działając xtermlub konsolew środowisku graficznym, możesz powiedzieć vimowi set mouse=a(lub dodać go do swojego .vimrc), a mysz może być używana do zaznaczania, zmiany rozmiaru podziałów itp.
Ben Voigt
@Ben Masz rację, w ogóle nie używam myszy, ale to nie znaczy, że VIM nie może sobie z tym poradzić (w pewnych okolicznościach). Właściwie usuwałem tę niedokładną część z mojej odpowiedzi, gdy pisałeś.
Pascal Thivent
Poza tym, naprawdę trudno jest stwierdzić, kiedy twoje V jest duże, czy nie ... Proponuję powiedzieć [Shift] + [V], aby wybrać tryb liniowy.
Ben Voigt,
Wiem, że to było trochę czasu, ale dlaczego za pomocą h, j, ki lbyłoby znacznie bardziej efektywne niż przy użyciu strzałek? Nie widzę problemu, używając strzałek, a efekt końcowy wygląda tak samo. Ponadto strzały zostały po raz pierwszy zaprojektowane w tym celu, więc ich układ wydaje się znacznie bardziej intuicyjny (przynajmniej dla mnie)
Frederico Pantuzza,
1
@FredericoPantuzza W tym momencie jest to kwestia ruchu ręki - celem jest ciągłe trzymanie palców na klawiszach rzędu domu. Konieczność podniesienia prawej ręki i przesunięcia jej do klawiszy strzałek, aby z nich skorzystać, sumuje się z czasem.
AndrewF,
59

Zrób to na sposób vi.

Aby usunąć 5 linii, naciśnij: 5dd(5 usuń)

Aby zaznaczyć (a właściwie skopiować je do schowka), wpisz: 10yy

Jest to trochę trudne do uchwycenia, ale bardzo przydatne do nauczenia się podczas korzystania z tych zdalnych terminali

Zwróć uwagę na krzywe uczenia się dla niektórych redaktorów:


(źródło: calver na unix.rulez.org )

OscarRyz
źródło
31

Jeśli chcesz usunąć za pomocą numerów linii, możesz użyć:

:startingline, last line d

Przykład:

:7,20 d

Ten przykład spowoduje usunięcie linii od 7 do 20.

Vladimir Verleg
źródło
Do tej pory nie byłam świadoma tej wskazówki. To działa jak urok! Dzięki!
Tung
13

Podświetlanie myszą powoduje podświetlenie tylko znaków na terminalu. VI tak naprawdę nie otrzymuje tych informacji, więc musisz inaczej zaznaczyć.

Naciśnij `` v '', aby przejść do trybu wyboru, i użyj klawiszy strzałek, aby go poruszać. Aby usunąć, naciśnij x. Aby zaznaczyć wiersze naraz, naciśnij Shift + V. Aby zaznaczyć bloki, spróbuj ctrl + v. To jest dobre dla, powiedzmy, wstawiania wielu wierszy komentarza przed kodem :).

Jestem OK z VI, ale trochę mi zajęło, zanim się poprawiłem. Moi koledzy z pracy polecili mi tę ściągawkę . Na ścianie trzymam wydruk na te dziwne chwile, kiedy o czymś zapominam.

Miłego hakowania!

heymatthew
źródło
6

Podczas korzystania z terminala, takiego jak PuTTY , zwykle kliknięcia myszą i zaznaczenia nie są przesyłane do systemu zdalnego. Więc vi nie ma pojęcia, że ​​właśnie wybrałeś jakiś tekst. (Istnieją wyjątki od tej reguły, ale ogólnie działania myszy nie są przesyłane).

Aby usunąć wiele linii w vi, użyj czegoś podobnego 5dddo usunięcia 5 linii.

Jeśli nie używasz Vima , zdecydowanie polecam to zrobić. Możesz użyć wizualnego wyboru, w którym naciśnij, Vaby rozpocząć blok wizualny, przesuń kursor na drugi koniec i naciśnij, daby usunąć (lub dowolne inne polecenie edycji, takie jak ykopiowanie).

Greg Hewgill
źródło
1
@Justin L .: Użyj <kbd>a</kbd>.
Greg Hewgill,
1
Dzięki! : D Czy jest ich więcej gdzieś ukrytych?
Justin L.,
1
Putty może przesyłać polecenia myszy; pierwsze zdanie może być nieaktualne.
congusbongus
3

Jeśli chcesz usunąć wszystkie linie w pliku z bieżącego numeru linii, użyj dG, spowoduje to usunięcie wszystkich linii (shift g)oznaczających koniec pliku

Syed
źródło