Frage Wie zeige ich die aktuelle Spalte in der Statusleiste in vim an?


Ich möchte die aktuelle Spalte in der Statusleiste anzeigen, wie es in vielen anderen Texteditoren üblich ist. Z.B. Es ist gut zu wissen, ob Sie in Spalte 80 oder höher sind.

Wie zeige ich die aktuelle Spalte in der Statusleiste an?


154
2017-12-06 20:35


Ursprung


Wenn Sie die aktuelle Spalte des Cursors anzeigen möchten, geben Sie Folgendes ein: echo col ('.'). - SibiCoder


Antworten:


Probieren Sie es aus, wenn Sie die Option "Lineal" einstellen. Auf meinem Computer unten rechts zeigt die Zeile und Spalte, wo ich den Cursor habe.

:set ruler

Bearbeiten Sie die Kommentare:

Aus der Hilfe von vim (Befehl :help ruler):

Wenn die Anzahl der angezeigten Zeichen von der Anzahl der angezeigten Zeichen abweicht   Bytes im Text (z. B. für ein TAB oder ein Multi-Byte-Zeichen), beides   die Textspalte (Bytenummer) und die Bildschirmspalte werden angezeigt,   mit einem Strich getrennt.

Sie können versuchen, es mit zu ändern rulerformat Option, wie :set rulerformat=%l,%v


184
2017-12-06 20:43



Ja, irgendwie. Aber das zeigt einen seltsamen Wert, z.B. 23,62-68 23 schienen die Linie zu sein. Wie soll ich interpretieren? 62-68 für die Spalte? - Jonas
62 zählt Tabs als ein Zeichen, 68 zählt erweiterte Tabs - RedGrittyBrick
Von Befehl ': Hilfslineal': "Wenn die Anzahl der angezeigten Zeichen sich von der Anzahl der Bytes im Text unterscheidet (z. B. für ein TAB- oder ein Multi-Byte-Zeichen), sowohl die Textspalte (Bytenummer) als auch der Bildschirm Spalte sind mit einem Bindestrich getrennt dargestellt. " Sie können versuchen, es mit der Option 'Linealformat' zu ändern, zB ': set linealformat =% l,% v' - Birei
ruler funktioniert nicht mit geteilten Fenstern in Vim. - Mihai
@ Jonas Nicht nur Tabs, wie RedGrittyBrick sagte, sondern auch Zeichen im Vergleich zu Bytes. Dies ist in UTF-8-Dateien sehr offensichtlich, in denen ein Zeichen mit einem einzelnen Zeichen einen Multi-Byte-Codepunkt aufweist. Zum Beispiel ist die lateinische eñe (n mit Tilde darüber, ausgesprochen EN-ja) ein einzelnes Zeichen Glyph aber nimmt zwei Bytes, um den Codepunkt (\ xC3B1), und ein Drittel (1/3) ist ein einzelnes Zeichen Glyphe mit einem drei Byte Codepunkt (\ xE28593). - Luv2code


Sehen :help statusline für die vielen verfügbaren Optionen.

Ich habe das in meinem ~/.vimrc dazwischen eine Reihe anderer Direktiven:

set statusline+=col:\ %c,

was ausgibt

col: 64

in meiner Statuszeile.

Ich habe es nicht set ruler.


26
2017-12-06 21:28



Das funktioniert nicht für mich. Ich brauche wahrscheinlich noch ein paar Einstellungen. - Jonas
Jonas, Du musst vielleicht die set laststatus=2 in deinem .vimrc um immer die Statuszeile anzuzeigen. (0 -> niemals die Statuszeile anzeigen, 1 -> nur wenn es mindestens zwei Fenster gibt, 2 -> immer die Statuszeile anzeigen). - pabuisson
Ich habe Folgendes verwendet, um vor diesem und den vorherigen Dingen auf der Statuszeile Platz zu schaffen: set statusline + = \ col: \% c, - David Baucum


Oder lassen Sie "Lineal" deaktiviert, einen Leistungsgewinn, und drücken Sie STRG-G wenn Sie die aktuelle Spalte sehen möchten.


18
2017-11-09 20:35



Ctrl-Anything zu treffen klingt nicht nach einem Performancegewinn. Wir tippen Zeichen ein. Kein Mensch hat Finger und Augen, die schnell genug fliegen, um diese Art von Leistungsunterschied zu sehen. - macetw


Eine andere Möglichkeit ist 'g Ctrl-G', die die aktuelle Position des Cursors auf fünf Arten ausgibt: Spalte, Zeile, Wort, Zeichen und Byte. (von http://vimdoc.sourceforge.net/htmldoc/editing.html#g_CTRL-G)


17
2018-03-05 10:51



Diese Lösung hat etwas Ordentliches, das Column und VisibleColumn unterscheidet. Nicht druckbare Zeichen werden 2 Spalten angezeigt, sollten aber als eins gezählt werden. Bei nicht druckbaren Zeichen sieht die Ausgabe so aus: RealColumn-VisibleColumn, Line, Word, Character and Byte. - mxlian


Ich würde mit gesetztem Lineal abschreiben, weil ich glaube, dass es nicht mit den Statuszeilenoptionen kompatibel ist, z. Wenn Sie die Statuszeile so einstellen, dass der vollständige Dateipfad in Kombination mit dem eingestellten Lineal angezeigt wird

set statusline+=%F

set ruler

Dann wird NICHT die Spaltennummer angezeigt, sondern nur der vollständige Dateipfad in der Statusleiste. Wenn Sie jedoch folgendes in Ihre .vimrc einfügen

set statusline+=%F\ %l\:%c

Es wird alles richtig angezeigt, nämlich die

[Dateipfad / Dateiname] [Zeilennummer]: [Spaltennummer]


9
2018-01-17 13:01





Für die anderen Leute, die nach dieser Antwort suchen und nicht daran gewöhnt sind, mit VIm zu arbeiten, ist die einfachste Antwort, die ich gefunden habe, diese Zeile am Ende der .vimrc-Datei in Ihrem Home-Verzeichnis einzufügen:

set ruler


1
2017-08-21 04:46