vim personalizado con comandos de emacs (solo modo de inserción)


10

Era un emacsusuario y tengo que cambiar a vim. Pero extraño algunos comandos básicos de emacs en vimmodo de inserción:

  1. C-A
  2. C-E
  3. C-K
  4. C-Y
  5. C-x C-s
  6. ... y alguna otra

Sé que puedo presionar Escapey luego presionar algunas de las siguientes teclas y finalmente presionar la tecla i:

  1. ^
  2. $
  3. d$
  4. p
  5. :w [Entrar]
  6. ...

Sin embargo, me gustaría permanecer en vimmodo de inserción y evitar presionar las teclas Escape/ i.

En la web, he encontrado personalizaciones de emacs( vi-mode, vip, viper, vimpulse, vim-mode, evil). Pero aún no se encuentra lo contrario: personalizar vimpara usar emacscomandos ...

Estoy interesado en los emacscomandos solo en vim modo de inserción . Sólo algunos comandos básicos, como bashlos comandos: C-A, C-E, C-K, C-Y, C-U... (sí C-U, no es un defecto emacsde comandos, pero me gusta demasiado).

Respuestas:


7

Estoy respondiendo a esta pregunta cuatro años después porque la respuesta proporcionada es una solución parcial que no aborda completamente la pregunta original.

Tengo exactamente el mismo deseo que olibre y quería encontrar una solución completa. Lo hago desde una perspectiva diferente: estoy acostumbrado a la edición de línea de Emacs en bash, pero el problema es el mismo. Quiero llevar eso al modo de inserción de Vim (solo).

A continuación se abordan todas las solicitudes de combinación de teclas en la pregunta original planteada por olibre, más algunos extras:

" Mimic Emacs Line Editing in Insert Mode Only
inoremap <C-A> <Home>
inoremap <C-B> <Left>
inoremap <C-E> <End>
inoremap <C-F> <Right>
" â is <Alt-B>
inoremap â <C-Left>
" æ is <Alt-F>
inoremap æ <C-Right>
inoremap <C-K> <Esc>lDa
inoremap <C-U> <Esc>d0xi
inoremap <C-Y> <Esc>Pa
inoremap <C-X><C-S> <Esc>:w<CR>a

Los únicos enlaces que parece que no puedo poner a trabajar en este momento son <Alt-B>y <Alt-F>, que omitirían palabras enteras. Cada vez que enlace <Esc>, <Alt>o <Meta>combinaciones, gVim (v7.4 en Windows) genera caracteres acentuados. Siéntase libre de editar esta respuesta si tiene una solución a este problema. He conseguido que las combinaciones Alt funcionen según la sugerencia de otra publicación de usar solo los caracteres especiales. Los he insertado arriba.

Editar

- (editar no es por cartel de respuesta original) -

Usé lo siguiente en Neovim y Windows 10. Es posible que deba cambiar la "A" por "M" en otros sistemas operativos, ya que "alt" podría ser "meta" en otro lugar. No he jugado con eso lo suficiente.

inoremap <A-x> <Esc>:
inoremap <A-f> <Esc>lwi
inoremap <A-b> <Esc>bi
inoremap <A-S-f> <Esc>lWi
inoremap <A-S-b> <Esc>Bi

Solo una pequeña sugerencia: creo <Esc>paque sería mejor para<C-Y>
Yamaneko

Parece <C-K>que no funciona cuando el cursor en el extremo izquierdo: debería eliminar toda la línea pero Esc>lDadejará sin borrar el primer carácter.
Ying Xiong

7

Puede asignar cualquier comando en modo de inserción a cualquier cosa usando el :imapcomando, o guardar la escritura usando :im. Para su primer mapeo, podría escribir (en modo normal):

:im <C-A> <esc>^i

Que pasa al modo normal (con escape), presiona ^para usted y vuelve al modo de inserción. Vea la ayuda para más información:

:help :imap o más corto: :h :im

