2011-07-29 3 views

Répondre

3

presss y (vous sortir du mode visuel après), puis appuyez sur/Ctrl + R puis "fin appuyez sur Entrée

Vous pouvez l'utiliser pour lier à double presse/pour cette action

:vmap // y/<C-R>"<CR> 

Si vous sélectionnez les caractères spéciaux que vous feriez mieux d'utiliser cette

:vmap <silent> // y/<C-R>=escape(@", '\\/.*$^~[]')<CR><CR> 
+0

Ceci est une solution rapide et sale, mais vous Nous ne pourrons en dépendre que pour les cas les plus simples, car le champ de recherche de Vim traite beaucoup de caractères comme spéciaux (par exemple: le caractère '. 'est tout, et les parenthèses' <',' ('et' ['ont toutes Le traitement des cas spéciaux nécessite un peu de Vimscript, donc vous feriez mieux d'installer un plugin comme [lucapette] (http://stackoverflow.com/questions/6870902/vim-editor-how-can-i -recherche-un-mot-après-sélection-en-mode-visuel-in-vim/6871062 # 6871062) suggéré – nelstrom

+0

: vmap // y/ = escape (@ ", '\\ /.*$* ~ []') hadvig

6

S'il s'agit d'un seul mot, vous n'avez même pas besoin de le sélectionner. Placez simplement le curseur sur le mot et appuyez sur * (ou # pour effectuer une recherche à rebours). Notez que cette recherche ne correspond qu'au mot entier. Pour permettre une recherche de foo pour correspondre à foobar, utilisez g * ou g #.

2

Je recommande https://github.com/thinca/vim-visualstar parce que vous pouvez utiliser * pour la recherche mais avec certaines sélections, vous pouvez rencontrer des problèmes.

+1

J'utilise [Visual-Star-Search] (https://github.com/bronson/vim-visual-star-search), qui est similaire, mais semble atteindre le même résultat avec une implémentation beaucoup plus simple. – nelstrom

+0

Oh @nelstrom agréable de vous voir ici! Merci de m'avoir indiqué que je vais essayer. – lucapette

0

J'ai dans mon ~/.vimrc:

" Search for visually-selected text, forwards or backwards. 
vnoremap <silent> * :<C-U> 
    \let old_reg=getreg('"')<Bar>let old_regtype=getregtype('"')<CR> 
    \gvy/<C-R><C-R>=substitute(
    \escape(@", '/\.*$^~['), '\_s\+', '\\_s\\+', 'g')<CR><CR> 
    \gV:call setreg('"', old_reg, old_regtype)<CR> 
vnoremap <silent> # :<C-U> 
    \let old_reg=getreg('"')<Bar>let old_regtype=getregtype('"')<CR> 
    \gvy?<C-R><C-R>=substitute(
    \escape(@", '?\.*$^~['), '\_s\+', '\\_s\\+', 'g')<CR><CR> 
    \gV:call setreg('"', old_reg, old_regtype)<CR>