Ich möchte nach Möglichkeit wissen, wie Sie den Cursor in Vim (in Farbe, Form usw.) ändern können, je nachdem, in welchem Modus Sie sich befinden.
Ich vergesse ständig, dass ich mich nicht im Einfügemodus befinde und beginne, Code einzugeben, was dazu führt, dass alle möglichen verrückten Dinge passieren. Es wäre hilfreich, wenn der Cursor eine visuelle Anzeige hätte.
Antworten:
Eine beliebte Option zum Anzeigen des Wechsels zum und vom Einfügemodus ist das Umschalten der
cursorline
Option, die dafür verantwortlich ist, ob die aktuelle Bildschirmzeile markiert ist (siehe:help cursorline
):oder alternativ,
Ändern Sie die
CursorLine
Hervorhebungsgruppe, um das Design der Cursorlinie nach Ihren Wünschen zu ändern (siehe:help :highlight
und:help highlight-groups
).quelle
cursorline
Option hängt nicht von plattformspezifischen Funktionen ab. Es ist auf jeder Vim-Instanz verfügbar, die mit der+syntax
Funktion kompiliert wurde (was normalerweise der Fall ist).echo 'autocmd InsertEnter,InsertLeave * set cul!' >>~/.vimrc
Folgendes funktioniert für xterm / urxvt / ... (Linux), iTerm2 (Mac), Git Bash mit ConEmu (Windows) und mehr (siehe Kommentare):
Andere Optionen (ersetzen Sie die Nummer nach \ e [):
Wenn Sie tmux verwenden , ist es wichtig, dass Sie es so verwenden (ohne
\<Esc>Ptmux;
Escape). tmux verfolgt die richtige Cursorform, wenn Sie zwischen Fenstern / Fenstern wechseln.Wenn es bei Ihnen nicht funktioniert, versuchen Sie es entweder
TERM=xterm-256color
vor dem Starten von tmux oder fügen Sie dies Ihrer .tmux.conf hinzu (danke @Steven Lu):quelle
set -ga terminal-overrides ',*:Ss=\E[%p1%d q:Se=\E[2 q'
in meiner tmux Konfiguration arbeiten. Wenn Sieset
forterminal-overrides
without verwenden-a
, wird anscheinend die Einstellung überschrieben, die diese standardmäßig bereits enthält.Wenn Sie mit tmux und iTerm2 auf OSX ,
ändert sich die folgende den Cursor von einem Block zu einem Cursor und zeigt die aktuelle Zeile
Gutschrift: https://gist.github.com/andyfowler/1195581
quelle
terminal-overrides
nur angehängt wurden, damit der,*:Ss=\E[%p1%d q:Se=\E[2 q
Teil von nicht überlastet wurdeterminal-overrides
. so sieht meine Konfiguration ausset -sa terminal-overrides ",xterm-256color-italic:Tc"
(um die 24-Bit-Um die Form des Cursors in verschiedenen Modi zu ändern, können Sie Ihrem vimrc Folgendes hinzufügen.
Für das Gnome-Terminal (Version 2.26) Bearbeiten
Wenn Sie in gnome-terminal mehr als ein Profil verwenden, müssen Sie dieses möglicherweise an Ihre Profile anpassen.
Für Konsole in KDE4Edit
Dies funktioniert mit mehreren Registerkarten und Fenstern.
http://vim.wikia.com/wiki/Change_cursor_shape_in_different_modes
quelle
set ttimeoutlen=0
Sie können das Terminus Vim Plugin ausprobieren :
quelle
Ich finde es nützlich, wenn der Cursor nur im Einfügemodus blinkt und in anderen Modi statisch ist.
quelle
Ich bin mir nicht sicher, ob jemand anderes nach dem Schlagen eine Verzögerung hat
ESC
Ich bin Taste , um zum normalen Modus zurückzukehren und den Blockcursor anzuzeigen. Wenn ja, behebe ich dies auch auf diese Weise.Eigentlich benutze ich iTerm2 und Vim in meinem Terminal auf dem Mac. Und wenn Sie in den Einfügemodus wechseln, ist der Cursor immer noch ein Block und verwirrt, wenn Sie sich im Einfügemodus oder im normalen Modus befinden.
Ich wollte im Einfügemodus eine dünne Linie als Cursor anzeigen und im normalen Modus wie MacVim zurück zum Blockieren. Und um dies zu tun, ist es ziemlich einfach. Fügen Sie dies einfach
.vimrc
wie hier beschrieben zu meiner Datei hinzu :Wie Sie jedoch sehen können, gab es eine Verzögerung beim Drücken
ESC
, um den Einfügemodus wieder in den normalen Modus zu verlassen und den Block erneut als Cursor anzuzeigen. Um das Problem zu beheben, habe ich Folgendes gefunden:Und jetzt funktioniert es ziemlich gut, wie Sie sehen können:
Ich hoffe es könnte jemand anderem helfen! 👻
quelle
Ich denke nicht, dass dies viel zu den Antworten beiträgt, die andere Leute bereits gegeben haben, aber ich wollte die Dinge irgendwie an einem Ort zusammenfassen und auch Links zu den relevanten Referenzen haben.
So
.vimrc
sieht der relevante Ausschnitt aus meinem aus:Hinweis: Die
'^['
Zeichen sind tatsächlich einESC
Steuerzeichen (Escape-Sequenz).quelle
Dies funktioniert ordnungsgemäß auf dem xfce4-Terminal:
Fügen Sie Ihrem Skript das folgende Skript hinzu
.vimrc
Kurz: Wie Sie wissen, speichert das xfce4-Terminal die Einstellungen in der
.config/xfce4/terminal/terminalrc
Datei. Das Skript ändert sichTERMINAL_CURSOR_SHAPE_BLOCK
zu,TERMINAL_CURSOR_SHAPE_IBEAM
wenn Sie sich im Einfügemodus befinden, und zurück zum Blockieren, wenn Sie den Einfügemodus oder vim verlassen. Fühlen Sie sich frei zu ändern ,IBEAM
um alles , was Sie wollen (BLOCK
,IBEAM
undUNDERLINE
verfügbar).quelle
Wenn Sie eine moderne Version von verwenden
nvim
und dies erreichen möchten, können Sie einige der oben aufgeführten ausgefallenen Problemumgehungen vermeiden.Die folgenden Einstellungen wechseln vom Blockcursor im normalen Modus zum Unterstreichen des Cursors beim Ersetzen zum Zeilencursor beim Einfügen.
Ich habe es geschafft, dies mit den folgenden Einstellungen zum Laufen zu bringen, die aus diesen beiden Quellen stammen.
Tui-Cursor-Form
guicursor
quelle
Normalerweise habe ich unter anderem den aktuellen VIM-Modus in der Statuszeile. Wenn Sie Einfachheit suchen, können Sie nur diese Informationen in der Statuszeile festlegen .
Normalerweise passieren die wirklich verrückten Dinge jedoch, wenn Sie die Feststelltaste gedrückt haben und sich im Befehlsmodus befinden (da hjkl jetzt HJKL sind - nur J und K reichen aus, um Ihnen die Haare auszureißen, wenn Sie nicht verstehen, was passiert
:h J
und um:h K
zu sehen was ich meine). Passen Sie einfach auf die Feststelltaste auf und es wird Ihnen die meiste Zeit gut gehen, IMO.quelle