Sei que posso abrir vários arquivos usando vimalgo como vim 2011-12*.log, mas como posso alternar entre arquivos e fechá-los um por vez? Além disso, como posso informar o nome do arquivo atual que estou editando?
Sei que posso abrir vários arquivos usando vimalgo como vim 2011-12*.log, mas como posso alternar entre arquivos e fechá-los um por vez? Além disso, como posso informar o nome do arquivo atual que estou editando?
Respostas:
Primeiro, no vim, você pode inserir :(dois pontos) e, em seguida help, ajudar , procure :helpuma lista de tópicos de auto-ajuda, incluindo um breve tutorial. Na lista de tópicos, mova o cursor sobre o tópico de seu interesse e pressione ctrl]e esse tópico será aberto.
Um bom lugar para você começar seria o tópico
|usr_07.txt| Editing more than one file
Ok, vamos à sua resposta.
Após iniciar o vim com uma lista de arquivos, você pode passar para o próximo arquivo digitando :nextou :nabreviando.
:wnexté a abreviação de escrever as alterações atuais e, em seguida, passa para o próximo arquivo.
Há também um análogo :previous, :wpreviouse :Next. (Observe que :pé abreviação de :print. A abreviação de :previousé :prevou :N.)
Para ver onde você está na lista de arquivos, digite :argse o arquivo que está sendo editado no momento aparecerá []entre colchetes.
Exemplo:
vim foo.txt bar.txt
:args
resultado:
[foo.txt] bar.txt
você pode abrir outro arquivo enquanto o vim estiver aberto com :tabe filenamee alternar para o outro arquivo digitado :tabnou :tabppara o próximo e o anterior de acordo.
Os atalhos de teclado gT e gt também podem ser usados para alternar entre guias quando você não está no modo de edição (ou seja, não está nos modos de inserção, substituição etc.). Em alguns sistemas, Ctrl+ Alt+ Page Upe Ctrl+ Alt+ Page Downtambém permitem a alternância de guias, mas isso nem sempre funciona (por exemplo, não funciona no terminal OS X 'pronto para uso').
E você pode ver o nome do arquivo na parte superior do aplicativo vim.
vim -p file1 file2
:argadd filenamee depois :nexta ele. Da mesma forma, você pode usar :argdel filenamepara remover um dos arquivos em edição.
Comandos para alternar entre buffers:
:bf # Go to first file.
:bl # Go to last file
:bn # Go to next file.
:bp # Go to previous file.
:bw # Close file.
:help buffer para encontrar mais informações
Para saber utilização filename Ctrl+ G, :fileou:f
:bwfechar arquivo haha. Não se esqueça de ler a ajuda :bwonde diz que você só deve usá-la se souber o que está fazendo. Não é um grande negócio, mas a menos que queira acabar com todas as marcas e informações sobre o arquivo, a melhor utilização :bdou :qcomo uma pessoa normal
:bwno caso de você estar curioso: vi.stackexchange.com/questions/2212/…
Outra opção, além das respostas dadas, é dividir a janela com:
:sp
:vsp
:vspé para divisão vertical. Em seguida, use Ctrl+W <ARROW_KEYS>para mover em painéis.
:vsvez de:vsp
Ctrl+W, vpara a divisão vertical e Ctrl+W, spara a horizontal.
CTRL+Whá anos e recentemente faço muita edição de VI em páginas da web. Toda vez que eu digito o comando sem nem pensar e ... whammmm ... a guia do navegador se foi! Eu continuo esquecendo. Eu realmente preciso aprender um novo atalho.
Fiz uma pergunta semelhante no superusuário,
"Como copiar e colar entre diferentes janelas do bash e arquivos abertos com o VI?"
A resposta para minha pergunta foi que você não pode, mas pode abrir dois arquivos em uma janela do bash usando o :splitcomando do VIM :
$ vim file1, abra um segundo arquivo no VIM usando o :split file2comando$ vim -o file1 file2do bash.:qfecha e :q!força fecha.Meu bash é preto e branco; portanto, o nome do arquivo de cada tela é denominado como uma linha 'selecionada' invertida com o nome do arquivo mencionado lá.
Woot!
Acho que o método mais conveniente de editar vários arquivos é usando guias. Você pode abrir vários arquivos em guias separadas através da linha de comando da seguinte maneira:
vim -p file1.txt file2.txt
Ou, se você já possui o vim aberto, pode abrir um novo arquivo em uma nova guia, como segue:
:tabe file2.txt
Depois de abrir as guias, use gtpara exibir a próxima guia e gTa guia anterior.
Você também pode pular para a primeira guia com 1gt, a segunda guia com 2gt, etc.
Você pode fechar as guias usando :tabc
Finalmente, você pode mover a guia atual para a nlocalização th com :ntabmonde né qualquer número maior ou igual a 0.
argadd a/b c/d e/f
argadd ...adicionará todos os arquivos aos argumentos e também a :ls/ :bufferse permitirá que você os edite.
Ver :h arglsit& :h argedit&:h argsd
Além disso, você pode executar determinadas ações apenas em args com :argdo ..., e você pode começar novamente com seus argumentos, fazendo :argsd*.
Há muitas maneiras de fazer isso. O primeiro, talvez o menos conveniente, é chamar vimos arquivos que você deseja editar - crie:
vim first_file second_file ...
Ele chama os dois arquivos em dois buffers. Para alternar de um arquivo para outro, use :ne :N. Para listar os arquivos que você está editando, :argsfará o trabalho. :help bufferirá ajudá-lo mais sobre isso.
Isso deve responder à sua pergunta. Mas aqui estão mais informações:
Existe uma maneira de editar seus arquivos de uma maneira mais conveniente, dividindo a tela do console usando o vim . Para fazer isso, abra dois quadros com :split( :sp) ou :vsplit( :vs) enquanto estiver usando o vim . Em seguida, navegue nesses quadros usando a combinação Ctrl+ W> Ctrl+ W. Também é possível usar Ctrl+ W+ a seta ou a tecla ( H, J, Kou L) correspondente para o quadro seguinte. Quando isso for feito, edite o arquivo que deseja :e file_name. :help opening-windowirá ajudá-lo mais sobre isso.
Agora, se você quiser ver as diferenças entre os arquivos, use o -dargumento ou chame o programa vimdiff (é o mesmo) com os arquivos correspondentes. :help diffirá ajudá-lo mais sobre isso.
vim -d first_file second_file ...
Entre em contato se tiver algum problema.
Eu gosto de usar janelas divididas - horizontais e verticais - para editar vários arquivos.
Eu uso o tmux para gerenciar essas janelas mais facilmente
https://tmux.github.io/ "O que é um multiplexador de terminal? Ele permite alternar facilmente entre vários programas em um terminal, desconectá-los (eles continuam sendo executados em segundo plano) e conectá-los novamente a um terminal diferente. muito mais. Consulte o manual. "
Exemplo: Examinando arquivos ou executando testes à direita, editando arquivos de teste e de origem à esquerda: 
:e #(filename) para alternar entre dois arquivos abertos
:p para arquivo anterior
:n para o próximo arquivo