como eu já colecionei 2 votos, acho que isso pertence aqui, pois o vim é o editor de um programador.
22139 flybywire
28
Eu concordo, isso é relacionado à programação e é uma pergunta real.
DigitalRoss
41
Alguém por aqui anda por aí e marca todas as perguntas do Vim como "pertencem ao SU", apesar de a comunidade ter decidido há muito tempo que o Vim pertence ao SO, sendo uma ferramenta de programação.
22430 Brian Carper
@ Brian: Você tem um link para o documento em que esse consenso foi alcançado?
demasiado php
12
meta.stackexchange.com/questions/20251/…, mas eu lembro disso chegando no ano passado. Vim / Emacs são IDEs. Além disso, as linguagens usadas nos arquivos de configuração para ambas são linguagens de script completas de Turing, portanto, o ato de configurar o Vim é, por si só, uma programação.
Gostaria apenas de lançar o plugin undoTree por aí, super impressionante para as vezes em que você aparentemente se ferrou com uma enxurrada de desfazer e refazer.
Vendedores Jake
3
Se estou lendo sobre o vi, então meus dedos agem por conta própria. Os comandos vi não funcionam no stackoverflow. :-)
ciscogambo
2
Nota para usuários de Mac: Ctrl + r em um terminal Mac estragará seu dia no vim. Não conheço a combinação adequada de teclas no terminal Mac para desfazer, mas definitivamente NÃO é Ctrl + r!
Novidade
@tpartee Acabei de usar Ctrl + r no vim no aplicativo Terminal do macOS - sem problemas aqui.
Jase
3
Talvez @tpartee significasse bagunçar as Cmd + rcoisas? Certamente faz algo estranho; mas Ctrl + rapenas funcionou bem para mim (Mac + tmux + vim)
dwanderson
133
Verifique também :undolist, que oferece vários caminhos ao longo do histórico de desfazer. Isso é útil se você digitar algo acidentalmente depois de desfazer muito.
Use :earlier/ :later. Para refazer tudo o que você precisa fazer
later 9999999d
(supondo que você editado pela primeira vez o arquivo, no máximo 9999999 dias atrás), ou, se você se lembrar a diferença entre estado atual desfazer e precisava de um, uso Nh, Nmou Nspor horas, minutos e segundos, respectivamente. + :later N<CR><=> Ng+e :later Nfpara gravações de arquivo.
:latertrabalhou para mim em vi(não vim - procurou por "vi" no google, mas todos os resultados são para "vim"), obrigado!
Luc
@ Luc Em quase todos os lugares onde você vicomanda, há um link simbólico para um executável do vim ou uma cópia dele. Não completamente em toda parte embora.
Zyx
@ZyX Eu gostaria que isso fosse verdade. Eu só uso o vi após o bash lança a vim: command not found. A próxima coisa que faço é alias vim=viporque eu o digito automaticamente, mas, mesmo assim, é o velho e simples vi. Além disso, refazer (ctrl + r) teria funcionado corretamente se vi fosse um alias para o vim.
Luc
2
9999999d é 27395 anos atrás. Presumo que o recurso desfazer não foi implementado no vi naquela época. Você pode economizar um esforço exaustivo de digitação e usar um número razoável. O 9999d corresponde a cerca de 27 anos, 999d a 2,7 anos. Eu acho que na maioria dos casos isso é suficiente ...
<Undo> or *undo* *<Undo>* *u*
u Undo [count] changes. {Vi: only one level}
*:u* *:un* *:undo*
:u[ndo] Undo one change. {Vi: only one level}
*CTRL-R*
CTRL-R Redo [count] changes which were undone. {Vi: redraw screen}
*:red* *:redo* *redo*
:red[o] Redo one change which was undone. {Vi: no redo}
*U*
U Undo all latest changes on one line. {Vi: while not
moved off of it}
Voto negativo porque a pergunta está perguntando especificamente sobre o vim, não o Visual Studio.
John Von Neumann
3
@JohnVonNeumann Isso está relacionado ao Vim, ou pelo menos às ligações do vim, apenas no contexto do VS. Foi isso que me levou a essa pergunta, afinal. Punir alguém por adicionar um pouco mais de informação parece um pouco duro e desnecessário, você não acha, mesmo que isso talvez se expanda um pouco além do escopo do OP?
Kjartan #
2
Na prática, :undolisté difícil usar o Vim :earliere o :latercontrole de tempo das alterações, que só podem ser utilizados para correções de grãos do curso.
Dado isso, recorro a um plug-in que combina esses recursos para fornecer uma árvore visual de desfazer navegáveis, chamada "Gundo".
Respostas:
Ctrl+r
fonte
Cmd + r
coisas? Certamente faz algo estranho; masCtrl + r
apenas funcionou bem para mim (Mac + tmux + vim)Verifique também
:undolist
, que oferece vários caminhos ao longo do histórico de desfazer. Isso é útil se você digitar algo acidentalmente depois de desfazer muito.fonte
:undolist
e digite:undo 178
(digamos) para retroceder para a etapa 178.:undolist
?Use
:earlier
/:later
. Para refazer tudo o que você precisa fazer(supondo que você editado pela primeira vez o arquivo, no máximo 9999999 dias atrás), ou, se você se lembrar a diferença entre estado atual desfazer e precisava de um, uso
Nh
,Nm
ouNs
por horas, minutos e segundos, respectivamente. +:later N<CR>
<=>Ng+
e:later Nf
para gravações de arquivo.fonte
:later
trabalhou para mim emvi
(não vim - procurou por "vi" no google, mas todos os resultados são para "vim"), obrigado!vi
comanda, há um link simbólico para um executável do vim ou uma cópia dele. Não completamente em toda parte embora.vim: command not found
. A próxima coisa que faço éalias vim=vi
porque eu o digito automaticamente, mas, mesmo assim, é o velho e simples vi. Além disso, refazer (ctrl + r) teria funcionado corretamente se vi fosse um alias para o vim.Documentação do Vim
fonte
No modo de comando, use a Utecla para desfazer e Ctrl+ rpara refazer. Dê uma olhada em http://www.vim.org/htmldoc/undo.html .
fonte
Primeiro, pressione a Esctecla para sair do modo de edição.
Então,
Para desfazer , use a utecla quantas vezes quiser desfazer.
Para refazer , use a tecla Ctrl+r
fonte
Consulte a parte "desfazer" e "refazer" do documento Vim .
: red [o] (refazer uma alteração desfeita) e {count} Ctrl+ r(refazer {contagem} alterações desfeitas) estão ok.
Além disso, o {count} anterior (vá para o estado do texto mais antigo {count} vezes) sempre pode ser um substituto para desfazer e refazer.
fonte
CTRL+r
O "r" é minúsculo.
fonte
^r
e^R
, e Vim segue isso.^X
(ondeX
pode haver qualquer letra).Usando o VsVim para Visual Studio?
Me deparei com isso ao experimentar o VsVim, que fornece ligações para comandos do Vim no Visual Studio .
Eu sei sobre Ctrlr próprio Vim, mas essa ligação específica não funciona no VsVim (pelo menos não na minha instalação?).
O que funciona, no entanto, é o comando
:red
. Isso é um pouco mais complicado do que o descrito acima, mas ainda é bom quando você realmente precisa.fonte
Na prática,
:undolist
é difícil usar o Vim:earlier
e o:later
controle de tempo das alterações, que só podem ser utilizados para correções de grãos do curso.Dado isso, recorro a um plug-in que combina esses recursos para fornecer uma árvore visual de desfazer navegáveis, chamada "Gundo".
Obviamente, isso é algo a ser usado somente quando você precisar de uma correção refinada ou não tiver certeza do estado exato do documento ao qual deseja retornar. Veja: Gundo. Faça um gráfico da sua árvore de desfazer do Vim com estilo
fonte