
Estou configurando caixas Linux virtualizadas (como servidores de desenvolvimento locais) para desenvolvedores de uma empresa que é principalmente baseada no Windows, e alguns desenvolvedores fazem críticas negativas sobre o vim (entre outras coisas). (Parece-lhes que representa o Linux/Unix de alguma forma e prova que o ambiente é obtusamente difícil de usar.) Lembro-me de quando fui forçado a usar o vim pela primeira vez (os administradores de sistemas se recusaram a instalar o emacs!) e a dificuldade inicial curva de aprendizado, então sou um tanto simpático. Ocorreu-me que, em vez de apresentá-los nano
(o que 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 ele não possui nada parecido com menus no estilo nano.)
O único problema é a única coisa que consegui 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 para resolver. Antes de perder muito tempo gostaria de saber se isso é de fato possível, pois parece haver muito pouca informação sobre como fazê-lo.
Responder1
Sim, é possível. Você pode carregar menu.vim
(as definições de menu padrão do gvim) ou simplesmente começar do zero e criar as suas próprias e acessá-las através do :emenu
. No entanto, isso não oferece menus sempre visíveis do tipo nano; oferece a capacidade de navegar pelos menus usando o preenchimento de guias da linha de comando.
Se o usuário não tiver um vimrc, você vai querer começar desabilitando a compatibilidade do vi:
:set nocompatible
Ative a conclusão inteligente da linha de comando <Tab>
(permita listar todas as opções possíveis e navegar pelos resultados com <Up>
, <Down>
, <Left>
, <Right>
e <Enter>
):
:set wildmenu
Faça pressionamentos repetidos para alternar 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 acionar manualmente a conclusão do menu invocando a conclusão da guia no :emenu
comando, fazendo:emenu<space><tab>
Você pode navegar pelos resultados usando a tecla Tab e as teclas de seta e a tecla Enter (ela 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 :emenu
todas as vezes:
Faça 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 :emenu
a conclusão para você:
:map <F4> :emenu <C-Z>
Responder2
Eu mesmo tive o problema de não conseguir me lembrar de todos os comandos e combinações de teclas dos plug-ins 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-Vênu
Eu escrevi um pequenoplug-in de menu vimque permite definir menus para cada tipo de arquivo que você pode editar com o vim. Desta forma, você pode definir a opção de menu 'Compile' 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 do plugin 'Tabela' em um arquivo markdown.
Confira aqui: https://github.com/Timoses/vim-venu
Como observação lateral: acho que todos deveriam escolher seu 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.