Para procurar no Vim cake, digitei /cake, mas o cursor salta para a primeira correspondência quando pressiono return. Existe um comando do Vim análogo ao "localizar próximo"?
Acostume-se a usar :help. :help /mostra ajuda sobre a pesquisa e a resposta à sua pergunta aparece um pouco abaixo na página.
31711 Chris Chris
Respostas:
877
É npara o próximo e Npara o anterior.
E se você usar a pesquisa reversa com ?(por exemplo ?cake) em vez de /, é o contrário.
Se estiver instalado no seu sistema, você deve tentar executar o vimtutorcomando no seu terminal, o que iniciará um tutorial dos comandos básicos do Vim.
Existe uma maneira de pular para a próxima partida (não na linha atual)?
User13107
@ user13107: n e N funcionam em todo o buffer / arquivo. Você não está limitado à linha atual.
Xavier T. #
@XavierT. qualquer idéia, como eu posso pular um número fixo de resultados na pesquisa. Quero dizer, por exemplo, pule para a 10ª linha correspondente
GP cyborg
@ GPcyborg: ncomo a maioria dos operadores vim, pode ser prefixado com um número para repetir o comando. Se você digitar 10n, passará para o 10º resultado (após o inicial). Também funciona para todos os operadores de movimento que gostam 3jde descer três linhas.
Xavier T.
211
O atalho mais útil no Vim, IMHO, é a *chave.
Coloque o cursor em uma palavra e pressione a *tecla e você irá para a próxima instância dessa palavra.
A #chave faz o mesmo, mas salta para a instância anterior da palavra.
E no caso de que não era óbvio, ne Nlevá-lo para a frente e para trás através dos *jogos, uma vez que você pressionou *. (Ou você pode apenas manter pressionando *para ir para a frente ou #para ir para trás, mas usando esses deslocou-chaves é geralmente sub-óptima.)
Herbert Sitz
3
@ Herbert, na verdade N e N não levam você "para frente" e "para trás" resp. Como o @Xavier observou acima, n é o próximo e N é o anterior . O controle da pesquisa para frente e para trás é feito, declarando a pesquisa com a tecla '/' e a tecla '?' ou com a tecla '*' e a tecla '#'.
Rob Wells
Eu não acho que * seja útil ... na maioria das vezes, estou procurando por um fragmento de uma palavra (por exemplo, parte de um nome de função). Eu não quero /Func, leve-o para SomeFunce pressione '*' para ir para a próxima instância de SomeFuncquando a próxima instância Funcestiver SomeOtherFunc.
Weberc2 19/09/2013
Pior ainda, com C ++ I acham que ele não ir de invocação de método para implementação do método, porque /\<foo\>não corresponde"className::foo()"
A digitação *está incorreta. Ou seja, um arquivo aa aaa. Pesquisa /aa, você tem que corresponder. Na primeira partida, pressionar *muda o termo da pesquisa.
Bernhard
1
n não é 'próximo', mas "repete a última pesquisa". Então, digitando? Var, você começará a pesquisar para cima da sua posição atual por 'var'. E 'N' é, na verdade, "repita a última pesquisa na direção oposta"; portanto, neste exemplo, procure "var" para baixo na posição atual.
Conforme discutido, existem várias maneiras de pesquisar:
/pattern
?pattern
* (and g*, which I sometimes use in macros)
# (and g#)
além disso, navegando prev / next com Ne n.
Você também pode editar / recuperar seu histórico de pesquisa, puxando o prompt de pesquisa com /e, em seguida, alternando com C-p/ C-n. Ainda mais útil é q/, o que leva você a uma janela onde você pode navegar no histórico de pesquisas.
Também para consideração é o mais importante 'hlsearch'(digite :hlspara ativar). Isso facilita muito a localização de várias instâncias do seu padrão. Você pode até tornar suas partidas ainda mais brilhantes com algo como:
hi Search ctermfg=yellow ctermbg=red guifg=...
Mas então você pode ficar louco com constantes correspondências amarelas em toda a tela. Então, você frequentemente se encontra usando :noh. Isso é tão comum que um mapeamento está em ordem:
nmap <leader>z :noh<CR>
Lembro-me facilmente deste, zjá que costumava digitar constantemente /zz<CR>(o que é uma ocorrência incomum e rápida de digitar) para limpar meu realce. Mas o :nohmapeamento é muito melhor.
Se você está se sentindo inspirado q/, também deve brincar q:. Ambos são realmente úteis! (Na verdade, não relacionados a esta questão, no entanto.)
Micah Elliott
Obrigado, Micah. Eu já sabia sobre 'q:', embora não o use muito. Mas 'q /' foi totalmente esquecido na minha educação em vim, e acho que será muito útil.
precisa saber é o seguinte
2
Se você pressionar Ctrl+ Enterdepois de pressionar algo como "/ wordforsearch", poderá encontrar a palavra "wordforsearch" na linha atual. Em seguida, pressione npara a próxima partida; pressione Npara a partida anterior.
“Quando executamos uma pesquisa, o Vim avança a partir da posição atual do cursor, parando na primeira correspondência que encontrar.” Como aponta o Practical Vim.
:help
.:help /
mostra ajuda sobre a pesquisa e a resposta à sua pergunta aparece um pouco abaixo na página.Respostas:
É npara o próximo e Npara o anterior.
E se você usar a pesquisa reversa com
?
(por exemplo?cake
) em vez de/
, é o contrário.Se estiver instalado no seu sistema, você deve tentar executar o
vimtutor
comando no seu terminal, o que iniciará um tutorial dos comandos básicos do Vim.Rob Wells conselhos sobre *e #também é muito pertinente.
fonte
n
como a maioria dos operadores vim, pode ser prefixado com um número para repetir o comando. Se você digitar10n
, passará para o 10º resultado (após o inicial). Também funciona para todos os operadores de movimento que gostam3j
de descer três linhas.O atalho mais útil no Vim, IMHO, é a *chave.
Coloque o cursor em uma palavra e pressione a *tecla e você irá para a próxima instância dessa palavra.
A #chave faz o mesmo, mas salta para a instância anterior da palavra.
É realmente uma economia de tempo.
fonte
n
eN
levá-lo para a frente e para trás através dos*
jogos, uma vez que você pressionou*
. (Ou você pode apenas manter pressionando*
para ir para a frente ou#
para ir para trás, mas usando esses deslocou-chaves é geralmente sub-óptima.)/Func
, leve-o paraSomeFunc
e pressione '*' para ir para a próxima instância deSomeFunc
quando a próxima instânciaFunc
estiverSomeOtherFunc
./\<foo\>
não corresponde"className::foo()"
Quando eu estava começando, precisava assistir a uma demonstração .
Como pesquisar no Vim
/
fonte
*
está incorreta. Ou seja, um arquivoaa aaa
. Pesquisa/aa
, você tem que corresponder. Na primeira partida, pressionar*
muda o termo da pesquisa.Você pode estar procurando a nchave.
fonte
A digitação nirá para a próxima partida.
fonte
Conforme discutido, existem várias maneiras de pesquisar:
além disso, navegando prev / next com Ne n.
Você também pode editar / recuperar seu histórico de pesquisa, puxando o prompt de pesquisa com
/
e, em seguida, alternando comC-p
/C-n
. Ainda mais útil éq/
, o que leva você a uma janela onde você pode navegar no histórico de pesquisas.Também para consideração é o mais importante
'hlsearch'
(digite:hls
para ativar). Isso facilita muito a localização de várias instâncias do seu padrão. Você pode até tornar suas partidas ainda mais brilhantes com algo como:Mas então você pode ficar louco com constantes correspondências amarelas em toda a tela. Então, você frequentemente se encontra usando
:noh
. Isso é tão comum que um mapeamento está em ordem:Lembro-me facilmente deste,
z
já que costumava digitar constantemente/zz<CR>
(o que é uma ocorrência incomum e rápida de digitar) para limpar meu realce. Mas o:noh
mapeamento é muito melhor.fonte
q/
, também deve brincarq:
. Ambos são realmente úteis! (Na verdade, não relacionados a esta questão, no entanto.)Se você pressionar Ctrl+ Enterdepois de pressionar algo como "/ wordforsearch", poderá encontrar a palavra "wordforsearch" na linha atual. Em seguida, pressione npara a próxima partida; pressione Npara a partida anterior.
fonte