Wie kann ich in vim die aktuelle Spalte in der Statusleiste anzeigen?

187

Ich möchte die aktuelle Spalte in der Statusleiste anzeigen, wie es in vielen anderen Texteditoren üblich ist. ZB ist es gut zu wissen, ob Sie in der Nähe von Spalte 80 oder höher sind.

Wie zeige ich die aktuelle Spalte in der Statusleiste an?

Jonas
quelle
Wenn Sie die aktuelle Cursorspalte anzeigen möchten, geben Sie Folgendes ein: echo col ('.').
SibiCoder

Antworten:

218

Probieren Sie es aus, wenn Sie die gewünschte Einstellung für die Option "Lineal" wünschen. Auf meinem Computer unten rechts wird die Zeile und Spalte angezeigt, in der sich der Cursor befindet.

:set ruler

KOMMENTARE BEARBEITEN :

Mit Hilfe von vim (Befehl :help ruler):

Wenn sich die Anzahl der angezeigten Zeichen von der Anzahl der Bytes im Text unterscheidet (z. B. für ein TAB-Zeichen oder ein Mehrbyte-Zeichen), werden sowohl die Textspalte (Bytenummer) als auch die Bildschirmspalte durch einen Bindestrich getrennt angezeigt.

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

Birei
quelle
Ja, irgendwie. Aber das zeigt einen merkwürdigen Wert, zB wo 23,62-6823 die Linie zu sein scheinen. Wie soll ich 62-68für die Spalte interpretieren ?
Jonas
7
62 zählt Tabs als ein Zeichen, 68 zählt erweiterte Tabs
RedGrittyBrick
1
Ab Befehl ': Hilfslineal': "Wenn sich die Anzahl der angezeigten Zeichen von der Anzahl der Bytes im Text unterscheidet (z. B. für ein TAB-Zeichen oder ein Mehrbyte-Zeichen), werden sowohl die Textspalte (Bytenummer) als auch der Bildschirm angezeigt Spalte werden mit einem Bindestrich getrennt angezeigt. " Sie können versuchen, es mit der Option 'Linealformat' zu ändern, z. B. ': setze Linealformat =% l,% v'
Birei
rulerfunktioniert nicht mit geteilten Fenstern in Vim.
Mihai
@Jonas Nicht nur Tabulatoren, wie RedGrittyBrick sagte, sondern auch Zeichen gegen Bytes. Dies ist sehr offensichtlich in UTF-8-Dateien, in denen ein einzelnes Zeichen einen Mehrbyte-Codepunkt enthält. Das lateinische eñe (n mit Tilde darüber, ausgesprochen EN-yea) ist beispielsweise ein Einzelzeichen-Glyphe, benötigt jedoch zwei Bytes, um den Codepunkt (\ xC3B1) darzustellen, und ein Drittel (1/3) ist ein Einzelzeichen-Glyphe mit einem Drei-Byte-Codepunkt (\ xE28593).
Luv2code
27

Siehe :help statuslinefür die vielen verfügbaren Optionen.

Ich habe dies in ~/.vimrceiner Reihe von anderen Richtlinien:

set statusline+=col:\ %c,

welche Ausgänge

col: 64

in meiner Statuszeile.

Ich habe keine set ruler.

romainl
quelle
1
Das funktioniert bei mir nicht. Ich brauche wahrscheinlich noch ein paar Einstellungen.
Jonas
3
Jonas, Möglicherweise musst du das set laststatus=2in deinem verwenden, .vimrcum immer die Statuszeile anzuzeigen. (0 -> nie die Statuszeile anzeigen, 1 -> nur wenn mindestens zwei Fenster vorhanden sind, 2 -> immer die Statuszeile anzeigen).
Pabuisson
Ich habe Folgendes verwendet, um vor diesem und den vorherigen Inhalten in der Statuszeile Platz zu schaffen: set statusline + = \ col: \% c,
David Baucum
18

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

Peter
quelle
Diese Lösung hat etwas Ordentliches, das Column und VisibleColumn unterscheidet. Nicht druckbare Zeichen werden in 2 Spalten angezeigt, sollten jedoch als eine gezählt werden. Wenn nicht druckbare Zeichen sieht die Ausgabe wie folgt aus : RealColumn-VisibleColumn, Line, Word, Character and Byte.
Mxlian
17

Oder lassen Sie "Lineal" deaktiviert, um eine Leistungssteigerung zu erzielen, und drücken Sie STRG-G, wenn Sie die aktuelle Spalte anzeigen möchten.

ma11hew28
quelle
3
Strg-Alles klingt nicht nach einem Leistungszuwachs. Wir tippen Zeichen. Kein Mensch hat Finger und Augen, die schnell genug fliegen, um solche Leistungsunterschiede zu erkennen.
Macetw
10

Ich würde die Verwendung von Set Ruler abschreiben, da ich glaube, dass es nicht mit den Statuszeilenoptionen kompatibel ist, z. B. wenn Sie die Statuszeile so einstellen, dass der vollständige Dateipfad in Kombination mit Set Ruler angezeigt wird

set statusline+=%F

set ruler

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

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

Es wird alles richtig angezeigt, nämlich die

[Dateipfad / Dateiname] [Leinenummer]: [Spaltennummer]

Giovanni Macciocu
quelle
2

Für die anderen Personen, die nach dieser Antwort suchen und nicht an die Arbeit mit VIm gewöhnt sind, besteht die einfachste Antwort, die ich gefunden habe, darin, diese Zeile am Ende Ihrer .vimrc-Datei in Ihrem Ausgangsverzeichnis hinzuzufügen:

set ruler

Jay
quelle