Navegando múltiples archivos


11

Si abro vim con varios archivos en la línea de comando, por ejemplo, vim debug.log*qué cargas debug.log, debug.log.1y debug.log.2¿puedo navegar entre ellos, asignarlos a múltiples ventanas ( :split/ :vsplit) o similares?

El único acceso directo que conozco para este modo de operación es :n, que carga el siguiente archivo en la lista. ¿Qué más puedo hacer en este modo de operación de múltiples archivos? (¿o qué tema de ayuda cubre eso?)


3
:previous(o :prev) es el inverso de :n, y retrocede un archivo.
Rico

Respuestas:


13

El tema de ayuda más relevante es :ls, también conocido como :fileso :buffers.

En su vim debug.log*ejemplo, si dio el :lscomando, verá:

:ls
  1 %a   "debug.log"                    line 1
  2      "debug.log.1"                  line 0
  3      "debug.log.2"                  line 0
Press ENTER or type command to continue

... indicando que el primero es el búfer activo.

Para abrir debug.log.2en la ventana actual, dé el comando :b 3o :b debug.log.2para mostrar el búfer 3.

Para dividir la ventana y abrir el búfer 2, da el :sb 2comando. La versión de división vertical de eso es :vert sb 2.

Hay muchas variantes del :bcomando; explore los temas de ayuda citados aquí para familiarizarse con ellos.


Además, puede invocar vim -o debug.log*para abrir todos los archivos, cada uno en su propia división, o vim -O debug.log*para abrirlos en una división vertical.


6

Además de la funcionalidad sin procesar de vim mencionada por 200_success, el ecosistema de Vim está lleno de complementos para proporcionar funcionalidad adicional, como:

Sin embargo, antes de ir y comenzar a usar complementos, es mejor comprender completamente los búferes y las ventanas en vim.


1
Lea nuestra política sobre respuestas de recomendación de complementos y agregue algunos detalles sobre cómo estos complementos pueden beneficiar exactamente al usuario.
200_success

5

También puede abrir vim con diferentes parámetros.

Abre archivos en pestañas:

vim -p debug.log*

Abre archivos en divisiones verticales:

vim -o debug.log*

Hay un complemento genial y bastante poderoso llamado CtrlSpace:

https://github.com/szw/vim-ctrlspace

Es muy útil si necesita trabajar con muchos archivos. Simplemente puede imaginar ctrl-space como su propia lista de búfer para cada pestaña. Proporciona una manera muy fácil de navegar entre los archivos, como dice el autor:

Vim-CtrlSpace es un complemento de Vim para controlar y organizar su espacio de trabajo en Vim. Incluyendo la gestión de buffers, archivos, pestañas, sesiones y finalmente proyectos. Su enfoque es algo único, pero ciertamente se sentirá como en casa, especialmente si usa ventanas, pestañas, buffers ya divididos.


¡Bienvenido a Vi / Vim! Lea nuestra política sobre respuestas de recomendación de complementos y agregue algunos detalles sobre cómo exactamente el complemento aborda la pregunta.
200_success


4

Si desea abrir un archivo en particular sin necesidad de pasar :ls, puede usar cualquiera de los siguientes:

  • :vs filename abre el archivo en una división vertical
  • :sp filename hace lo mismo, pero en una división horizontal
  • :tabe filename se abre en una pestaña nueva

También vale la pena saber que si no especifica un nombre de archivo, abrirá una nueva división / pestaña del archivo actual, que puede ser útil para archivos largos.


2
:tes el comando copiar. Por :tabeditlo menos lo necesitas :tabe.
tommcdo

Oh dang, tienes toda la razón. Gracias, editaré!
Tom

0

Hay algunos atajos útiles para navegar por múltiples archivos:

  • CTRL-^(donde Nestá el número de búfer) para saltar al archivo editado previamente.
  • N CTRL-^(donde Nestá el número del búfer) para saltar al búfer específico.

    Por ejemplo:

    • 1Control+^ - ir al 1er búfer
    • 2Control+^ - ir al 2do búfer
    • etc.

    Esto es equivalente a :buffer N.

  • Use :Ex/ :Sex/ :Vexpara navegar por el directorio actual.

  • Use en su :tabslugar ( vim -p) con algunos accesos directos personalizados en su .vimrccomo:

    " TABS
    " To create a new tab (Control-T)
    nnoremap <C-t> :tabnew<CR>
    inoremap <C-t> <Esc>:tabnew<CR>
    " Tab Navigation (Control+Left <-> Control-Right, Shift+H <-> Shift+L).
    nnoremap <S-h> gT
    nnoremap <S-l> gt
    nnoremap <A-Left> gT
    nnoremap <A-Right> gt
    nnoremap <C-S-Tab> gT
    nnoremap <C-Tab> gt
    " Tab Close (Control-W)
    nnoremap <C-BS> :tabclose<CR>
    inoremap <C-BS> <Esc>:tabclose<CR>
    " Close All (Control-Q)
    nnoremap <C-q> :qa<CR>
    inoremap <C-q> <Esc>:qa<CR>
    
  • Uso :ba/ :vert baa split, salto al tampón seleccionado a través de Control+w, w/ W, a continuación, hacer que la ventana actual ( :on).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.