Eu só sei de uma instância usando registradores é através da CtrlR*qual colo o texto de uma área de transferência.
Quais são os outros usos dos registradores? Como usá-los?
Tudo o que você sabe sobre os registros VI (vamos nos concentrar no vi 7.2) - compartilhe conosco.
Respostas:
Os registros no Vim permitem executar ações ou comandos no texto armazenado dentro deles. Para acessar um registro, digite
"a
antes de um comando, ondea
é o nome de um registro. Se você deseja copiar a linha atual no registrok
, pode digitarOu você pode anexar a um registro usando uma letra maiúscula
Em seguida, você pode percorrer o documento e colá-lo em outro lugar usando
Para colar da área de transferência do sistema no Linux
Para colar da área de transferência do sistema no Windows (ou da área de transferência "realce do mouse" no Linux)
Para acessar todos os registros atualmente definidos, digite
fonte
"+
é um registro especial que se refere à área de transferência do sistema."*
; então o comando para copiar até o final do arquivo se torna"*yG
.*
está a área de transferência "destaque do mouse" e a área de transferência+
do Ctrl-XCV.+
)?Fiquei satisfeito quando descobri o
0
registro. Se você puxar o texto sem atribuí-lo a um registro específico, ele será atribuído ao0
registro, além de ser salvo no"
registro padrão . A diferença entre o0
e"
registros é que0
só é preenchida com texto arrancou, enquanto que o padrão de registro também é preenchida com o texto excluído usandod
/D
/x
/X
/c
/C
/s
/S
comandos.Acho isso útil quando quero copiar um texto, excluir algo e substituí-lo pelo texto copiado. As etapas a seguir ilustram um exemplo:
y[motion]
- esse texto é salvo"
e0
registrad[motion]
- este texto é salvo no"
registro"0p
Onde
"
está o comando para usar um registro para o próximo comando.Na etapa final, se você colasse do registro padrão (com
p
), ele usaria o texto que você acabou de excluir (provavelmente não o que você pretendia).Observe que
p
ouP
cola do registro padrão. O equivalente à mão longa seria""p
(ou""P
) e"0
conterá o último puxão, conterá"1
a última exclusão ou alteração.Para mais informações, consulte
:help registers
.fonte
p
ouP
pastas do registro padrão. O equivalente longhand seria""p
(ou""P
)."
é o comando para usar um registro para o próximo comando. Então""p
, usaria o"
registrador para o comando colar e"0p
usaria o0
registrador.0p
significaria ir para o primeiro caractere da linha atual e colar do conteúdo do registrador padrão ("
)."p
seria um comando incompleto, pois você precisa especificar para que comando usar o registrop
.Uma das minhas partes favoritas sobre registros é usá-los como macros!
Digamos que você esteja lidando com um arquivo de valor delimitado por tabulação como tal:
Agora você decide que precisa adicionar um sinal de porcentagem no final do campo% Dev (a partir da 2ª linha). Criaremos uma macro simples no
m
registro (selecionado arbitrariamente) da seguinte maneira:Pressione::
qm
Para iniciar a gravação da macro nom
registro.EE
: Vá para o final da 3ª coluna.a
: Insira o modo para anexar ao final desta coluna.%
: Digite o sinal de porcentagem que queremos adicionar.<ESC>
: Volte ao modo de comando.j0
: Vá para o início da próxima linha.q
: Parar gravação de macroAgora podemos apenas digitar
@m
para executar esta macro na linha atual. Além disso, podemos digitar@@
para repetir ou100@m
fazer isso 100 vezes! A vida parece muito boa.Nesse ponto, você deve estar dizendo: " Mas espere, o que diabos isso tem a ver com os registros ?"
Ponto excelente. Vamos investigar o que há no conteúdo do
m
registro digitando"mp
. Em seguida, obtemos o seguinte:A princípio, parece que você abriu acidentalmente um arquivo binário no bloco de notas, mas, à segunda vista, é a sequência exata de caracteres em nossa macro!
Você é uma pessoa curiosa, então vamos fazer algo interessante e editar esta linha de texto para inserir um
!
antigo, em vez de chato%
.Então vamos colocar isso no
n
registro digitandoB"nyE
. Então, só para chutar, vamos executar an
macro em uma linha de nossos dados usando@n
....OMG, ADICIONOU A
!
Essencialmente, executar uma macro é como pressionar a sequência exata de teclas no registro dessa macro. Se isso não for um truque legal de registro, eu como meu chapéu.
fonte
+
vez dej0
ir para o primeiro caractere que não está em branco na próxima linha.Outros registros úteis:
"*
ou"+
- o conteúdo da área de transferência do sistema"/
- último comando de pesquisa":
- último comando.Observe que, com as macros do vim, é possível editá-las, pois elas são apenas uma lista dos pressionamentos de tecla usados ao gravar a macro. Assim, você pode gravar em um arquivo de texto a macro (usando
"ap
para escrever a macro a ), editá-los e carregá-los em um registro com"ay$
. Ótima maneira de armazenar macros úteis.fonte
vim --version
--clipboard
significa que você não tê-lo,+clipboard
significa que você."*
e"+
são ainda mais"+
legais : cola o último texto copiadoctrl+c
(buffer de cópia) ou o atalho que você usa (ouright-click>copy
)."*
cola o último texto destacado com o mouse (buffer de seleção). Portanto, se você copiar algo comctrl+c
e destacar outro item com o mouse, poderá escolher qual colar. Isso não funciona no Windows, onde esses dois registros são sinônimos."*
e"+
por anos! Eu pensei que apenas o gvim tivesse acesso às pranchetas do sistema, mas aparentemente o vim comum também!-xterm_clipboard
sobrevim --version
. Qualquer pacote simples para instalar? (debian / apt-get). Obrigado.O registro do buraco negro
_
é o/dev/null
dos registros.Eu o uso no meu vimrc para permitir a exclusão de caracteres únicos sem atualizar o registro padrão:
e colar no modo visual sem atualizar o registro padrão:
fonte
x
fica menos conveniente para transpor caracteres.x
mapeamento, você não pode mais executar oxp
"comando" para alternar a corrente com o próximo caractere. Muito útil para correções de erros de digitação. Também temosXp
que trocar a corrente pelo caractere anterior.Se você quiser colar o conteúdo do registro em um comando ex-mode, pressione
<C-r><registerletter>
.Por que você usaria isso? Eu queria fazer uma pesquisa e substituir por uma sequência longa, então a selecionei no modo visual, comecei a digitar a expressão de pesquisa / substituição
:%s/[PASTE YANKED PHRASE]//g
e continuei no meu dia.Se você deseja colar apenas uma única palavra no modo ex, verifique se o cursor está nele antes de entrar no modo ex e pressione-o
<C-r><C-w>
no modo ex para colar a palavra.fonte
:
linha de comando é a melhor coisa que eu aprendi hoje/[write out your regex]<cr>
e depois para substituir justs/<C-R>//replacement/
. Dessa forma, você obtém o benefício de feedback ao vivo sobre sua regex antes de executar a substituição.Eu acho que o registro secreto do guru é a expressão = register. Pode ser usado para mapeamentos de criativos.
Você pode usá-lo em conjunto com o seu sistema como acima ou obter respostas das funções personalizadas do VimL etc.
ou apenas coisas ad hoc como
fonte
Um truque interessante é usar
"1p
para colar a última exclusão / alteração (e, em seguida, usar.
repetidamente para colar as exclusões subsequentes. Em outras palavras,"1p...
é basicamente equivalente a"1p"2p"3p"4p
.Você pode usar isso para fazer a ordem inversa de algumas linhas:
dddddddddd"1p....
fonte
Na página de ajuda do vim:
fonte
fonte
nmap <F2> @q
eu uso o registro q, porque, para salvar uma macro para a reprodução do F2, basta clicarqq
. macro rápida salvar e reproduzir.Eu uso o registro padrão para grep para texto na minha janela vim sem ter que alcançar o mouse.
:!grep "<CTRL-R>0"<CR>
fonte
Use registradores em comandos com
@
. Por exemplo:Defina-os no comando:
Agora
"ap
vai colarabc
.fonte
Uma grande fonte de confusão é o registro padrão
"
. É importante saber como funciona. É muito melhor se o registro padrão for evitado na maioria das vezes. A explicação da documentação do Vim:Portanto, o registro padrão é realmente um ponteiro para o último registro usado. Quando você exclui ou arranca algo, esse registro aponta para outros registros. Você pode testar isso verificando os registros. Sempre há outro registro exatamente igual ao registro padrão: o registro de arrancamento (
"0
), o primeiro registro de exclusão ("1
), o registro de exclusão pequeno ("-
) ou qualquer outro registro que foi usado para excluir ou arrancar.A única exceção é o registro do buraco negro. O documento do Vim diz:
Normalmente, você é muito melhor fora usando diretamente:
"0
,"-
e"1-"9
registros padrão ou registos nomeados.fonte
Um registro esquecido é o '.' registro de pontos que contém o último texto inserido, não importa como ele foi inserido, por exemplo, ct] (mude até]). Então você percebe que precisa inseri-lo em outro lugar, mas não pode usar o método de repetição de pontos.
fonte
Meu registro favorito é o
':'
registro. A execução@:
no modo Normal permite repetir o comando ex anteriormente executado.fonte
Meu amigo Brian escreveu um artigo abrangente sobre isso. Eu acho que é uma ótima introdução de como usar tópicos. https://www.brianstorti.com/vim-registers/
fonte