É possível criar e usar menus no vim (baseado em terminal)?


18

Estou configurando caixas Linux virtualizadas (como servidores de desenvolvimento local) para desenvolvedores de uma empresa que é basicamente baseada no Windows, e alguns desenvolvedores fazem rachaduras negativas no vim (entre outras coisas). (Parece-lhes representar o Linux / Unix de alguma forma e provar que o ambiente é obtusamente difícil de usar.) Lembro-me de quando fui forçado a usar o vim (os administradores do sistema se recusaram a instalar o emacs!) E a difícil inicial curva de aprendizado, então sou um pouco solidária. Ocorreu-me que, em vez de apresentá-los nano(os quais eles provavelmente nunca passariam), seria possível configurar menus semelhantes a nano no vim para facilitar a transição. (Encontrei um arquivo .vimrc muito amigável para iniciantes para fornecer a eles, mas não possui nada como menus no estilo nano.)

O único problema é a única coisa que pude descobrir que afirma que é possível configurar menus no vim (não no gvim) não funcionou, e minhas tentativas de corrigir o problema me deixaram com mais um problema a ser resolvido. Antes de perder muito tempo, gostaria de saber se é de fato possível, pois parece haver muito pouca informação sobre como fazê-lo.


3
Agora, este é no Vim ajuda: :h console-menus.
Alexey #

@ Alexey: obrigado! é muito útil saber ... se eu rolar para a seção "5.2 Criando novos menus", que parece que fará o que eu quero.
Iconoclast

Respostas:


18

Sim, é possível. Você pode carregar menu.vim(as definições padrão do menu gvim) ou pode começar do zero e criar o seu próprio, e depois acessá-las :emenu. Porém, isso não fornece menus sempre visíveis como nano; permite navegar nos menus usando o preenchimento da guia da linha de comando.

Se o usuário não tiver um vimrc, você começará desativando a compatibilidade do vi:

:set nocompatible

Permitir a conclusão da linha de comando inteligente sobre <Tab>(activar listando todas as opções possíveis, e navegando os resultados com <Up>, <Down>, <Left>, <Right>, e <Enter>):

:set wildmenu

Faça prensas repetidas alternando entre todas as opções correspondentes:

:set wildmode=full

Carregue os menus padrão (isso aconteceria automaticamente no gvim, mas não no terminal vim):

:source $VIMRUNTIME/menu.vim

Após esses quatro comandos, você pode disparar manualmente a conclusão do menu invocando a conclusão da guia no :emenucomando, executando:emenu<space><tab>

Você pode navegar pelos resultados usando a tecla Tab, as teclas de seta e a tecla Enter (que expande submenus e seleciona itens). Você pode tornar isso mais conveniente, dando um passo adiante e vinculando um mapeamento para abrir o menu sem precisar digitar :emenutodas as vezes:

Faça o Ctrl-Z em um mapeamento agir como pressionar <Tab>interativamente na linha de comando:

:set wildcharm=<C-Z>

E faça uma ligação que invoque automaticamente a :emenuconclusão para você:

:map <F4> :emenu <C-Z>

2
Brilhante! Deixe-me saber como posso comprar uma cerveja para você!
Iconoclast

2

Eu mesmo tive o problema de não me lembrar de todos os comandos e combinações de teclas dos plugins que estou usando. Além disso, eu queria ter maneiras simples de executar comandos rapidamente, sem precisar definir novos mapeamentos de teclas ou inventar comandos para acessá-los.

Vim-Venu

Eu escrevi um pequeno plugin de menu do vim que permite definir menus para cada tipo de arquivo que você pode editar com o vim. Dessa forma, você pode definir a opção de menu 'Compilar' para diferentes tipos de arquivos e iniciar as instruções corretas para compilar o código, dependendo do arquivo que você está editando (.py, .c, .c ++, ...). Ou crie um submenu para comandos de plug-in 'Tabela' em um arquivo de remarcação.

Confira aqui: https://github.com/Timoses/vim-venu

Como observação: acho que todos deveriam escolher seu próprio editor de texto favorito. O Vim tem uma pequena barreira (que vale a pena aprender!). Se alguém não estiver disposto a aprender, o vim não será muito útil para essa pessoa.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.