EDIT2: Je viens de découvrir ce plugin, qui pourrait être meilleur que les solutions de remappage (qui semblent avoir quelques inconvénients inévitables; voir ci-dessous). Je ne l'ai pas encore testé, donc je ne sais pas s'il se comporte exactement comme désiré.
http://www.vim.org/scripts/script.php?script_id=4849
EDIT3: J'utilise le plugin depuis environ un an et demi, et je l'adore. Cependant, il interfère toujours avec l'historique de recherche (voir ci-dessous), et il casse également incsearch
, donc j'ai ce qui suit dans ma configuration Vim:
" Puisque j'utilise incsearch :
let g:VeryMagic = 0
nnoremap / /\v
nnoremap ? ?\v
vnoremap / /\v
vnoremap ? ?\v
" Si je tape // ou ??, je ne veux JAMAIS de \v, car je répète la recherche précédente.
noremap // //
noremap ?? ??
" recherche sans magie
noremap /v/ /\V
noremap ?V? ?\V
" Activer toutes les autres fonctionnalités.
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
J'ai utilisé la suggestion de DrAI pendant un certain temps, mais j'ai trouvé cela frustrant en pratique en raison du comportement suivant :
Si vous tapez ce qui suit : /{pattern} :%s//{replacement}
... alors, sans ce remappage, vous pouvez voir ce que vous êtes sur le point de remplacer avant de le faire. Mais avec le remappage, vous avez soudainement s/\v/
au lieu de s//
; cela correspond à tout dans le fichier, ce qui est évidemment incorrect.
Heureusement, la commande s
elle-même a une forme alternative qui utilise la recherche very magic
. Voici donc les remappages que j'utilise actuellement dans mon .vimrc
:
nnoremap / /\v
vnoremap / /\v
cnoremap %s/ %smagic/
cnoremap >s/ >smagic/
nnoremap :g/ :g/\v
nnoremap :g// :g//
Remarquez que le simple remappage de s/
conduit à des problèmes lors de l'utilisation d'un motif se terminant par s
; de même, le remappage de g/
causerait des problèmes lors de l'utilisation de motifs se terminant par g
. Notez que les remappages :g/
et :g//
empêchent Vim d'afficher immédiatement la commande.
EDIT: Malheureusement, il ne semble pas y avoir de version "magique" de :global
, c'est pourquoi le remappage apparemment superflu de :g//
est utilisé pour s'assurer que la commande globale peut utiliser le motif de recherche précédent.
Un autre inconvénient est que ces remappages interfèrent avec l'historique de recherche. Par exemple, considérons l'utilisation de *
pour rechercher la prochaine occurrence du mot sous le curseur. Cela fait en sorte que Vim recherche le motif \<[mot]\>
, qui ne commence pas par \v
. Sans les remappages décrits ci-dessus, en tapant /
et en appuyant sur la flèche vers le haut, vous rappellerez ce motif de recherche. Avec les remappages, cependant, après avoir tapé /
, vous devez supprimer le \v
inséré automatiquement avant d'appuyer sur la flèche vers le haut pour rappeler ce motif.