2009-08-24 20 views
5

Si quería procesar un lote de archivos de texto con el mismo conjunto de comandos, por ejemplo:

Vim: cómo almacenar y ejecutar comandos comúnmente utilizados?

: Conjunto tw = 50
gggqG

¿Puedo guardar lo anterior y ejecutarlo con un comando de acceso directo?

+0

No consumo ViM (Emacs ... ;-)), pero la función que desea debe ser llamado "macro" como en todas partes, debe de google para eso. – p4bl0

+0

Aquí está: http://vim.wikia.com/wiki/Macros :-) – p4bl0

+0

Usted está buscando "macro vim". – Johan

Respuesta

9

Lo siguiente en .vimrc definirá un nuevo comando Wrap que hace lo que usted desea.

command! Wrap :set tw=50 | :normal gggqG 

llama con :Wrap

12

Si desea utilizarlo solo una vez, use una macro como se especifica en algunas de las otras respuestas. Si desea hacerlo más a menudo, puede incluir la línea siguiente en el archivo .vimrc:

:map \r :set tw=50<CR>gggqG 

Esto asociará \r a causar que sus dos líneas que se ejecutarán cada vez que se pulsa \r. Por supuesto, también puede elegir un atajo diferente, como <C-R> (Ctrl + R) o <F12> o algo así.

+0

¿Puedo asignarlo a un comando escrito en lugar de a un atajo de teclado (como ejecutar un script)? ¡Me imagino que me quedaré sin llaves! – Fred

+0

Sí, incluso puedes asignarlo a 'hellomynameisjon' si quieres :). – jqno

+0

Entonces, eso sería ": map \ hellomynameisjon: set tw = 50 gggqG"? y solo presiono ESC y luego tecleo? – Fred

0

Sí, la palabra importante es macro

Pero parece como un 'comando' tales como: Conjunto tw = 50 sería mejor incluir en el archivo .vimrc modo vim lo utiliza cada vez que lo abres .

6

Como un comienzo muy rápido, ponga esto en su .vimrc:

" define the function 
" '!' means override function if already defined 
" always use uppercase names for your functions 
function! DoSomething() 
    :set tw=50 
    gggqG 
endfunction 

" map a keystroke (e.g. F12) in normal mode to call your function 
nmap <F12> :call DoSomething()<CR> 

nota: el código de formato anterior parece bastante horrible, pero las líneas que comienzan con "son comentarios

2

Aparte de macros,. puede utilizar argdo Este mandato llevará a cabo la misma operación en todos los archivos abiertos Aquí es cómo dar formato a todos los archivos abiertos utilizando :argdo y :normal:..

shell> vim *.txt 

:argdo exe "normal gggqG"|up 
1

Antes de escribir miles-lines .vimrc (lo cual es bueno, pero puede posponerlo por un tiempo), creo que es posible que desee consultar la grabación simple, en particular, puede considerar usar el qx (donde x es cualquier tecla) para grabar, q para finalizar la grabación y @x para ejecutar macro grabada.

+0

Solo ejecutaré la macro una vez por archivo. ¿Hay alguna forma de guardar la grabación? – Fred

+0

Para decirte la verdad, no tengo idea ;-) Creo que no. Pero la grabación persiste en todos los archivos siempre que no salga de vim. Intenta ': ayuda a repetir'. –

Cuestiones relacionadas