Gostaria de saber, se possível, como mudar o cursor no Vim (em cor, forma, etc.) dependendo do modo em que você está.
Estou constantemente esquecendo que não estou no modo de inserção e começo a digitar o código, o que resulta em todo tipo de coisa maluca acontecendo. Seria útil se houvesse algum tipo de indicação visual no cursor.
Respostas:
Uma opção popular para indicar a mudança de e para o modo de inserção é alternar a
cursorline
opção, que é responsável por se a linha da tela atual é destacada (consulte:help cursorline
):ou alternativamente,
Modifique o
CursorLine
grupo de realce para alterar o estilo da linha do cursor de acordo com sua preferência (consulte:help :highlight
e:help highlight-groups
).fonte
cursorline
opção não depende de nenhum recurso específico da plataforma; ele está disponível em qualquer instância do Vim compilada com o+syntax
recurso (o que geralmente é o caso).echo 'autocmd InsertEnter,InsertLeave * set cul!' >>~/.vimrc
O seguinte funciona em xterm, urxvt e outros emuladores de terminal no Linux; iTerm2 no macOS; Git Bash com ConEmu no Windows; e mais (ver comentários):
Outras opções (substitua o número depois
\e[
):Quando você usa o tmux , é importante usá-lo assim (sem o
\<Esc>Ptmux;
escape). tmux manterá o controle da forma correta do cursor quando você alternar entre janelas / painéis.Se não funcionar para você, tente configurar
TERM=xterm-256color
antes de iniciar o tmux ou adicione ao seu.tmux.conf
( obrigado @Steven Lu ):fonte
set -ga terminal-overrides ',*:Ss=\E[%p1%d q:Se=\E[2 q'
em minha configuração tmux. Aparentemente, se você usarset
paraterminal-overrides
sem-a
, ele substituirá a configuração, que já está lá por padrão.Se você estiver usando tmux e iTerm2 no macOS ,
o seguinte muda o cursor de um bloco para um cursor e destaca a linha atual
crédito: https://gist.github.com/andyfowler/1195581
fonte
terminal-overrides
estava apenas sendo anexada, para que não prejudicasse a,*:Ss=\E[%p1%d q:Se=\E[2 q
parte determinal-overrides
. então minha configuração fica assimset -sa terminal-overrides ",xterm-256color-italic:Tc"
(para definir a ativação de cor de 24 bits sem atropelar os estilos de cursor Ss / Se.Para alterar a forma do cursor em diferentes modos, você pode adicionar o seguinte em seu
.vimrc
arquivo.Para o Terminal GNOME (versão 2.26):
Se você usa mais de um perfil no Terminal GNOME, pode ser necessário adaptá-lo aos seus perfis.
Para Konsole no KDE4:
Isso funciona com várias guias e janelas.
Consulte também: “ Alterar a forma do cursor em modos diferentes ” no Wiki do Vim Tips .
fonte
set ttimeoutlen=0
Você pode tentar o plug - in terminus vim :
fonte
Acho útil ter apenas o cursor piscando no modo Inserir e estático nos outros modos.
fonte
Não tenho certeza se alguém está enfrentando um atraso após atingir o Esc tecla para voltar ao modo normal para mostrar o cursor de bloco, mas se estiver, também corrijo este jeito.
Na verdade, estou usando o iTerm2 e o Vim dentro do meu terminal no macOS. E ao entrar no modo de inserção, o cursor continua sendo um bloco e fica meio confuso quando você está no modo de inserção ou modo normal.
Eu queria mostrar uma linha fina como cursor quando no modo de inserção e voltar para bloquear quando no modo normal, como o MacVim faz. E para fazer isso é muito simples, basta adicionar isso ao meu
.vimrc
arquivo conforme descrito aqui :Mas como você pode ver, houve um atraso ao pressionar
ESC
para sair do modo de inserção de volta ao modo normal e mostrar o bloco como cursor novamente. Então, para consertar, encontrei o seguinte:E agora funciona muito bem, como você pode ver:
Espero que possa ajudar mais alguém! 👻
fonte
Não acho que isso acrescente muito às respostas que outras pessoas já deram, mas eu queria de alguma forma resumir as coisas em um só lugar e também ter links para as referências relevantes.
É assim que o snippet relevante do meu se
.vimrc
parece:Nota: Os
'^['
caracteres são, na verdade, umESC
(sequência de escape) caractere de controle.fonte
Isso funciona corretamente no terminal xfce4:
adicione o seguinte script ao seu
.vimrc
Breve: Como você sabe, o xfce4-terminal mantém as preferências em
.config/xfce4/terminal/terminalrc
arquivo. O script mudaTERMINAL_CURSOR_SHAPE_BLOCK
paraTERMINAL_CURSOR_SHAPE_IBEAM
quando você está no modo de inserção e volta para bloquear quando você sai do modo de inserção ou vim. Sinta-se livre para mudarIBEAM
para qualquer coisa que você quer (BLOCK
,IBEAM
eUNDERLINE
disponível).fonte
Se você estiver usando uma versão moderna do
nvim
e quiser fazer isso, pode evitar algumas dessas soluções alternativas sofisticadas listadas acima.As configurações abaixo mudarão do cursor de bloco no modo normal, para o cursor de sublinhado em substituir para o cursor de linha em inserir.
Consegui fazer isso funcionar com as seguintes configurações extraídas dessas duas fontes.
tui-cursor-shape
guicursor
fonte
Normalmente, tenho o modo vim atual no statusline, entre outras coisas. Se você busca simplicidade, pode definir apenas essas informações na linha de status .
No entanto, geralmente as coisas realmente malucas acontecem quando você tem o caps lock pressionado e está no modo de comando (já que hjkl agora são HJKL - apenas J e K são suficientes para fazer você puxar os cabelos quando não entende o que está acontecendo.
:h J
e:h K
para ver o que quero dizer). Apenas tome cuidado com a tecla Caps Lock e você ficará bem na maior parte do tempo, IMO.fonte