¿Es posible crear y usar menús en vim (basado en terminal)?

18

Estoy configurando cajas de Linux virtualizadas (como servidores de desarrollo local) para desarrolladores en una empresa que se basa principalmente en Windows, y algunos de los desarrolladores hacen grietas negativas sobre vim (entre otras cosas). (Les parece que representan Linux / Unix de alguna manera y demuestran que el entorno es difícil de usar). Recuerdo cuando me vi obligado a usar vim por primera vez (¡los administradores de sistemas se negaron a instalar emacs!) Y la difícil inicial curva de aprendizaje, así que soy algo comprensivo. Se me ocurrió que, en lugar de presentarles nano(que probablemente nunca pasarían), sería posible configurar menús similares a nano en vim para facilitar la transición. (He encontrado un archivo .vimrc muy amigable para principiantes para darles, pero no tiene nada como menús de estilo nano).

El único problema es que lo único que he podido encontrar es que las afirmaciones de que es posible configurar menús en vim (no gvim) no funcionaron, y mis intentos de corregir el problema me dejaron con otro problema por resolver. Antes de perder mucho tiempo, me gustaría saber si de hecho es posible, ya que parece haber muy poca información sobre cómo hacerlo.

iconoclasta
fuente
3
Ahora bien, esto es, en Vim ayuda: :h console-menus.
Alexey
@Alexey: gracias! eso es muy útil saber ... si me desplazo hacia abajo a la sección "5.2 Crear nuevos menús" que parece que hará lo que quiero.
iconoclasta

Respuestas:

18

Sí, es posible. Puede cargar menu.vim(las definiciones de menú de gvim predeterminadas), o simplemente puede comenzar desde cero y crear las suyas propias, y luego acceder a ellas a través :emenu. Sin embargo, esto no le da menús nano-siempre visibles; le brinda la posibilidad de navegar por los menús mediante la finalización de la pestaña de la línea de comandos.

Si el usuario no tiene un vimrc, querrá comenzar deshabilitando la compatibilidad con vi:

:set nocompatible

Habilitar la terminación de línea de comandos inteligente en <Tab>(habilitar una lista de todas las opciones posibles, y navegar por los resultados con <Up>, <Down>, <Left>, <Right>, y <Enter>):

:set wildmenu

Haga ciclos de prensas repetidas entre todas las opciones coincidentes

:set wildmode=full

Cargue los menús predeterminados (esto sucedería automáticamente en gvim, pero no en terminal vim):

:source $VIMRUNTIME/menu.vim

Después de esos cuatro comandos, puede activar manualmente la finalización del menú invocando la finalización de tabulación en el :emenucomando, haciendo:emenu<space><tab>

Puede navegar por los resultados con la tecla de tabulación y las teclas de flecha, y la tecla Intro (expande los submenús y selecciona los elementos). Luego puede hacer que sea más conveniente yendo un paso más allá y vinculando una asignación para abrir el menú sin tener que escribir :emenucada vez:

Haga que Ctrl-Z en un mapeo actúe como presionar <Tab>interactivamente en la línea de comando:

:set wildcharm=<C-Z>

Y haga un enlace que invoque automáticamente la :emenufinalización para usted:

:map <F4> :emenu <C-Z>
Godlygeek
fuente
2
¡Brillante! ¡Hazme saber cómo puedo comprarte una cerveza!
iconoclasta
2

Yo mismo tuve el problema de que no puedo recordar todos los comandos y combinaciones de teclas para los complementos que estoy usando. Además, quería tener formas simples de ejecutar comandos rápidamente sin tener que establecer nuevas asignaciones de teclas o inventar comandos para acceder a ellas.

Vim-Venu

He escrito un pequeño complemento de menú de vim que le permite definir menús para cada tipo de archivo que puede editar con vim. De esta manera, puede definir la opción de menú 'Compilar' para diferentes tipos de archivos e iniciar las instrucciones correctas para compilar el código dependiendo del archivo que esté editando (.py, .c, .c ++, ...). O cree un submenú para los comandos del complemento 'Tabla' en un archivo de descuento.

Compruébalo aquí: https://github.com/Timoses/vim-venu

Como nota al margen: creo que todos deberían elegir su propio editor de texto favorito. Vim tiene una pequeña barrera (¡que vale la pena aprender!). Si alguien no está dispuesto a aprender, entonces vim no será de mucha utilidad para esa persona.

Otti
fuente