Je recherche généralement des mots par :/string
, mais si je dois rechercher toute la ligne actuelle, comment faire.
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
Par exemple, si cursor
est actuellement sur la line 1
façon de rechercher de la même manière que :/
pour le texte contenant la ligne actuelle entière. Le curseur doit alors passer à l'appariement line 4
, puis àline 7
nnoremap {key} 0y$/\V<c-r>"<cr>
Surtout à des fins de cartographie, je trouve l'utilisation
getline()
plus élégante que le fait de tirer soi-même. L'appelgetline()
avec une chaîne'.'
renvoie la ligne sous le curseur. Il existe deux bonnes options pour l'utiliser:qui analyse les chaînes
'/'
et ce qui est retournégetline()
ensemble et l'exécute comme une commande vim.ou
qui utilise le registre d'expression
@=
. L'expression suivante=
est évaluée après la première<CR>
et placée dans la ligne de commande.la source
/
ou'
cela ne fonctionne pas très bien. Quoi qu'il en soit, j'apprends quelque chose aujourd'hui! MerciPersonnellement, j'obtiendrais un plugin Visual Star ( il y en a peu ). Il y a un joli Vimcast à ce sujet: Recherchez le texte sélectionné . Cela signifie que vous pouvez sélectionner visuellement la ligne, puis appuyer sur
*
.Si un plugin n'est pas votre truc, vous pouvez ajouter le mappage suivant à votre
vimrc
:Remarque: Visual-block (
<c-v>
) n'est pas pris en charge pour ce mappage.la source
*
le mode normal ou que le mappage n'est pas installé correctement.Les réponses existantes échouent toutes si votre ligne contient certains éléments qui sont interprétés comme faisant partie d'un modèle. Le
\V
point obtient l'essentiel du chemin, mais il gâche toujours la barre oblique inverse.Essayez ceci pour échapper aux contre-obliques ...
Et puis, si vous l'utilisez dans un mappage, vous aurez besoin d'un ou deux
<Enter>
s à la fin selon la façon dont vous voulez que cela fonctionne.la source
escape(…, '/\')
Avec vim-asterisk installé, utilisez simplement
V$*
(ou0v$*
) pour sélectionner la ligne actuelle et recherchez-la.Dans la deuxième commande
0
n'est pas nécessaire si le curseur est déjà au début de la ligne.la source
*
recherche pas seulement le mot sous le curseur, et non la sélection visuelle actuelle?Une autre façon de procéder consiste à utiliser la fenêtre de ligne de commande:
yy/<Ctrl-F>p<Enter>
yy
/
puis sur Ctrl-F pour ouvrir la fenêtre de ligne de commandep
pour coller la lignela source
q/
pour obtenir le même effet que/<c-f>
http://vim.wikia.com/wiki/Searching_for_expressions_which_include_slashes souligne que le registre de recherche peut être défini directement, comme ceci:
Cela permet une recherche sur la ligne et fonctionne même lorsque la ligne comprend des barres obliques.
Donc, pour faire, par exemple,
\*
mapper à une recherche de ligne:la source