vim editando / alternando entre vários arquivos eficientemente em grandes estruturas de diretórios

11

Eu não sou de forma alguma um usuário de energia vim, estou apenas começando a entender os movimentos e comandos avançados com o vim. Mas há uma desvantagem que eu não consigo entender.

Eu cresci com programas gráficos para escrever código, mas recentemente comecei a usar o vim sobre o ssh & tela para trabalhar em projetos relativamente grandes com muitas pastas.

Estou curioso para saber o que os mestres de vim fazem para trabalhar com vários arquivos de maneira rápida e fácil. Considere um aplicativo de trilhos como um exemplo. Digamos que você queira editar um controlador para executar.

vim app/controllers/controller.rb

Mas depois você quer mudar rapidamente para editar uma visualização ou uma migração do banco de dados, meu primeiro instinto é :wq , retornar ao bash para navegar para esse diretório e iniciar o vim novamente em um novo buffer.

Isso obviamente está errado.

Eu aprendi sobre várias coisas como:

  • O servidor de clientes (mas eu não quero usar o X sobre o ssh e este parece ser o único caminho)
  • :e para abrir outro arquivo navegando, mas não consigo fazer isso muito rapidamente. Tab complete realmente me engana.
  • Abrindo um diretório inteiro e pesquisando os buffers.
  • O NERDTree é promissor, mas eu realmente quero ficar longe de qualquer representação gráfica para continuar me forçando a dominar a navegação da linha de comando

Peço desculpas por ser ingênuo, mas eu realmente quero aprender a maneira correta de fazê-lo, mesmo que seja muito subjetivo.

Quais são seus métodos e o que você recomendaria?

    
por febs 11.06.2011 / 04:14

5 respostas

7

É possível configurar o vim para editar vários arquivos sem precisar sair. Você usa vários buffers e alterna entre eles. Já que você está usando o vim dentro da tela Você pode colocar o seguinte no seu ~ / .vimrc para habilitar isso.

   set hidden
   syntax enable
   source $VIMRUNTIME/menu.vim
   set wildmenu
   set cpo-=<
   set wcm=<C-Z>
   map <F4> :emenu <C-Z>
   nmap <Esc>[5D :bp<CR>
   nmap <Esc>Od  :bp<CR>
   nmap <Esc>OD  :bp<CR>
   nmap <Esc>[5C :bn<CR>
   nmap <Esc>Oc  :bn<CR>
   nmap <Esc>OC  :bn<CR>
   nmap <Esc>[3~ :bd<CR>
   nmap ZZ :bd<CR>

Esses mapeamentos de teclas são mapeados para as teclas de seta Ctrl-Esquerda e Direita para alternar entre os buffers. A tecla F4 invoca o mesmo menu que a GUI mostraria. Pressionar a guia também exibe um pequeno menu para selecionar a conclusão quando sua guia de imprensa.

    
por 11.06.2011 / 08:04
4

Hah! Eu costumava ser exatamente como você, então eu sei exatamente de onde você vem. Mesmo agora que eu sei o que estou fazendo até certo ponto (não sou vim deus, mas espero chegar lá) eu ainda ocasionalmente faço um: wq e volto para a minha concha.

Verifique isso - isso pode ajudá-lo. (Isso também me ajudará, já que eu nunca soube disso. Isso é o que é incrível sobre os sites do stackexchange - você aprende ajudando os outros a aprender!)

Aqui estão algumas coisas que eu faço.

  1. O comando :e . De dentro do vim, ao editar um arquivo, você pode fazer algo como :e dir/subdir/otherfile e ele será aberto em um novo buffer, o que significa que você terá dois arquivos abertos ao mesmo tempo.

  2. Ctrl-Shift-6 (não sabe os valores reais do ascii). Se você tiver dois buffers abertos, poderá alternar entre eles em um flash com essa alternância.

  3. bd - exclusão do buffer. Permite limpar um buffer.

  4. Este é realmente muito útil - :sh . Se você tiver que voltar para um shell por algum motivo (digamos, para olhar um diretório e chmod um arquivo), você pode invocar o comando shell do vim para fazer exatamente isso. Sair do shell leva você de volta para onde você estava no vim.

  5. Na mesma categoria como acima - digitar :! e um comando unix depois executará esse comando. Tente isso com ls . (Eu acho que também funciona com builtins shell, mas não tenho certeza.)

Esses são os que eu uso o tempo todo. Há também :n para o próximo, e :p para o arquivo anterior, já que você pode ter mais de dois buffers abertos no vim de uma vez (eu normalmente não faço isso, no entanto).

    
por 11.06.2011 / 05:09
2

É aí que você começa a usar plugins . Para gerenciamento de arquivos (ou buffer) árvore NERD e MiniBufExplorer são escolhas comuns. No seu caso, eu iria google " vim ruby ide " e seguiria um dos muitos tutoriais que eu encontrar. Eu uso o Python e os 3 comandos em este tutorial configura tudo o que eu preciso do Vim.

    
por 11.06.2011 / 05:00
2

Também recomendo o uso de janelas divididas para visualizar vários arquivos de uma só vez. Adicione algumas habilidades com o gerenciamento de Buffer e Window no VIM, e você será um ninja do VIM em um piscar de olhos.

Para a documentação propriamente dita, vou encaminhá-lo para a Documentação do VIM para Windows , mas vou tentar dar-lhe uma vantagem aqui.

Inicie o VIM com 2 (ou mais) janelas divididas horizontalmente, a janela superior tem o arquivo1, a próxima janela abaixo tem o arquivo2, etc.

vim -o <file1> <file2> (file3 file4 ...)

Inicie o VIM com 2 (ou mais) janelas divididas verticalmente, a janela mais à esquerda tem o arquivo1, a próxima janela do arquivo2, etc.

vim -O <file1> <file2> (file3 file4 ...)

Mover o cursor para uma janela diferente:

CTRL-W <vim direction key> (h=left, j=up, k=down, l=right)

Já está editando um arquivo, mas deseja dividir a janela e editar um arquivo diferente também:

:split <file2>
:vsplit <file2>

Para divisão horizontal e vertical, respectivamente.

Também existem comandos para mover janelas, redimensioná-las etc.

    
por 03.04.2012 / 20:41
1

Use o comando vi: split para abrir uma segunda janela de edição. split pode fazer divisões horizontais e verticais e mais de duas de cada vez. Eu tive até 10 arquivos abertos na mesma sessão do vi.

    
por 03.04.2012 / 19:05

Tags