Uso "muy mágico" para las búsquedas de expresiones regulares (es decir,/\ v o% s/\ v) pero me gustaría poder establecer alguna opción para que no tenga que incluir \ v más, en cualquier lugar. ¿Hay alguna forma de hacer esto?En vim, ¿hay alguna manera de establecer "muy mágico" de forma permanente y global?
Respuesta
No directamente, sin embargo siempre se puede utilizar un mapeo:
:nnoremap//\v
:cnoremap %s/ %s/\v
Incluso si se pudiera establecer 'muy mágico' en el camino se puede set nomagic
, que realmente no desearía que se rompería bastante muchos de los complementos que existen
Editar
Véase también this page.
EDIT2: Acabo de descubrir este complemento, que puede ser mejor que las soluciones de reasignación (que parecen tener algunos inconvenientes ineludibles, ver más abajo). No lo he probado aún, así que no sé si se comporta exactamente como se desea.
http://www.vim.org/scripts/script.php?script_id=4849
Edit3: He estado usando el plugin por alrededor de un año y medio, y lo amo. Todavía interfiere con el historial de búsqueda, sin embargo (véase más adelante), y también rompe incsearch
, así que tengo el siguiente en mi 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
utilicé la sugerencia de Dräi por un tiempo, pero me pareció frustrante en la práctica por el siguiente comportamiento:
Si escribe lo siguiente: /{patrón} :% s // {} reemplazo
... entonces, sin esta asignación, se puede ver lo estás a punto para reemplazar antes de hacer un reemplazo. Pero con la reasignación, de repente tiene s/\v/
en lugar de s//
; esto coincide con todo en el archivo, lo cual es obviamente incorrecto.
Afortunadamente, el comando s
tiene una forma alternativa que usa very magic
para su búsqueda. Así que aquí están las asignaciones Actualmente estoy utilizando en mi .vimrc
:
nnoremap//\v
vnoremap//\v
cnoremap %s/ %smagic/
cnoremap >s/ >smagic/
nnoremap :g/ :g/\v
nnoremap :g// :g//
Tenga en cuenta que acaba de mapeo s/
conduce a problemas al intentar utilizar un patrón que termina en s
; de manera similar, mapear g/
crearía problemas al usar patrones que terminan en g
. Tenga en cuenta que las asignaciones :g/
y :g//
evitan que Vim muestre el comando inmediatamente.
EDIT: Por desgracia, no parece ser una versión "mágica" de :global
, por lo que se utiliza el mapeo aparentemente superfluo de :g//
para asegurar que el comando global puede utilizar el patrón de búsqueda anterior.
Otro inconveniente es que estos remaches interfieren con el historial de búsqueda. Como ejemplo, considere usar *
para buscar la siguiente aparición de la palabra debajo del cursor.Esto hace que Vim busque el patrón \<[word]\>
, que hace no comienza con \v
. Sin las nuevas funciones descritas anteriormente, al escribir /
y presionar la flecha hacia arriba se recordará ese patrón de búsqueda. Con las reasignaciones, sin embargo, después de escribir /
, debe eliminar el \v
insertado automáticamente antes de presionar la flecha hacia arriba para recuperar ese patrón.
'cnoremap> s /> smagic /' no parece funcionar cuando selecciono un rango visual. También intenté escapar del corchete a 'cnoremap \> s/\> smagic /' pero tampoco funcionó. –
@DaveKennedy ¿Has probado el plugin? Es mucho más confiable para mí; He tenido muy pocos problemas con eso. Ya no uso las asignaciones enumeradas en ese segundo bloque de código. –
- 1. ¿Cómo habilitar el modo "Muy mágico" en vim con vimrc?
- 2. ¿Hay alguna forma de establecer explícitamente el alcance de require_once() en global?
- 3. ¿Hay alguna manera de resaltar búsquedas múltiples en (g) Vim?
- 4. en vim, ¿hay alguna manera de guardar marcadores entre sesiones?
- 5. ¿Hay alguna forma de modificar dos registros en vim?
- 6. ¿Hay alguna manera de establecer programáticamente el ApartmentState en STA?
- 7. En vim, ¿hay alguna forma de: establecer una opción solo si aún no está configurada?
- 8. ¿Hay alguna manera de pasarle texto arbitrario a Vim?
- 9. Global snippets in vim
- 10. ¿Hay alguna manera de cambiar el modo predeterminado de vim?
- 11. ¿Hay alguna forma de establecer valores en LINQ?
- 12. ¿Hay alguna manera de asignar Ctrl period y Ctrl comma en Vim?
- 13. ¿Hay alguna manera de establecer nuevos valores predeterminados para ggsave?
- 14. ¿Hay alguna forma de utilizar dos funciones completas y personalizadas en Vim-script?
- 15. ¿Hay alguna manera fácil de alternar "do/end" y "{}" en ruby en Vim?
- 16. ¿Hay algo mágico en ReadOnlyCollection
- 17. ¿Hay alguna forma de hacer SharedPreferences global en toda mi aplicación de Android?
- 18. ¿Hay alguna forma de pasar el iPhone?
- 19. ¿Hay alguna manera de establecer la ruta del entorno mediante programación en C++ en Windows?
- 20. ¿Hay alguna manera de identificar un método heredado en Python?
- 21. En Vim, ¿hay alguna manera de pegar texto en la línea de búsqueda?
- 22. ¿Hay alguna forma de que v $ y no copie el carácter de nueva línea en Vim en Mac y Linux?
- 23. Eliminación de archivos de forma permanente y segura en CentOS
- 24. ¿Hay alguna manera de ejecutar silenciosamente un comando bash después de guardar un archivo en vim?
- 25. Zedgraph - Establecer valores mínimos/máximos en un eje de forma permanente
- 26. ¿Hay alguna bandera global para la compilación estática de Groovy?
- 27. ¿Hay alguna manera de mostrar una lista de macros similar a mostrar sus asignaciones en Vim?
- 28. ¿Cómo establecer programáticamente una variable de entorno permanente en Linux?
- 29. ¿Hay alguna manera de cambiar el propietario de un JDialog?
- 30. ¿Hay alguna manera de establecer la visibilidad de QLabel en Qt Designer
Buen punto acerca de los complementos. De alguna manera, no pensé en esto. Gracias por una respuesta. – bgaluszka
He agregado un enlace a una página de wikia que puede serle útil. – DrAl
+1 Gracias. FWIW, esto parece un propósito más general: ': cnoremap s/s/\ v'. – FMc