2010-09-21 4 views

Répondre

50

Pas directement, mais vous pouvez toujours utiliser une cartographie:

:nnoremap//\v 
:cnoremap %s/ %s/\v 

Même si vous pouvez définir « très magique » dans la façon dont vous pouvez set nomagic, vous vraiment pas vouloir car il romprait assez beaucoup chaque plugin existant.

Modifier

Voir aussi this page.

+1

Bon point sur les plugins. D'une certaine façon, je n'y avais pas pensé. Merci pour une réponse. – bgaluszka

+0

J'ai ajouté un lien vers une page wikia qui pourrait vous être utile. – DrAl

+15

+1 Merci. FWIW, cela semble plus général: ': cnoremap s/s/\ v'. – FMc

8

EDIT2: Je viens de découvrir ce plugin, qui peut être meilleur que les solutions de remappage (qui semblent avoir des inconvénients incontournables, voir plus bas). Je ne l'ai pas encore testé, donc je ne sais pas s'il se comporte exactement comme il le souhaite.

http://www.vim.org/scripts/script.php?script_id=4849

EDIT3: J'utilise le plug-in pour environ un an et demi, et je l'aime. Il interfère toujours avec l'historique de recherche, cependant (voir ci-dessous), et il brise aussi incsearch, j'ai donc ce qui suit dans ma config Vim:

" Since I use incsearch: 
let g:VeryMagic = 0 
nnoremap//\v 
nnoremap ? ?\v 
vnoremap//\v 
vnoremap ? ?\v 
" If I type // or ??, I don't EVER want \v, since I'm repeating the previous 
" search. 
noremap // // 
noremap ?? ?? 
" no-magic searching 
noremap /v/ /\V 
noremap ?V? ?\V 

" Turn on all other features. 
let g:VeryMagicSubstituteNormalise = 1 
let g:VeryMagicSubstitute = 1 
let g:VeryMagicGlobal = 1 
let g:VeryMagicVimGrep = 1 
let g:VeryMagicSearchArg = 1 
let g:VeryMagicFunction = 1 
let g:VeryMagicHelpgrep = 1 
let g:VeryMagicRange = 1 
let g:VeryMagicEscapeBackslashesInSearchArg = 1 
let g:SortEditArgs = 1 

je suggestion Drai pendant un certain temps, mais trouvé frustrant dans la pratique en raison du comportement suivant:

Si vous tapez la commande suivante: /{motif} :% de // {remplaçant}

... puis, sans cette carte, vous pouvez voir ce que tu es à propos à remplacer avant de faire un remplacement. Mais avec le remappage, vous avez soudainement s/\v/ au lieu de s//; cela correspond tout dans le fichier, ce qui est évidemment faux.

Heureusement, la commande s elle-même a une forme alternative qui utilise very magic pour sa recherche. Voici donc les applications que je utilise actuellement dans mon .vimrc:

nnoremap//\v 
vnoremap//\v 
cnoremap %s/ %smagic/ 
cnoremap >s/ >smagic/ 
nnoremap :g/ :g/\v 
nnoremap :g// :g// 

Notez que la cartographie juste s/ conduit à des problèmes lors d'une tentative d'utiliser un modèle qui se termine par s; de même, le mappage g/ créerait des problèmes lors de l'utilisation de modèles se terminant par g. Notez que les mappages :g/ et :g// empêchent Vim d'afficher la commande immédiatement.

EDIT: Malheureusement, il ne semble pas être une version « magique » de :global, ce qui explique pourquoi la cartographie semble-superflu de :g// est utilisé pour faire en sorte que la commande globale peut utiliser le modèle de recherche précédent.

Un autre inconvénient est que ces remappages interfèrent avec l'historique de recherche. À titre d'exemple, pensez à utiliser * pour rechercher l'occurrence suivante du mot sous le curseur.Cela provoque Vim pour rechercher le modèle \<[word]\>, qui fait pas commence par \v. Sans les remappements décrits ci-dessus, en tapant / et en appuyant sur la flèche vers le haut se rappellera ce motif de recherche. Avec les remappings, cependant, après avoir tapé /, vous devez supprimer le \v automatiquement inséré avant d'appuyer sur la flèche vers le haut afin de rappeler ce modèle.

+0

'cnoremap> s /> smagic /' ne semble pas fonctionner lorsque je sélectionne une plage visuelle. J'ai également essayé d'échapper le support à 'cnoremap \> s/\> smagic /' mais cela ne fonctionnait pas non plus. –

+0

@DaveKennedy Avez-vous essayé le plugin? C'est beaucoup plus fiable pour moi. J'ai eu très peu de problèmes avec ça. Je n'utilise plus les mappages listés dans ce second bloc de code. –

Questions connexes