Você está apenas tentando sair do VIM? Se for esse o caso, pressione "escape" e digite ': q'
pop
47
Não esqueça os dois pontos ! Você deve digitar :quite pressionar a [ENTER]tecla
Farahmand
88
É realmente fácil aprender o básico do vim, e está embutido no seu sistema. No terminal, digite "vimtutor". 25 minutos depois, você estará indo mais rápido do que o seu editor de texto usual!
Para evitar git commitenviá-lo para vim no futuro: git config --global core.editor="nano"
Tom Kelly
Respostas:
4904
Pressione a Esctecla para entrar no "modo normal". Em seguida, você pode digitar :para entrar no "modo de linha de comando". Dois pontos ( :) aparecerão na parte inferior da tela e você poderá digitar um dos seguintes comandos. Para executar um comando, pressione a Entertecla
:q sair (abreviação de :quit)
:q!sair sem salvar (abreviação de :quit!)
:wq escrever e sair
:wq! para escrever e sair mesmo se o arquivo tiver apenas permissão de leitura (se o arquivo não tiver permissão de gravação: forçar gravação)
:x escrever e sair (semelhante a :wq, mas somente escreva se houver alterações)
:exitpara escrever e sair (o mesmo que :x)
:qasair de tudo (abreviação de :quitall)
:cq sair sem salvar e fazer com que o Vim retorne um erro diferente de zero (ou seja, saia com erro)
Você também pode sair do Vim diretamente do "modo Normal" digitando ZZpara salvar e sair (igual a :x) ou ZQapenas sair (igual a :q!). (Observe que o caso é importante aqui. ZZE zznão significa a mesma coisa.)
O Vim tem uma ajuda abrangente - que você pode acessar com o :helpcomando - onde você pode encontrar respostas para todas as suas perguntas e um tutorial para iniciantes.
A menos que você tenha remapeado esc ou tenha um mapeamento estranho no seu .vimrc, ele definitivamente deveria. Se estiver no linux, digite xev e verifique se escape é o tipo de chave que você obtém ao pressionar escape.
dirvine
17
Lembre-se de que você pode usar ctrl + c se não puder usar Esc (como eu, porque meu shell está no TotalTerminal). Você
está em
25
:x== ZZmas :x! = :wq. :xescreva arquivo se o arquivo for alterado, :wqescreva sempre o arquivo (importa quando estiver usando inotify).
Hauleth
36
Para ser sincero, tenho mais dificuldade em usar o sistema de ajuda do vim do que usar o próprio vim e confio principalmente em cartões de referência rápida e documentação on-line.
bgvaughan
18
Se você não tem permissões no arquivo, mas têm permissões sudo:w ! sudo tee %
tvlooy
190
As imagens valem mil comandos e opções do Unix:
Eu desenho isso para meus alunos a cada semestre e eles parecem entender o vi depois.
Ao iniciar, o vi entra no modo COMMAND, onde você pode digitar comandos curtos, com poucos caracteres, às cegas . Você sabe o que está fazendo; isso não é para amadores.
Quando você realmente deseja editar o texto, deve entrar no modo INSERIR com algum comando de um caractere:
i: vá para INSERIR no lugar do cursor
I: vá para o modo INSERIR no início da linha
a: acrescentar após o cursor
A: acrescente no final da linha
o: abre uma nova linha abaixo da linha atual
O: abre uma nova linha no lugar da linha atual
Agora, respondendo à pergunta: saindo.
Você pode sair do vi do modo EX:
q: se você não fez nenhuma modificação ou as salvou antes
q !: ignora qualquer modificação e sai
wq: salvar e sair
x: isso é igual a wq
we xaceite um parâmetro de nome de arquivo. Se você iniciou o vi com um nome de arquivo, não precisa fornecê-lo aqui novamente.
Por fim, o mais importante: como você pode acessar o modo EX?
O modo EX é para comandos longos que você pode ver digitando na linha inferior da tela. No modo COMMAND, você pressiona dois pontos, :e dois pontos aparecerão na linha inferior, onde você pode digitar os comandos acima.
No modo INSERT, você precisa pressionar ESC, ou seja, o botão Escape, passando para o modo COMMAND e depois: para ir para o modo EX.
Se não tiver certeza, pressione ESC e isso o levará ao modo de comando.
Portanto, o método robusto é ESC -: - x-Enter, que salva seu arquivo e sai.
Obrigado, a imagem é muito útil. No entanto, para mim wnão muda do modo Ex para o comando, mas Escsim. O que estou fazendo errado?
amigos estão
2
Se você escrever w-Enter, o arquivo será salvo e voltará ao modo COMMAND. Eu escrevi para ter uma imagem completa dos comandos salvar e sair.
Gergely
3
oh, então você quer dizer :w. Então faz todo o sentido. A propósito, existe um comando para recarregar do disco (ou seja, reverter as alterações, mas não fechar o arquivo)? Nesse caso, pode ser o próximo wno diagrama.
Nick Volynkin
2
@Gergely Acabei de descobrir a confusão! A partir dos documentos, o modo normal também é chamado de modo de comando ! Então, modo de comando! = Modo de linha de comando. Uau!
jpaugh
2
@NickVolynkin o comando para recarregar a partir do disco é :e(ou mais provável :e!, uma vez que irá avisá-lo sobre alterações não salvas sem a !)
JDS
177
Antes de digitar um comando, atingiu a Escchave . Depois de inseri-lo, pressione o Returnpara confirmar.
Escfinaliza o comando atual e alterna o Vim para o modo normal . Agora, se você pressionar :, o botão :aparecerá na parte inferior da tela. Isso confirma que você está realmente digitando um comando e não editando o arquivo.
A maioria dos comandos tem abreviaturas, com parte opcional entre colchetes: c[ommand].
Os comandos marcados com '*' são apenas para o Vim (não implementados no Vi).
Encerramento seguro (falha se houver alterações não salvas):
:q[uit] Sair da atual janela . Saia do Vim se esta for a última janela. Isso falha quando alterações foram feitas no buffer atual .
:qa[ll]Saia de todas as janelas e Vim, a menos que haja alguns buffers que foram alterados.
Prompt-quit (solicita se houver alterações não salvas)
:conf[irm] q[uit]* Saia, mas avise quando houver alguns buffers que foram alterados.
:conf[irm] xa[ll]* Escreva todos os buffers alterados e saia do Vim. Exiba um prompt quando alguns buffers não puderem ser gravados.
Escreva (salve) as alterações e saia:
:wqEscreva o arquivo atual (mesmo que não tenha sido alterado) e saia. A gravação falha quando o arquivo é somente leitura ou o buffer não tem um nome.:wqa[ll]* para todas as janelas.
:wq! O mesmo, mas grava até arquivos somente leitura. :wqa[ll]!* para todas as janelas.
:x[it], ZZ(com detalhes ). Escreva o arquivo apenas se ele tiver sido alterado e encerrado :xa[ll]* para todas as janelas.
Descartar alterações e sair:
:q[uit]!ZQ* Saia sem escrever, também quando os buffers visíveis tiverem alterações. Não sai quando há buffers ocultos alterados.
:qa[ll]!*, :quita[ll][!]* Saia do Vim, todas as alterações nos buffers (incluindo ocultos) são perdidas.
Pressione Returnpara confirmar o comando.
Esta resposta não faz referência a todos os comandos e argumentos de gravação e encerramento do Vim. De fato, eles são referenciados na documentação do Vim .
O Vim possui uma ampla ajuda interna, digite Esc:helpReturnpara abri-lo.
Essa resposta foi inspirada na outra , originalmente criada por @dirvine e editada por outros usuários do SO. Incluí mais informações da referência do Vim, comentários de SO e algumas outras fontes. As diferenças para Vi e Vim também são refletidas.
Se você deseja sair sem salvar no Vim e fazer com que o Vim retorne um código de saída diferente de zero, você pode usá-lo :cq.
Eu uso isso o tempo todo, porque não posso me incomodar em trocar de dedo !. Geralmente canalizo para o Vim coisas que não precisam ser salvas em um arquivo. Também temos um invólucro SVN ímpar em funcionamento, que deve ser encerrado com um valor diferente de zero para abortar um check-in.
Eu também usar isso para abortar um git commit, ou visudo, ou crontab, ...
Josh Lee
Interromper um commit do git :q!funciona bem, já que o git está procurando uma mensagem não vazia e não um código de saída diferente de zero.
moopet
Eu sei que funciona, é apenas isso: cq não requer a tecla Shift. :-)
Sue Spence
47
Esse é o pior cenário para sair do Vim, se você apenas quer sair, não tem idéia do que fez e não se importa com o que acontecerá com os arquivos que você abriu.
Ctrl-cEnterEnterviEnterCtrl-\Ctrl-n:qa!Enter
Isso deve tirar você na maioria das vezes.
Alguns casos interessantes em que você precisa de algo assim:
iCtrl-ovg (você entra no modo de inserção, depois no modo visual e depois no modo pendente do operador)
QappendEnter
iCtrl-ogQCtrl-r=Ctrl-k (graças a porges para este caso)
:set insertmode(este é o caso quando Ctrl-\Ctrl-nvocê retorna ao modo normal)
Editar: Esta resposta foi corrigida devido aos casos acima. Costumava ser:
EscEscEsc:qa!Enter
No entanto, isso não funciona se você entrou no modo Ex. Nesse caso, você precisaria fazer:
viEnter:qa!Enter
Portanto, um comando completo para "Não quero saber o que fiz e não quero salvar nada, só quero sair agora!" seria
@cavalcade Este é um método extremamente geral para garantir que o editor esteja no modo normal e depois sair com segurança. Em uso normal, tudo o que você precisa é :qou:wq
Dan Passaro
6
Não é geral o suficiente! E se eu (iniciante) digitar i<Ctrl-O>gQ<Ctrl-R>=<Ctrl-K>?
porges
@porges obrigado pelo caso de teste! Existem também outros casos de teste que provam que o método original foi lamentável. Eu editei a resposta para ser mais geral agora.
Heikki Naski
@HeikkiNaski, pelo menos para mim, eu preciso Enter depois do Ctrl-C também (para escapar do registro de expressão)
porges
40
Caso você precise sair do Vim no modo fácil (ao usar a -yopção), você pode entrar no modo normal do Vim pressionando Ctrl+ Le, em seguida, qualquer uma das opções normais de saída funcionará.
Outra opção: você pode usar Ctrl+Opara sair temporariamente do modo INSERT e entrar :q. O truque dessa combinação também é útil no vim normal para executar um único comando e retornar ao modo INSERT.
Andrey Starodubtsev
28
O Vim possui três modos de operação: modo de entrada, modo de comando e modo Ex.
Modo de entrada - tudo o que você digita, todas as teclas são repetidas na tela.
Modo de comando ou modo de escape - tudo o que você digita nesse modo é interpretado como um comando.
Modo Ex - este é outro editor, ex. É um editor de linha. Funciona por linha ou com base em um intervalo de linhas. Nesse modo, a :aparece na parte inferior da tela. Este é o ex-editor.
Para sair do Vim, você pode sair enquanto estiver no modo ex ou no modo de comando. Você não pode sair do Vim quando estiver no modo de entrada.
Saindo do modo ex
Você precisa ter certeza de que está no modo de comando. Para fazer isso, basta pressionar a Esctecla
Vá para o modo ex pressionando a :tecla
Use qualquer uma das seguintes combinações no modo ex para sair:
:q- sair
:q!- sair sem salvar
:wq- salvar e sair ou escrever e sair
:wq!- o mesmo que wq, mas forçar a gravação caso as permissões do arquivo sejam somente leitura
:x- escrever e sair
:qa- saia de tudo. útil quando vários arquivos são abertos, como:vim abc.txt xyz.txt
Saindo do modo de comando
Pressione a tecla Escape. Você provavelmente já fez isso se estiver no modo de comando.
Capital ZZ ( shift zz) - salvar e sair
Pressione capital ZQ ( shift zq) - saia sem salvar.
Depois de pressionar ESC(ou cmd+ Cno meu computador), você deve pressionar :para que o prompt de comando apareça. Então, você pode entrar quit.
Você pode achar que a máquina não permitirá que você saia porque suas informações não foram salvas. Se você deseja encerrar de qualquer maneira, insira !diretamente após o encerramento (por exemplo :quit!).
Da mesma forma, para o vim fazer o git em um Macintosh, isso funcionou.
Joel
1
@ Joel acabou de verificar isso no meu mac, ambos os comandos são legítimos ( vim -version7.3).
precisa
2
Para Git Bashno windows, Vimàs vezes ESCnão está funcionando. use CTRL+ em [vez disso.
Val
@ Val Isso parece estranhamente familiar. Iirc é porque os dois fazem a mesma coisa. Como em ^[é o mesmo que ESC. É interessante que o Windows o torne mais complicado. E divertido.
:quit
e pressionar a[ENTER]
teclagit commit
enviá-lo para vim no futuro:git config --global core.editor="nano"
Respostas:
Pressione a Esctecla para entrar no "modo normal". Em seguida, você pode digitar
:
para entrar no "modo de linha de comando". Dois pontos (:
) aparecerão na parte inferior da tela e você poderá digitar um dos seguintes comandos. Para executar um comando, pressione a Entertecla:q
sair (abreviação de:quit
):q!
sair sem salvar (abreviação de:quit!
):wq
escrever e sair:wq!
para escrever e sair mesmo se o arquivo tiver apenas permissão de leitura (se o arquivo não tiver permissão de gravação: forçar gravação):x
escrever e sair (semelhante a:wq
, mas somente escreva se houver alterações):exit
para escrever e sair (o mesmo que:x
):qa
sair de tudo (abreviação de:quitall
):cq
sair sem salvar e fazer com que o Vim retorne um erro diferente de zero (ou seja, saia com erro)Você também pode sair do Vim diretamente do "modo Normal" digitando
ZZ
para salvar e sair (igual a:x
) ouZQ
apenas sair (igual a:q!
). (Observe que o caso é importante aqui.ZZ
Ezz
não significa a mesma coisa.)O Vim tem uma ajuda abrangente - que você pode acessar com o
:help
comando - onde você pode encontrar respostas para todas as suas perguntas e um tutorial para iniciantes.fonte
:x
==ZZ
mas:x
! =:wq
.:x
escreva arquivo se o arquivo for alterado,:wq
escreva sempre o arquivo (importa quando estiver usandoinotify
).:w ! sudo tee %
As imagens valem mil comandos e opções do Unix:
Eu desenho isso para meus alunos a cada semestre e eles parecem entender o vi depois.
vi é uma máquina de estados finitos com apenas três estados.
Ao iniciar, o vi entra no modo COMMAND, onde você pode digitar comandos curtos, com poucos caracteres, às cegas . Você sabe o que está fazendo; isso não é para amadores.
Quando você realmente deseja editar o texto, deve entrar no modo INSERIR com algum comando de um caractere:
Agora, respondendo à pergunta: saindo.
Você pode sair do vi do modo EX:
w
ex
aceite um parâmetro de nome de arquivo. Se você iniciou o vi com um nome de arquivo, não precisa fornecê-lo aqui novamente.Por fim, o mais importante: como você pode acessar o modo EX?
O modo EX é para comandos longos que você pode ver digitando na linha inferior da tela. No modo COMMAND, você pressiona dois pontos,
:
e dois pontos aparecerão na linha inferior, onde você pode digitar os comandos acima.No modo INSERT, você precisa pressionar ESC, ou seja, o botão Escape, passando para o modo COMMAND e depois: para ir para o modo EX.
Se não tiver certeza, pressione ESC e isso o levará ao modo de comando.
Portanto, o método robusto é ESC -: - x-Enter, que salva seu arquivo e sai.
fonte
w
não muda do modo Ex para o comando, masEsc
sim. O que estou fazendo errado?:w
. Então faz todo o sentido. A propósito, existe um comando para recarregar do disco (ou seja, reverter as alterações, mas não fechar o arquivo)? Nesse caso, pode ser o próximow
no diagrama.:e
(ou mais provável:e!
, uma vez que irá avisá-lo sobre alterações não salvas sem a!
)Antes de digitar um comando, atingiu a Escchave . Depois de inseri-lo, pressione o Returnpara confirmar.
Escfinaliza o comando atual e alterna o Vim para o modo normal . Agora, se você pressionar :, o botão
:
aparecerá na parte inferior da tela. Isso confirma que você está realmente digitando um comando e não editando o arquivo.A maioria dos comandos tem abreviaturas, com parte opcional entre colchetes:
c[ommand]
.Os comandos marcados com '*' são apenas para o Vim (não implementados no Vi).
Encerramento seguro (falha se houver alterações não salvas):
:q[uit]
Sair da atual janela . Saia do Vim se esta for a última janela. Isso falha quando alterações foram feitas no buffer atual .:qa[ll]
Saia de todas as janelas e Vim, a menos que haja alguns buffers que foram alterados.Prompt-quit (solicita se houver alterações não salvas)
:conf[irm] q[uit]
* Saia, mas avise quando houver alguns buffers que foram alterados.:conf[irm] xa[ll]
* Escreva todos os buffers alterados e saia do Vim. Exiba um prompt quando alguns buffers não puderem ser gravados.Escreva (salve) as alterações e saia:
:wq
Escreva o arquivo atual (mesmo que não tenha sido alterado) e saia. A gravação falha quando o arquivo é somente leitura ou o buffer não tem um nome.:wqa[ll]
* para todas as janelas.:wq!
O mesmo, mas grava até arquivos somente leitura.:wqa[ll]!
* para todas as janelas.:x[it]
,ZZ
(com detalhes ). Escreva o arquivo apenas se ele tiver sido alterado e encerrado:xa[ll]
* para todas as janelas.Descartar alterações e sair:
:q[uit]!
ZQ
* Saia sem escrever, também quando os buffers visíveis tiverem alterações. Não sai quando há buffers ocultos alterados.:qa[ll]!
*,:quita[ll][!]
* Saia do Vim, todas as alterações nos buffers (incluindo ocultos) são perdidas.Pressione Returnpara confirmar o comando.
Esta resposta não faz referência a todos os comandos e argumentos de gravação e encerramento do Vim. De fato, eles são referenciados na documentação do Vim .
O Vim possui uma ampla ajuda interna, digite Esc
:help
Returnpara abri-lo.Essa resposta foi inspirada na outra , originalmente criada por @dirvine e editada por outros usuários do SO. Incluí mais informações da referência do Vim, comentários de SO e algumas outras fontes. As diferenças para Vi e Vim também são refletidas.
fonte
Se você deseja sair sem salvar no Vim e fazer com que o Vim retorne um código de saída diferente de zero, você pode usá-lo
:cq
.Eu uso isso o tempo todo, porque não posso me incomodar em trocar de dedo
!
. Geralmente canalizo para o Vim coisas que não precisam ser salvas em um arquivo. Também temos um invólucro SVN ímpar em funcionamento, que deve ser encerrado com um valor diferente de zero para abortar um check-in.fonte
:q!
funciona bem, já que o git está procurando uma mensagem não vazia e não um código de saída diferente de zero.Esse é o pior cenário para sair do Vim, se você apenas quer sair, não tem idéia do que fez e não se importa com o que acontecerá com os arquivos que você abriu.
Ctrl-cEnterEnter
vi
EnterCtrl-\Ctrl-n:qa!
EnterIsso deve tirar você na maioria das vezes.
Alguns casos interessantes em que você precisa de algo assim:
i
Ctrl-ovg
(você entra no modo de inserção, depois no modo visual e depois no modo pendente do operador)Qappend
Enteri
Ctrl-ogQ
Ctrl-r=
Ctrl-k (graças a porges para este caso):set insertmode
(este é o caso quando Ctrl-\Ctrl-nvocê retorna ao modo normal)Editar: Esta resposta foi corrigida devido aos casos acima. Costumava ser:
EscEscEsc
:qa!
EnterNo entanto, isso não funciona se você entrou no modo Ex. Nesse caso, você precisaria fazer:
vi
Enter:qa!
EnterPortanto, um comando completo para "Não quero saber o que fiz e não quero salvar nada, só quero sair agora!" seria
vi
EnterEscEscEsc:qa!
Entrarfonte
:q
ou:wq
i<Ctrl-O>gQ<Ctrl-R>=<Ctrl-K>
?Caso você precise sair do Vim no modo fácil (ao usar a
-y
opção), você pode entrar no modo normal do Vim pressionando Ctrl+ Le, em seguida, qualquer uma das opções normais de saída funcionará.fonte
Ctrl+O
para sair temporariamente do modo INSERT e entrar:q
. O truque dessa combinação também é útil no vim normal para executar um único comando e retornar ao modo INSERT.O Vim possui três modos de operação: modo de entrada, modo de comando e modo Ex.
Modo de entrada - tudo o que você digita, todas as teclas são repetidas na tela.
Modo de comando ou modo de escape - tudo o que você digita nesse modo é interpretado como um comando.
Modo Ex - este é outro editor, ex. É um editor de linha. Funciona por linha ou com base em um intervalo de linhas. Nesse modo, a :aparece na parte inferior da tela. Este é o ex-editor.
Para sair do Vim, você pode sair enquanto estiver no modo ex ou no modo de comando. Você não pode sair do Vim quando estiver no modo de entrada.
Saindo do modo ex
Você precisa ter certeza de que está no modo de comando. Para fazer isso, basta pressionar a Esctecla
Vá para o modo ex pressionando a :tecla
Use qualquer uma das seguintes combinações no modo ex para sair:
:q
- sair:q!
- sair sem salvar:wq
- salvar e sair ou escrever e sair:wq!
- o mesmo que wq, mas forçar a gravação caso as permissões do arquivo sejam somente leitura:x
- escrever e sair:qa
- saia de tudo. útil quando vários arquivos são abertos, como:vim abc.txt xyz.txt
Saindo do modo de comando
Pressione a tecla Escape. Você provavelmente já fez isso se estiver no modo de comando.
Capital ZZ (
shift zz
) - salvar e sairPressione capital ZQ (
shift zq
) - saia sem salvar.fonte
Depois de pressionar ESC(ou cmd+ Cno meu computador), você deve pressionar :para que o prompt de comando apareça. Então, você pode entrar
quit
.Você pode achar que a máquina não permitirá que você saia porque suas informações não foram salvas. Se você deseja encerrar de qualquer maneira, insira !diretamente após o encerramento (por exemplo
:quit!
).fonte
Eu adquiri o Vim instalando um cliente Git no Windows.
:q
não sairia do Vim por mim.:exit
fez no entanto ...fonte
vim -version
7.3).Git Bash
no windows,Vim
às vezesESC
não está funcionando. useCTRL
+ em[
vez disso.^[
é o mesmo queESC
. É interessante que o Windows o torne mais complicado. E divertido.A pergunta foi feita aqui .
O
q
comando com um número fecha a divisão especificada nessa posição.:q<split position>
ou:<split position>q
fechará a divisão nessa posição.Digamos que o layout da janela do Vim seja o seguinte:
Se você executar o
q1
comando, ele fechará a primeira divisão.q2
fechará a segunda divisão e vice-versa.A ordem da posição dividida no comando quit não importa.
:2q
ou:q2
fechará a segunda divisão.Se a posição da divisão que você passar para o comando for maior que o número de divisões atuais, ela simplesmente fechará a última divisão.
Por exemplo, se você executar a
q100
configuração da janela acima, onde houver apenas três divisões, ela fechará a última divisão (Divisão 3).fonte