¿Cómo puedo usar los atajos de Readline en la línea de comando vim?

15

Cuando estoy editando un comando Vim, me gustaría usar los mismos atajos que en Bash y cualquier otro REPL: M-bpara retroceder una palabra, M-Backspaceeliminar una palabra anterior, M-uconvertir la palabra a mayúsculas, C-kcortar hasta el final de la línea, etc. He podido configurar algunos de los comandos, usando :cmap, pero no todos.

¿Hay algún complemento o configuración que proporcione esto?

Lo sé cedit, pero me resulta engorroso cuando todo lo que necesito es ingresar un comando rápido.

Mihai
fuente
Waitaminute, ¿estás diciendo que usas Bash en modo Emacs aunque usas Vim como tu editor?
Kyle Strand
3
@KyleStrand Todavía no he visto a alguien que haya usado Bash en modo vi. Parece que la mayoría de los beneficios de los editores modales desaparecen cuando solo está limitado a una línea.
Mihai
1
Interesante. Solo uso Bash en modo Vi, aunque parece que el modo Emacs admite algunas cosas que el modo Vi no admite. Simplemente conozco las combinaciones de teclas Vi sin dejar de ignorar casi por completo las combinaciones de Emacs, y nunca he pensado que sea un problema lo suficientemente apremiante como para conocer los valores predeterminados.
Kyle Strand

Respuestas:

11

¿Hay algún complemento o configuración que proporcione esto?

Sí, el complemento rsi.vim :

Caracteristicas

  • Las asignaciones de línea de lectura se proporcionan en modo de inserción y en modo de línea de comando. El modo normal se omite deliberadamente.
  • Las asociaciones importantes de teclas Vim (como la finalización de Cn y Cp del modo de inserción) no se anulan.
  • Las asociaciones de teclas meta se proporcionan de una manera que funciona en la terminal sin los peligros de la reasignación de escape.
  • Cd, Ce y Cf se asignan de manera que realicen el comportamiento de Readline en el medio de la línea y el comportamiento de Vim al final. (Piénsalo.)
mMontu
fuente
1

¿Hay algún complemento o configuración que proporcione esto?

También hay readline.vim .

Es un complemento más nuevo que se centra exclusivamente en la línea de comandos. También implementa un subconjunto más grande de accesos directos de Readline y tiene el objetivo de implementar cada acceso directo exactamente como en Readline.

Lo que hace que este complemento sea diferente de los complementos similares es que implementa un subconjunto más grande de las asignaciones de Readline, y que hace un mejor trabajo al imitar el comportamiento de Readline para cada comando.

Los comandos de movimiento y eliminación de palabras tienen un comportamiento diferente entre Vim y Readline. La mayor diferencia es que en Readline la puntuación siempre se omite cuando se busca un límite de palabra. Otra diferencia es que _ (guión bajo) se trata como un delimitador de palabras. Este complemento implementa el comportamiento de Readline para el movimiento de palabras y los comandos de eliminación.

wefwefa3
fuente
1
Me sorprende que haya alguien buscando este tipo de cosas. Es tan fácil usar el modo vim de readline que creo que todos los usuarios regulares de vim lo harían. (No encuentro los comandos adicionales en modo emacs tan convincentes). Pero tal vez el "cómo" no es tan conocido (... y tal vez tengo suerte de que el primer bashrc que vi / copié ... Hace muchos años más de lo que me gustaría admitir ... tenía set -o vim:)
Capa B