Io uso "molto magico" per le ricerche regexp (ad es./\ V o% s/\ v) ma vorrei poter impostare qualche opzione in modo da non dover includere \ v più, ovunque. C'è un modo per fare questo?In vim, c'è un modo per impostare "molto magico" in modo permanente e globale?
risposta
Non direttamente, ma si può sempre usare una mappatura:
:nnoremap//\v
:cnoremap %s/ %s/\v
Anche se è possibile impostare 'molto magica' nel modo in cui si può set nomagic
, davvero non vorresti come si spezzerebbe abbastanza molti plug-in esistenti.
Modifica
Vedi anche this page.
EDIT2: Ho appena scoperto questo plug-in, che potrebbe essere migliore delle soluzioni di rimappatura (che sembrano avere alcuni svantaggi inevitabili, vedi sotto). Non l'ho ancora provato, quindi, non so se si comporti esattamente come desiderato.
http://www.vim.org/scripts/script.php?script_id=4849
Edit3: Sto usando il plugin per circa un anno e mezzo, e mi piace. Interferisce ancora con la cronologia delle ricerche, però (vedi sotto), e si rompe anche incsearch
, così ho il seguente nel mio 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
ho usato il suggerimento di Drai per un po ', ma l'ho trovato frustrante, in pratica, a causa del seguente comportamento:
Se si digita il seguente: /{pattern} :% s // {sostituzione}
... poi, senza questa mappatura, si può vedere che cosa stai per per sostituire prima di fare una sostituzione. Ma con la rimappatura, all'improvviso hai s/\v/
anziché s//
; questo corrisponde a eveything nel file, che è ovviamente sbagliato.
Fortunatamente, il comando s
ha una forma alternativa che utilizza very magic
per la sua ricerca. Così qui sono le mappature Attualmente sto usando nella mia .vimrc
:
nnoremap//\v
vnoremap//\v
cnoremap %s/ %smagic/
cnoremap >s/ >smagic/
nnoremap :g/ :g/\v
nnoremap :g// :g//
Si noti che solo la mappatura s/
porta a problemi quando si tenta di utilizzare un modello che termina in s
; analogamente, la mappatura di g/
creerebbe problemi quando si utilizzano modelli che terminano con g
. Si noti che i mapping :g/
e :g//
impediscono a Vim di mostrare immediatamente il comando.
EDIT: Purtroppo, non sembra essere una versione "magia" di :global
, motivo per cui viene utilizzata la mappatura apparentemente superfluo di :g//
al fine di garantire che il comando globale può utilizzare il precedente modello di ricerca.
Un altro svantaggio è che questi remapping interferiscono con la cronologia delle ricerche. Ad esempio, considera l'utilizzo di *
per cercare l'occorrenza successiva della parola sotto il cursore.Ciò fa sì che Vim cerchi il pattern \<[word]\>
, che non inizi con \v
. Senza i remapping descritti sopra, digitando /
e premendo la freccia su richiamerà quel modello di ricerca. Con i remapping, tuttavia, dopo aver digitato /
, è necessario eliminare lo \v
automaticamente inserito prima di premere la freccia su per richiamare quel motivo.
'cnoremap> s /> smagic /' non sembra funzionare quando seleziono un intervallo visivo. Ho anche provato a sfuggire alla parentesi su 'cnoremap \> s/\> smagic /' ma non ha funzionato neanche. –
@DaveKennedy Hai provato il plugin? È molto più affidabile per me; Ho avuto pochissimi problemi con esso. Non uso più le mappature elencate in quel secondo blocco di codice. –
- 1. Come impostare arricciatura per utilizzare in modo permanente un proxy?
- 2. Che cosa è un modo infallibile per impostare in modo permanente la directory di lavoro R?
- 3. Come abilitare la modalità "Molto magico" in vim con vimrc?
- 4. Come impostare JAVA_HOME in Mac in modo permanente?
- 5. Cambia la variabile in modo permanente
- 6. mysql dichiarazioni preparate in modo permanente
- 7. E 'possibile danneggiare l'hardware in modo permanente tramite software?
- 8. Come aggiornare in modo permanente iptables
- 9. C'è un modo per impostare un buon completamento automatico per Ruby in Vim?
- 10. Permanentemente e riordinando i record in modo permanente
- 11. Come impostare in modo permanente iOS Simulator in una lingua diversa dall'inglese
- 12. C'è un modo per lasciare lo strumento di evidenziazione Okular in modo permanente?
- 13. C'è un modo per impostare il percorso di ambiente in modo programmatico in C++ su Windows?
- 14. È possibile ignorare in modo permanente un ramo remoto?
- 15. Mettere un NSWindow trasparente in modo permanente su un'altra NSWindow
- 16. Come impostare in modo programmatico una variabile di ambiente permanente in Linux?
- 17. aumenta la dimensione dell'heap java in modo permanente?
- 18. Come disattivare il debugging in disassembly in modo permanente?
- 19. Come dovrei ripetere un'azione in modo permanente in Swift?
- 20. Cambia codice pagina in CMD in modo permanente?
- 21. come aumentare la memoria heap java in modo permanente?
- 22. Come caricare i pacchetti in Octave in modo permanente?
- 23. C'è un modo per evidenziare più ricerche in (g) Vim?
- 24. C'è un modo per diff due registri in vim?
- 25. Il modo migliore per aprire un URL in Vim
- 26. Come disabilitare stringsAsFactors = TRUE in data.frame in modo permanente?
- 27. Disabilitare l'integrazione Git in Visual Studio 2015 in modo permanente
- 28. In vim, c'è un modo per: impostare un'opzione solo se non è ancora stata impostata?
- 29. Come disattivare in modo permanente Correzione automatica in iOS Simulator?
- 30. Come annullare in modo efficiente un completamento automatico in vim
Buon punto sui plugin. In qualche modo non ci avevo pensato. Grazie per la risposta. – bgaluszka
Ho aggiunto un collegamento a una pagina di wiki che potrebbe esserti utile. – DrAl
+1 Grazie. FWIW, questo sembra più generale: ': cnoremap s/s/\ v'. – FMc