Normalmente, procuro por palavras :/string
, mas se tiver que pesquisar toda a linha atual, como fazer isso.
event: 1 beacon: 0x02 //line 1
event: 19 beacon: 0x02 //line 2
event: 1 beacon: 0x03 //line 3
event: 1 beacon: 0x02 //line 4
event: 8 beacon: 0x01 //line 5
event: 19 beacon: 0x02 //line 6
event: 1 beacon: 0x02 //line 7
Por exemplo, se cursor
é atualmente line 1
como pesquisar da mesma forma que o :/
texto que contém toda a linha atual. O cursor deve pular para a correspondência line 4
e novamente paraline 7
command-line
search
highlight
delimiter-matching
mark
manav mn
fonte
fonte
nnoremap {key} 0y$/\V<c-r>"<cr>
Especialmente para fins de mapeamento, acho o uso
getline()
mais elegante do que fazer você mesmo o puxão. Chamargetline()
com uma string'.'
retorna a linha sob o cursor. Existem duas boas opções para usar isso:que analisa as strings
'/'
e o que é retornadogetline()
juntos e executa isso como um comando vim.ou
que usa o registro de expressão
@=
. A expressão a seguir=
é avaliada após a primeira<CR>
e colocada na linha de comando.fonte
/
ou'
não funciona muito bem. Enfim, eu aprendo algo hoje! ObrigadoPessoalmente, eu receberia um plugin visual star ( existem poucos por aí ). Existe um bom Vimcast sobre isso: pesquise o texto selecionado . Isso significa que você pode selecionar a linha visualmente e pressionar
*
.Se um plug-in não é o que você gosta, você pode adicionar o seguinte mapeamento ao seu
vimrc
:Nota: O bloco visual (
<c-v>
) não é suportado para este mapeamento.fonte
*
o modo normal ou não tenha o mapeamento instalado corretamente.Todas as respostas existentes falharão se sua linha contiver determinados itens que são interpretados como parte de um padrão. O
\V
ponto chega na maior parte do caminho, mas ainda mexe com a barra invertida.Tente fazer isso para escapar das barras invertidas ...
E então, se você o estiver usando em um mapeamento, precisará de um ou dois
<Enter>
s no final, dependendo de como deseja que ele funcione.fonte
escape(…, '/\')
Com o vim-asterisk instalado, basta usar
V$*
(ou0v$*
) para selecionar a linha atual e procurar por ela.No segundo comando,
0
não é necessário se o cursor já estiver no início da linha.fonte
*
procura apenas a palavra sob o cursor, e não a seleção visual atual?Mais uma maneira de fazer isso é usar a janela da linha de comandos:
yy/<Ctrl-F>p<Enter>
yy
/
e, em seguida, pressione Ctrl-F para abrir a janela da linha de comandop
para colar a linhafonte
q/
para obter o mesmo efeito que/<c-f>
http://vim.wikia.com/wiki/Searching_for_expressions_which_include_slashes salienta que o registro de pesquisa pode ser definido diretamente, assim:
Isso permite pesquisar na linha e funciona mesmo quando a linha inclui barras.
Então, para fazer, por exemplo,
\*
mapear para uma pesquisa de linha:fonte