52 votos

En vim, hay una manera de establecer "muy magia" de forma permanente y global?

Yo uso "muy magia" para regexp búsquedas (es decir, /\v o %s/\v) pero me gustaría que me pudieran configurar alguna opción para no tener que incluir \v más, en cualquier lugar. Es allí una manera de hacer esto?

56voto

DrAl Puntos 29528

No directamente, sin embargo siempre se puede usar una asignación:

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

Incluso si usted puede establecer el 'magia' en la forma en que se puede set nomagic, usted realmente no quiere a como se iba a romper casi todos los plugin en existencia.

Editar

Ver también esta página.

14voto

Kyle Strand Puntos 2340

EDIT2: acabo de descubrir este plugin, que puede ser mejor que la reasignación de soluciones (que parecen tener algunas inevitables inconvenientes; ver más abajo). Yo no lo he probado aún, aunque, así que no sé si se comporta exactamente como desee.

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


He utilizado DrAI sugerencia para un rato, pero fue frustrante, en la práctica, debido a que el comportamiento siguiente:

Si usted escriba lo siguiente: /{patrón} :%s//{reemplazo}

...entonces, sin esta asignación, se puede ver lo que estás a punto de reemplazar antes de hacer un reemplazo. Pero con la reasignación, de repente se tiene s/\v/ en lugar de s//; esto coincide con todo en el archivo, que es obviamente erróneo.

Afortunadamente, el s comando en sí tiene una forma alternativa que utiliza very magic de su búsqueda. Así que aquí están las asignaciones estoy usando actualmente en mi .vimrc:

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

Tenga en cuenta que la asignación de s/ provoca problemas al intentar usar un patrón que termina en s; del mismo modo, la cartografía g/ podría crear problemas al utilizar patrones de final en g. Tenga en cuenta que el :g/ y :g// asignaciones de prevenir Vim desde mostrando el comando de inmediato.

EDIT: por Desgracia, no parece ser una "magia" de la versión de :global, que es la razón por la aparentemente superfluo asignación de :g// se utiliza para asegurarse de que el comando global puede utilizar el anterior patrón de búsqueda.

Otro inconveniente es que estos remappings interferir con el historial de búsqueda. Como un ejemplo, considere el uso de * para buscar la siguiente aparición de la palabra bajo el cursor. Esto hace que Vim buscar el patrón \<[word]\>, lo que hace que no comienzan con \v. Sin remappings descrito anteriormente, escribir / y pulsando la flecha arriba, se recordará que el patrón de búsqueda. Con el remappings, sin embargo, después de escribir /, debe eliminar automáticamente insertado \v antes de pulsar la flecha hacia arriba en el fin de recordar a ese patrón.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X