css - Cursor vim vertical en modo de comando
osx terminal (2)
Creo que estás buscando set virtualedit=onemore
.
A comma separated list of these words:
block Allow virtual editing in Visual block mode.
insert Allow virtual editing in Insert mode.
all Allow virtual editing in all modes.
onemore Allow the cursor to move just past the end of the line
[...]
"onemore" is not the same, it will only allow moving the cursor just
after the last character of the line. This makes some commands more
consistent. Previously the cursor was always past the end of the line
if the line was empty. But it is far from Vi compatible. It may also
break some plugins or Vim scripts. For example because l can move
the cursor after the last character. Use with care!
Nunca noté ningún problema, por lo que parece razonablemente seguro a pesar de la advertencia.
Estoy en Mac y tengo mi cursor de terminal configurado en la opción de barra vertical. Sin embargo, en el modo de comando vim, el cursor es la barra vertical, pero no me deja usar hjkl para ir al final de la línea, siempre se detiene justo antes del final. Esto es especialmente molesto porque tiene que usar las teclas de flecha en el modo de inserción para hacer que el cursor vaya al final de la línea. Cualquier corrección sería apreciada
por ejemplo: hola worl | d, lo que quiero es hola mundo |
En caso de que esté utilizando iTerm2, hay un pequeño truco: puede cambiar automáticamente el cursor según su modo. Esto funciona mejor si su cursor predeterminado es el cursor de bloque, y solo quiere una barra vertical en modo insertar, pero lo mostraré de todos modos:
let &t_EI = "/<Esc>]50;CursorShape=0/x7"
let &t_SI = "/<Esc>]50;CursorShape=1/x7"
Esto le indica a vim que imprima esas cadenas al ingresar ( &t_SI
) y al salir ( &t_EI
) del modo de inserción. iTerm2 tiene un montón de códigos de escape propios que interpretan las cadenas como instrucciones para cambiar la forma del cursor.
Todo lo que tendrías que hacer es de alguna manera imprimir "/<Esc>]50;CursorShape=0/x7"
al iniciar vim y "/<Esc>]50;CursorShape=1/x7"
al salir de él. Para eso, puedes usar autocmds:
autocmd BufEnter * execute ''silent !echo -ne "'' . &t_EI . ''"''
autocmd VimLeave * execute ''!echo -ne "'' . &t_SI . ''"''
Esto cambia automáticamente la forma del cursor a un cuadro al ingresar vim, y luego lo restaura a una barra vertical al salir.