Tenga en cuenta que puede estar sobrescribiendo las asignaciones de teclas existentes. Coloque los comandos en su .vimrcarchivo de configuración si desea que estén allí para cada documento.


gracias por tus consejos +1 :-) ¿Pero sabes si este tipo de mapeo ya se ha configurado? (por ejemplo, sin asignaciones de teclas existentes sobrescribir). ¿Dónde encontrar tal proyecto / configuración? Preferiría reutilizar algo ya hecho (y robusto), que intentar hacerlo yo mismo (y perder algo importante). Saludos
olibre

¿Debo hacer / mover mi pregunta a superuser.com ?
olibre

¡Gracias! Puede ver si existe un comando con el comando (lógico) :im <c-a>. Si dice 'No se encontró mapeo', no sobrescribirá nada. No creo que sea mucho más robusto que eso ...
Joker

Humm ... Tengo que codificar, probar mi configuración, luego corregir mis errores, y de nuevo ... Pero no conozco todos los vimcomandos ... Por favor, ¿sabes dónde puedo encontrar una lista de los :imúltimos argumentos? Para su información, yo también estoy acostumbrado con los siguientes bashcomandos: M-backspace, M-F, M-B, M-D... Será bueno si alguien ya ha hecho eso y comparte su trabajo, ¿verdad? (algo así como evil) Por lo tanto, podría reutilizar su :imasignación de teclas sin hacerlo yo mismo (propenso a errores). ¿Ves a lo que me refiero?
olibre

Puede que no entienda exactamente lo que quiere decir, pero puede encontrar todas las asignaciones de teclas no estándar escribiendo :im. Para hacer un comentario de nivel superior: si desea poder usar Vim en múltiples plataformas / computadoras sin tener que cargar siempre sus propios complementos, modos especiales o archivos vimrc, creo que lo mejor es aprender / usar los comandos estándar de Vim tanto como sea posible. Yo mismo hice varias asignaciones de teclas, pero siempre trato de encontrar la alternativa Vim estándar. Y puede ser bastante rápido. Una cosa que es el mapa <esc>a ;j, haciendo que su asignación nr 1 tan fácil como ;jIy NR 2 ;jA.
Joker

6

No es una respuesta completa, pero ¿conoce el llamado " modo fácil " de Vim ( vim -y)? Siempre está en modo de edición por defecto, y hace mucho de lo que desea, y no necesita que instale o personalice nada. Hace CTRL-A, C, V, X, Y etc. De la lista de claves :

Key mappings:
    <Down>      moves by screen lines rather than file lines
    <Up>        idem
    Q           does "gq", formatting, instead of Ex mode
    <BS>        in Visual mode: deletes the selection
    CTRL-X      in Visual mode: Cut to clipboard
    <S-Del>     idem
    CTRL-C      in Visual mode: Copy to clipboard
    <C-Insert>  idem
    CTRL-V      Pastes from the clipboard (in any mode)
    <S-Insert>  idem
    CTRL-Q      do what CTRL-V used to do
    CTRL-Z      undo
    CTRL-Y      redo
    <M-Space>   system menu
    CTRL-A      select all
    <C-Tab>     next window, CTRL-W w
    <C-F4>      close window, CTRL-W c

Una versión mucho más poderosa de esto es Cream , que reasigna muchas más teclas y hace que los comandos básicos sean similares a otros editores con los que puede estar familiarizado.

También está el complemento Vimacs , que habilita todas las asignaciones de teclas comunes de emacs. Es fácil de instalar y puede hacer lo que quieras (nunca lo he probado).


Muy interesante +1 :-) Leí / probé todos sus enlaces ... Le daré más comentarios más tarde. Gracias. Saludos
Olibre

1
Las teclas del «modo fácil» no tienen nada que ver con las de Emacs. Pero «vimacs» parece algo interesante. Acabo de instalar, y a pesar de ser viejo todavía funciona.
Hola Ángel
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.