intellij vim ideavim

intellij - ¿Hay alguna manera de que IdeaVIM respete las asignaciones de mi archivo.vimrc?



vim intellij (8)

Recientemente me incorporé a vim a lo grande (nuevamente), y ahora tengo .vimrc personalización en mi archivo .vimrc . Me doy cuenta de que no todo tiene sentido en el contexto de un plugin de IDEA, pero realmente me gustaría que cosas como la reasignación de jj a Esc fueran recogidas y honradas. ¿Hay una manera de hacer eso? Sin necesidad de modificar manualmente todo eso en el mapa de teclas de IDEA, eso es.

Gracias.


Acabo de descubrir cómo hacer esto ayer. Pude vincular simbólicamente mi .vimrc con mi configuración de ideavim ejecutando el siguiente comando:

ln -s $HOME/.vimrc $HOME/.ideavim


Actualización: ¡Sí! Ver la respuesta a below .

Respuesta corta: no.

He intentado hacer esto también especialmente porque tengo un .vimrc bastante complejo .vimrc que me he acostumbrado a lo largo de los años.

De todos modos, hay una solución (tipo de). La configuración de IdeaVim se almacena en un archivo llamado vim.xml en la .IntelliJIdea10/config/keymaps dentro de su carpeta de inicio ( C:/Users/<user_name> en Windows). Puede editar el XML para agregar cosas que desee. Por ejemplo, agregué las siguientes líneas para guardar un archivo al presionar F2 lugar de escribir :w! :

<action id="SaveAll"> <keyboard-shortcut first-keystroke="F2"/> </action>

Sin embargo, no veo cómo podemos agregar cosas como funciones o configuraciones de vim (que es lo que normalmente usaría un .vimrc ).

PD Esto podría explicar por qué no se usa un .vimrc (el énfasis es mío):

Para los curiosos, el complemento se escribe sin ninguna referencia al código fuente de VIM (excepto para el manejo de expresiones regulares). Básicamente estoy usando la excelente documentación de VIM y el propio VIM como referencia para verificar el comportamiento correcto.
Fuente: http://ideavim.sourceforge.net/


De acuerdo con la descripción en el repositorio del complemento ( https://github.com/JetBrains/ideavim ), puede lograrlo creando un archivo " ~ / .ideavimrc " con su contenido:

source ~/.vimrc


IdeaVim ahora (al menos tan pronto como 0.35) admite un número limitado de comandos establecidos , así como también mapas y sus variaciones. Para obtenerlos de forma automática, ponga su configuración en ~ / .ideavimrc.


Para que funcione en Windows 7, cree .ideavimrc en C: / Users [username]

Trabajó para mi.


Parece que el problema de IdeaVIM # VIM-288 (editar, actualizar: ver la respuesta de jbyler , VIM-288 ahora reparado) resolverá tu problema cuando eso se solucione. Yo también estaba buscando una forma de tener el modo de inserción de salida ''jk'' en lugar de usar la tecla Escape. No soy un experto en complementos IntelliJ, pero logré modificar el código fuente de IdeaVIM para que el acceso directo ''jk'' estuviera codificado allí. Todo lo que tenía que hacer entonces era volver a implementar el complemento y usarlo en lugar de la versión oficial. Así es como lo hice:

  1. Toma el código fuente de IdeaVIM.

    https://github.com/JetBrains/ideavim

  2. Puede seguir las instrucciones en "Desarrollo" en esa página para configurar su entorno de desarrollo para el complemento.

  3. Ahora que su proyecto IdeaVIM está todo configurado, abra este archivo: com.maddyhome.idea.vim.key.RegisterActions.java

  4. Parece que este archivo tiene todos los comandos del modo Visual / Insertar / Normal y sus correspondientes enlaces de teclas. Para mi ejemplo de cambiar el enlace de la tecla "salir de modo de inserción", busque "VimInsertExitMode". Deberá agregar una línea a este bloque de código para su nuevo acceso directo.

  5. Así es como la sección del código se encargó de editarlo:

    parser.registerAction(KeyParser.MAPPING_INSERT, "VimInsertExitMode", Command.Type.INSERT, new Shortcut[]{ new Shortcut(KeyStroke.getKeyStroke(''['', KeyEvent.CTRL_MASK)), new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_MASK)), new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0)), new Shortcut("jk"), new Shortcut(new KeyStroke[]{KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SLASH, KeyEvent.CTRL_MASK), KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_MASK)}) });

  6. Ahora implementa el proyecto (crea un .jar) y agrégalo a tu carpeta de complementos; Seguí estas instrucciones para referencia:

    http://confluence.jetbrains.com/display/IDEADEV/Getting+Started+with+Plugin+Development#GettingStartedwithPluginDevelopment-anchor5

  7. Es posible que deba guardar su archivo Vim.xml desde su carpeta de mapas de teclas, no estoy seguro. Eliminé el mío y luego fue rehecho cuando reinicié IntelliJ.

  8. ¡Darle un giro! ¡Debería poder usar ''jk'' como el atajo del modo de inserción de salida ahora!


Respuesta actualizada: la versión 0.35 de IdeaVim (publicada el 15-05-2015) lee la configuración y las ~/.ideavimrc de teclas de ~/.ideavimrc . Puedes poner source ~/.vimrc en ese archivo si quieres incluir mappings desde ~/.vimrc .

0.33 y 0.34 leer ~/.vimrc directamente.

0.33 (lanzado el 2014-04-28) fue la primera versión en implementar VIM-288 , incluyendo cosas como asignar j j a ESC . Funciona muy bien, y hay una nueva sección de Emulación de Vim en las preferencias de IDEA que enumera todos los conflictos entre las asignaciones ~/.vimrc y las asignaciones de Intellij, y le permite resolver los conflictos asignando las claves a IDEA o IdeaVim. Aquí está el anuncio de lanzamiento en twitter.

(Nota: no soy el autor, solo un usuario satisfecho).


Ya sabes, he tenido cierto éxito con .vimrc en mi carpeta de inicio en Windows, por lo que normalmente es C: / Users / yourLogin. Parece que es por diseño. Oleg menciona que IdeaVIM utiliza un subconjunto de comandos VIm aquí.

http://youtrack.jetbrains.com/issue/VIM-134#tab=Comments

Parece que debe iniciar sesión para ver comentarios en el sistema youtrack.

Oleg Shpynov 15 de agosto 2011 18:12

El complemento IdeaVIM carga algunos datos de configuración del archivo .vimrc, sin embargo, el soporte de vim plugins no está y no estará disponible, ya que requiere reescribir todo el tiempo de ejecución VIM dentro del complemento IdeaVim.

Tenga en cuenta que debe nombrar el archivo .vimrc, no _vimrc, si está en Windows, donde podría esperar lo último.

Funciona con set ignorecase al menos!