Sei que posso abrir vários arquivos usando vim
algo 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 vim
algo 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 :help
uma 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 :next
ou :n
abreviando.
: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
, :wprevious
e :Next
. (Observe que :p
é abreviação de :print
. A abreviação de :previous
é :prev
ou :N
.)
Para ver onde você está na lista de arquivos, digite :args
e 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 filename
e alternar para o outro arquivo digitado :tabn
ou :tabp
para 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 filename
e depois :next
a ele. Da mesma forma, você pode usar :argdel filename
para 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, :file
ou:f
:bw
fechar arquivo haha. Não se esqueça de ler a ajuda :bw
onde 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 :bd
ou :q
como uma pessoa normal
:bw
no 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.
:vs
vez de:vsp
Ctrl+W, v
para a divisão vertical e Ctrl+W, s
para a horizontal.
CTRL+W
há 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 :split
comando do VIM :
$ vim file1
, abra um segundo arquivo no VIM usando o :split file2
comando$ vim -o file1 file2
do bash.:q
fecha 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 gt
para exibir a próxima guia e gT
a 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 n
localização th com :ntabm
onde 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
/ :buffers
e 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 vim
os 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 :n
e :N
. Para listar os arquivos que você está editando, :args
fará o trabalho. :help buffer
irá 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-window
irá ajudá-lo mais sobre isso.
Agora, se você quiser ver as diferenças entre os arquivos, use o -d
argumento ou chame o programa vimdiff (é o mesmo) com os arquivos correspondentes. :help diff
irá 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