2013-11-23 2 views
21

Welcher ist der kürzeste Weg, um eine ganze Zeile ohne das neue Zeilenzeichen in VIM auszuwählen?Wählen Sie die gesamte Zeile in VIM, ohne das neue Zeilenzeichen

Ich weiß, dass SHIFT + v wählt die gesamte Linie, aber mit Zeilenendmarke.


das ich auf die Linie gehen und ich drücke:

  • ^ (am Anfang der Zeile der Cursor setzt) ​​
  • v (startet die visuellen wählen)
  • $ (wählt die gesamte Zeile mit neuem Zeilenzeichen)
  • Linke (Auswahl entfernt die neuen Zeilen Zeichen)

Ich weiß auch, dass ich eine Aufnahme erstellen kann, die so etwas tut. Aber ich frage, ob es irgendwelche eingebauten Abkürzungen gibt ...

Antwort

19

Nein, es gibt nichts eingebautes, das den Job macht. Aus diesem Grund haben die Leute sogar Plugins entwickelt, um den Bedarf zu decken.

Wahrscheinlich die beliebteste Wahl ist textobj-line. Mit textobj-line erhalten Sie zwei neue Textobjekte, al "a line" und il "inner line". Dann

  • vil wählt den bedruckbare Inhalt der Zeile (wie ^vg_)
  • val wählt den gesamten Zeileninhalt (wie 0v$h).

Beide enthalten den Zeilenumbruch nicht in der Auswahl.

Ziemlich handliche Plugin, wenn Sie mich fragen. Und es funktioniert auch mit den Betreibern.


Auf Wunsch der Installation:

  • Mit Klar Vim:
    1. Erhalten Sie die neuesten textobj-user und seine Verzeichnisse in ~/.vim extrahieren.
    2. Holen Sie sich die neueste textobj-line und extrahieren Sie ihre Verzeichnisse in ~/.vim.
    3. Generieren Sie die Hilfe-Tags :helptags ~/.vim/doc.
  • mit einem Plugin-Manager (empfohlen): folgen Sie einfach den üblichen Installationsverfahren für Ihren Plugin-Manager, und nicht vergessen auch die textobj-Benutzer Abhängigkeit zu installieren.
+0

Können Sie die Installationsschritte einbeziehen? –

+0

Sehr gut! Vielen Dank! –

2

Sie können immer noch eine Zuordnung zu dem, was Sie wollen, zB:

nnoremap <leader>v 0v$ 
+0

Dies kopiert immer noch den Zeilenumbruch, weil '$' das Zeilenumbruchzeichen am Ende der aktuellen Zeile enthält. – jerzy

6
0v$ 
^v$ 
0vg_ 
^vg_ 
$v0 
$v^ 
g_v0 
g_v^ 

alles tun, um den Job mit unterschiedlichen Vorstellungen von dem, was eine Linie (von der ersten Spalte ist oder von der ersten druckbaren Zeichen, zum letzten Zeichen oder zum letzten druckbaren Zeichen). Sie können ein benutzerdefiniertes Mapping erstellen, wenn Sie möchten.

Beachten Sie, dass die Auswahl von Text in vim oft unnötig ist.

17

Ja, g_ ist, was Sie suchen. g_ ist wie $, aber ohne das Newline-Zeichen am Ende.

Verwenden Sie 0vg_ oder ^vg_, je nachdem, ob Sie vom Anfang der Zeile oder vom ersten Zeichen in der Zeile kopieren möchten.

+1

Mann, der Unterstrich ist ziemlich nützlich. Wusste das nicht>) danke: D –

2

Wenn Sie eine Zeile in den Puffer kopieren möchten, können Sie mit D an der Cursorposition bis zum Zeilenende löschen und dann die Änderungen mit u zurücksetzen. Der Text wird ohne neues Zeilensymbol in den Puffer kopiert. So lautet der Befehl:

Du 
Verwandte Themen