2009-04-19 17 views
11

El libro "Unix in a Nutshell" trata sobre el acceso a varios archivos en las páginas 572-573. Parece que hay comandos muy útiles como ": e", ": e #", ": e new_file", ": n files", ": args", ": prev" y ": n!". Los comandos me confunden:Acceso a varios archivos en VIM

": n Edite el archivo siguiente en la lista de archivos."

": args Muestra la lista de archivos que se editarán."

": prev Editar archivo anterior en la lista de archivos."

No puedo ver ninguna lista real cuando lo hago ": args". Solo hay un pequeño texto en la esquina. Me gustaría ver todos los archivos a los que accedí con ": e", es decir, una lista de archivos en el búfer.

¿Dónde puedo ver la lista cuando hago el comando ": n files"? ¿Qué se supone que deben hacer los comandos ": prev" y ": n"? Recibí el mensaje de error:

Solo hay un archivo para editar.

+0

En cuanto a la última parte: si tiene solo un búfer abierto, no puede alternar entre ellos (porque solo hay uno abierto). – Rook

Respuesta

16

No he leído el libro al mencionarlo, pero intentaré explicar cómo vim maneja los archivos.

Vim tiene búfers. Abre todos los archivos con:

:e name_of_the_file.txt (carga el archivo en un búfer, es decir"Abre el archivo")

También puede:

:e *.txt

opciones útiles al hacer esto son

:set laststatus=2 (para mostrar siempre la línea de estado)

:set wildmenu (para facilitar la apertura de los archivos)

Si tiene un vim estándar con el plugin netrw, puede:

:e . (por uno de los administradores de archivos de vim, por así decirlo)

para búferes:

:ls le dará una lista de los buffers abiertos actualmente (archivos)

:bnext y :bprevious (o :bn y :bp) le permiten pasar por los búferes

:bd cierra el buffer/fil e (tampón hecho)

Otros tipos de tampón servir para otros fines (YanKing/pegar, temporal, de vim interna, ... etc.)

+0

¿La notación del búfer es la misma que en Emacs? Curiosamente, el libro define el búfer solo para Emacs :(Indica: "Cuando abre un archivo en Emacs, el archivo se coloca en un Buffer. - La vista de los contenidos del búfer que tiene en cualquier momento se llama ventana . "¿Son los buffers y las ventanas diferentes a las cosas en Vim? –

+1

Sí, se podría decir que. Hay algunas diferencias en los tipos de búferes disponibles, pero en principio, eso es todo. No estoy seguro acerca de emacs, tiene ventanas/frames .., mientras que vim tiene ventanas/pestañas. En cuanto a vim: una ventana es solo un método para mostrar lo que vim tiene en un búfer. Una pestaña es un método para mostrar varias ventanas en la pantalla (las pestañas en vim se introdujeron recientemente)). – Rook

+2

No creo que ': e * .txt' se pueda usar para abrir varios archivos.': Next' parece funcionar: http://stackoverflow.com/a/12304605/1858225 –

5

Para aquellos comandos tengan sentido, que hace:

vim *.c 

en un directorio donde hay veinte archivos de C, por ejemplo. Con un solo archivo, no hay una lista de archivos siguiente o anterior o significativa.

+0

¡Guau! Muy buen ejemplo :) ¡Muchas gracias! –

5
La

: N: P: ar: rew: última operan en el comando lista de argumentos de línea.

E.g.

> touch aaa.txt bbb.txt ccc.txt 
> gvim *.txt 

vim se abre en aaa.txt

:ar gives a status line 

[aaa.txt] bbb.txt ccc.txt 

:n moves to bbb.txt 

:ar gives the status line 

aaa.txt [bbb.txt] ccc.txt 

:rew rewinds us back to the start of the command line arg list to aaa.txt 

:last sends us to ccc.txt 

:e ddd.txt edits a new file ddd.txt 

:ar gives the status line 

aaa.txt bbb.txt [ccc.txt] 

lo tanto, el conjunto de comandos sólo funciona en la lista inicial argumento de línea de comandos.

8

Además de lo que Jonathan Leffler dijo, si no se invoca Vim con varios archivos desde la línea de comandos, se puede establecer la lista de argumentos de Vim después de Vim está abierto a través de:

Tenga en cuenta que la lista de argumentos es diferente de la lista de búferes abiertos que obtiene de :ls. Incluso si cierra todos los búferes abiertos en Vim, la lista de argumentos permanece igual. :n y :prev pueden abrir un búfer nuevo en Vim (si un búfer para ese archivo no está ya abierto) o pueden llevarlo a un búfer existente.

De manera similar, puede abrir varios buffers en Vim sin afectar la lista de argumentos (o incluso si la lista de argumentos está vacía). :e abre un nuevo buffer pero no necesariamente afecta la lista de argumentos. La lista de búferes abiertos y la lista de argumentos son independientes. Si desea iterar a través de la lista de búferes abiertos en lugar de iterar a través de la lista de argumentos, use :bn y :bp y sus amigos.

2

Para aclarar, Vim tiene la lista de argumentos, la lista de búfer, las ventanas y las páginas de pestañas. La lista de argumentos es la lista de archivos con los que invoca vim (por ejemplo, vim file1 file2); los comandos: n y: p funcionan con esto. La lista de almacenamiento intermedio es la lista de copias en memoria de los archivos que está editando, al igual que emacs.Tenga en cuenta que todos los archivos cargados al inicio (en la lista de argumentos) también están en la lista de almacenamiento intermedio. Pruebe: help buffer-list para obtener más información sobre ambos.

Windows son viewports para búferes. Piense en Windows como "escritorios" en los que puede poner buffers para que funcionen en ellos. Windows puede estar vacío o mostrar búferes que también se pueden mostrar en otras ventanas, que puede usar, por ejemplo, para mirar dos áreas diferentes del mismo búfer al mismo tiempo. Prueba: ayuda ventanas para más información.

Las pestañas son colecciones de ventanas. Por ejemplo, puede tener una pestaña con una ventana y otra con dos ventanas divididas verticalmente. Pruebe: el tabulador de ayuda para obtener más información.