No Vim, existe uma maneira de colar texto na linha de pesquisa?


105

Quero pesquisar $maximumTotalAllowedAfterFinishe substituí-lo por $minimumTotalAllowedAfterFinish. Em vez de digitar o texto longo:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

Existe uma maneira de COPIAR esses nomes longos de variáveis ​​na linha de pesquisa, já que, na linha de comando, não consigo digitar " p" para colar?


2
Eu acho que você também precisa escapar do primeiro $porque este caractere significa o fim da linha.
Luc M

1
@LucM O OP também pode ser usado \Vem qualquer lugar no padrão de pesquisa para desabilitar caracteres "mágicos".
dash-tom-bang

Respostas:


128

Você pode inserir o conteúdo de um registro numerado ou nomeado digitando CTRLR {0-9a-z"%#:-=.}. Ao digitar, CTRL-R CTRL-Wvocê pode colar a palavra atual sob o cursor. Vejo:

:he cmdline-editing

Para maiores informações.


8
obrigado pela resposta, o mais comum para mim é: CTRL+ R +(como vale para o conteúdo da área de transferência)
Peter Butkovic,

4
O 0registro contém a última string puxada.
Evgeni Sergeev

52

Copie-o normalmente e faça CtrlR"para colar. Existem muitos outros CtrlRatalhos (por exemplo, uma calculadora, o nome do arquivo atual, o conteúdo da área de transferência). Digite :help c_<C-R>para ver a lista completa.


16

Copiar:
1) v(ou destacar com o mouse, no modo visual)
2) y(puxar)

Colar:
1) /(modo de pesquisa)
2) Ctrl + R + 0(colar do registro arrancado)


1
Eu estava procurando por essa resposta quando procurei essa pergunta no google, me pergunto por que isso tem votos negativos.
santiago arizti

15

Digite q:para entrar no modo de edição de histórico em um novo buffer. Em seguida, edite a última linha do buffer e pressione Enterpara executá-lo.


3
Então era para isso que servia aquele buffer! Obrigado (sempre aconteceu de tropeçar nele ao digitar: q e me confundir)
gsk

3
q/também é útil para acessar o histórico de pesquisa e colar novas pesquisas.
79E09796

3

Ou crie o comando em um buffer do vim, por exemplo, digite-o no buffer:

s/foo/bar/gci

E copie-o para um registro nomeado, com "ayy(se o cursor estiver nessa linha!).

Agora você pode executar o conteúdo do aregistro " " da linha de comando Ex do Vim com:

:[OPTIONAL_RANGE]@a

Eu uso isso o tempo todo.


seu "ayy" está citado (e, portanto, incorreto) ou não (e, portanto, há um "errado" no final)
tzot

2

Normalmente, você faria isso selecionando o mouse (talvez CtrlInsou CtrlCdepois de selecionar) e, em seguida, quando estiver na linha de comando / pesquisa, clicando com o botão do meio (ou ShiftInsou CtrlV).

Outra forma, é escrever sua linha de comando / pesquisa no buffer de texto com todas as edições disponíveis nos buffers de texto, começando com :e tudo, então, na linha, faça:

"add@a

que armazenará toda a linha de comando no buffer ae a executará. Porém, não será armazenado no histórico de comandos.

Tente criar a seguinte linha no buffer de texto como um exemplo para as teclas pressionadas acima:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

Finalmente, você pode entrar q:para inserir a edição do histórico em um buffer de texto.


1

Você pode colocar o cursor na palavra que deseja adicionar ao seu padrão e, em seguida, pressionar /ou :para entrar no modo de pesquisa ou comando e, em seguida, pressionar CtrlRCtrlWpara copiar a palavra. Fonte

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.