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?


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ż


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 )


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.


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!


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).


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.