Chciałbym wiedzieć, jak zmienić, jeśli to możliwe, kursor w Vimie (w kolorze, kształcie itp.) W zależności od trybu, w którym się znajdujesz.
Ciągle zapominam, że nie jestem w trybie wstawiania i zaczynam pisać kod, co skutkuje różnego rodzaju szalonymi rzeczami. Byłoby pomocne, gdyby kursor zawierał jakieś wizualne wskazanie.
Odpowiedzi:
Popularną opcją wskazującą przejście do iz trybu Insert jest przełączanie
cursorline
opcji, która odpowiada za to, czy bieżąca linia ekranu jest podświetlona (patrz:help cursorline
):lub alternatywnie
Zmodyfikuj
CursorLine
grupę podświetlenia, aby zmienić styl linii kursora według własnych upodobań (zobacz:help :highlight
i:help highlight-groups
).źródło
cursorline
opcja nie zależy od możliwości specyficznych dla platformy; jest dostępny na każdej instancji Vima skompilowanej z tą+syntax
funkcją (co zwykle ma miejsce).echo 'autocmd InsertEnter,InsertLeave * set cul!' >>~/.vimrc
Poniższe działa w xterm, urxvt i innych emulatorach terminali w systemie Linux; iTerm2 na macOS; Git Bash z ConEmu w systemie Windows; i więcej (patrz komentarze):
Inne opcje (zamień numer po
\e[
):Kiedy używasz tmux , ważne jest, aby używać go w ten sposób (bez
\<Esc>Ptmux;
ucieczki). tmux będzie śledzić prawidłowy kształt kursora po przełączeniu okien / paneli.Jeśli to nie zadziała, spróbuj ustawić
TERM=xterm-256color
przed uruchomieniem tmux lub dodaj to do swojego.tmux.conf
( dzięki @Steven Lu ):źródło
set -ga terminal-overrides ',*:Ss=\E[%p1%d q:Se=\E[2 q'
w mojej konfiguracji tmux. Najwyraźniej jeśli użyjeszset
forterminal-overrides
without-a
, nadpisze to ustawienie, które już to ma tam domyślnie.Jeśli używasz tmux i iTerm2 na macOS ,
poniższy kod zmienia kursor z bloku na kursor i podświetla bieżącą linię
kredyt: https://gist.github.com/andyfowler/1195581
źródło
terminal-overrides
była tylko dołączana, więc nie blokowała,*:Ss=\E[%p1%d q:Se=\E[2 q
częściterminal-overrides
. tak wygląda moja konfiguracjaset -sa terminal-overrides ",xterm-256color-italic:Tc"
(aby ustawić 24-bitowy kolor bez deptania stylów kursora Ss / Se.Aby zmienić kształt kursora w różnych trybach, możesz dodać do swojego
.vimrc
pliku następujące elementy.W przypadku terminala GNOME (wersja 2.26):
Jeśli używasz więcej niż jednego profilu w terminalu GNOME, być może będziesz musiał dostosować to do swoich profili.
Konsole w KDE4:
Działa to z wieloma kartami i oknami.
Zobacz także: „ Zmień kształt kursora w różnych trybach ” na Vim Tips Wiki .
źródło
set ttimeoutlen=0
Możesz wypróbować wtyczkę Terminus Vim :
źródło
Uważam, że przydatne jest mruganie tylko kursora w trybie wstawiania i utrzymywanie go statycznie w innych trybach.
źródło
Nie jestem pewien, czy ktoś inny napotyka opóźnienie po naciśnięciu Escklawisza, aby wrócić do trybu normalnego i wyświetlić kursor blokowy, ale jeśli tak, to też to naprawiam.
Właściwie używam iTerm2 i używam Vima w moim terminalu na macOS. A kiedy wchodzisz do trybu wstawiania, kursor nadal jest blokiem i jest trochę mylący, gdy jesteś w trybie wstawiania lub trybie normalnym.
Chciałem pokazać cienką linię jako kursor w trybie wstawiania iz powrotem do bloku w trybie normalnym, tak jak robi to MacVim. Aby to zrobić, jest to całkiem proste, po prostu dodałem to do mojego
.vimrc
pliku, jak opisano tutaj :Ale jak widać, było opóźnienie po naciśnięciu przycisku,
ESC
aby wyjść z trybu wstawiania z powrotem do trybu normalnego i ponownie wyświetlić blok jako kursor. Aby to naprawić, znalazłem to:A teraz działa całkiem nieźle, jak widać:
Mam nadzieję, że pomoże to komukolwiek innemu! 👻
źródło
Nie wydaje mi się, żeby to dodało wiele do odpowiedzi, których już udzieliły inne osoby, ale chciałem jakoś podsumować wszystko w jednym miejscu, a także mieć linki do odpowiednich odniesień.
Tak wygląda odpowiedni fragment z mojego
.vimrc
wyglądu:Uwaga:
'^['
Znaki są w rzeczywistości jednymESC
znakiem sterującym (sekwencja ucieczki).źródło
Działa to poprawnie na terminalu xfce4:
dodaj następujący skrypt do swojego
.vimrc
Brief: Jak wiesz xfce4-końcowy utrzymuje preferencje w
.config/xfce4/terminal/terminalrc
pliku. Skrypt zmienia sięTERMINAL_CURSOR_SHAPE_BLOCK
naTERMINAL_CURSOR_SHAPE_IBEAM
kiedy jesteś w trybie wstawiania i wraca do blokowania kiedy wychodzisz z trybu wstawiania lub vim'a. Krępuj się zmienićIBEAM
na cokolwiek chcesz (BLOCK
,IBEAM
iUNDERLINE
jest dostępny).źródło
Jeśli używasz nowoczesnej wersji programu
nvim
i chcesz to osiągnąć, możesz uniknąć niektórych z tych wymyślnych obejść wymienionych powyżej.Poniższe ustawienia przełączą się z kursora blokowego w trybie normalnym na kursor podkreślony przy zamianie na kursor liniowy przy wstawianiu.
Udało mi się to uruchomić z następującymi ustawieniami pobranymi z tych dwóch źródeł.
tui-kształt-kursora
guicursor
źródło
Zwykle mam między innymi aktualny tryb vima na statusline. Jeśli szukasz prostoty, możesz ustawić tylko te informacje w linii stanu .
Jednak zazwyczaj naprawdę szalone rzeczy zdarzają się, gdy masz wciśnięty Caps Lock i jesteś w trybie poleceń (ponieważ hjkl to teraz HJKL - wystarczy J i K, aby wyrywać włosy, gdy nie rozumiesz, co się dzieje.
:h J
i:h K
zobaczyć, co mam na myśli). Tylko uważaj na klawisz Caps Lock, a przez większość czasu IMO będzie dobrze.źródło