¿Cuál sería un buen enfoque para envolver una acción macro en una función? [duplicar]

Posible duplicado:
Guardar macros de vim

Siempre usé macros en las líneas y son un salvavidas. Pero últimamente, comencé a usarlos para realizar manipulaciones de archivos más complicadas, y me gustaría grabarlos en una función, o usarlos de alguna manera en las sesiones de Vim para no tener que volver a grabarlos cada hora de dejar Vim.

¿Cuál sería la forma más fácil de hacerlo?

preguntado el 12 de junio de 12 a las 21:06

@ pb2q: diría relevante, pero no un duplicado. Pero gracias por el enlace. respondió parte de mi consulta. -

si lo veo. Mencionaste específicamente envolver una función alrededor de tu macro. -

2 Respuestas

Las macros de Vim son en realidad solo texto guardado en registros y, dado que los registros se guardan entre sesiones, sus macros se guardan automáticamente.

Sin embargo, a mi modo de ver, la idea detrás de las macros es que puedes crearlas rápidamente, usarlas y luego descartarlas. Si desea algo más permanente, debe esforzarse y escribir un comando personalizado o un mapa de teclas, y si se trata de una macro compleja, debe escribir una función para ella en vimscript adecuado (o cualquier otro lenguaje de secuencias de comandos compatible con vim).

Si es algo que va a usar mucho, querrá poder hacer cambios y correcciones de vez en cuando, pero esto es muy difícil de hacer en las macros, porque son cadenas de texto que representan pulsaciones de teclas, no comandos.

Respondido el 12 de junio de 12 a las 22:06

Generalmente escribo macros que necesitan un punto de partida desde la línea 1, columna 1 y luego manipulo el archivo con eso en mente. Hasta ahora, ese enfoque funcionó para mí. Así que ahora, solo me gustaría ponerlos en una función y nombrar esa función y poner un acceso directo al menú, para poder tener esas operaciones cerca cuando las necesito sin la necesidad de volver a grabar macros. Probé vimscript, pero esto es mucho más fácil que no tengo ganas de volver a escribir todo, vale la pena el esfuerzo. - Rook

Bueno, como dije, las macros son básicamente texto. Así que supongo que puedes usar el :normal comando para crear una función que ejecute una macro específica. Solo asegúrese de escapar de todos los caracteres especiales (es una mala idea almacenar un carácter especial directamente en un archivo de texto) - idan arye

function! MyMacro()
   normal "paste your macro here
endfunction

Pero estoy de acuerdo con Idan Arye: convertirlo en una función adecuada escrita en vimscript es probablemente una mejor solución.

Respondido el 13 de junio de 12 a las 06:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.