Cómo trabajar eficazmente con múltiples archivos en Vim


1101

Empecé a usar Vim para desarrollar scripts de Perl y estoy empezando a encontrarlo muy poderoso.

Una cosa que me gusta es poder abrir múltiples archivos a la vez con:

vi main.pl maintenance.pl

y luego salta entre ellos con:

:n
:prev

y ver qué archivo están abiertos con:

:args

Y para agregar un archivo, puedo decir:

:n test.pl

que espero que luego se agregue a mi lista de archivos, pero en su lugar borra mi lista de archivos actual y cuando escribo :argssolo tengo test.plabierto.

Entonces, ¿cómo puedo agregar y eliminar archivos en mi lista de argumentos?


55
tmux ... usa vim en cada panel
Tommy

44
@Tommy: de esta manera no puede pegar contenido eliminado / eliminado entre los archivos (búfer vims). Si está disponible, solo un portapapeles puede ayudar (consulte la respuesta aceptada: stackoverflow.com/questions/5532878/… )
ChristophS

1
:Nparece una forma más fácil de ir al archivo anterior ...
Gert van den Berg

vimcasts.org/categories/the-argument-list ? VimCasts son realmente muy recomendables cuando se aprende vim.
mcepl

Respuestas:


1172

¿Por qué no usar pestañas (introducidas en Vim 7)? Puede cambiar entre pestañas con :tabny :tabp, Con :tabe <filepath>puede agregar una nueva pestaña; y con un regular :qo :wqcierras una pestaña. Si asigna :tabny :tabpa sus teclas F7/ F8puede cambiar fácilmente entre archivos.

Si no hay esa cantidad de archivos o que no tienen Vim 7 también se puede dividir la pantalla en varios archivos: :sp <filepath>. Luego puede cambiar entre pantallas divididas con Ctrl+ Wy luego una tecla de flecha en la dirección que desea mover (o en lugar de las teclas de flecha, wpara la Wpantalla de división siguiente y anterior)


72
Para guardar y cerrar una pestaña, también puede usar en ZZlugar de :wq(al igual que normalmente guardaría y cerraría)
Andreas Grech

40
Estoy usando el paquete vim-gnome en Ubuntu 10.10, y puedo cambiar entre pestañas usando Ctrl + PageUp y Ctrl + PageDown. No tuve que configurar nada; fue por defecto.
Joey Adams

268
Además, en modo de edición gtva a la siguiente pestaña y gTva a la pestaña anterior.
Dean

40
Puede saltar a cualquier pestaña usando ngt, donde n es el índice de la pestaña (comenzando con uno). Creo que hay una opción que muestra el índice de cada pestaña cerca del nombre del archivo, pero no sé qué es. Si alguien lo sabe, me encantaría escucharlo.
void-pointer

81
Tenga en cuenta también que puede usar el -pindicador para abrir varios archivos en pestañas desde la línea de comandos. Por ejemplo, gvim -p main.pl maintenance.plabrirá estos dos archivos en pestañas.
Matthew Strawbridge

555

Listado

Para ver una lista de buffers actuales, uso:

:ls

Apertura

Para abrir un nuevo archivo, uso

:e ../myFile.pl

con finalización de pestañas mejorada (poner set wildmenuen su .vimrc).

Nota: también puede usar el :findque buscará un conjunto de rutas por usted, pero primero debe personalizar esas rutas.


Traspuesta

Para cambiar entre todos los archivos abiertos, uso

:b myfile

con finalización de pestañas mejorada (aún set wildmenu).

Nota: :b#elige el último archivo visitado, por lo que puede usarlo para cambiar rápidamente entre dos archivos.


Usando ventanas

Ctrl-W sy Ctrl-W vpara dividir la ventana actual horizontal y verticalmente. También puedes usar :splity :vertical split( :spy :vs)

Ctrl-W wpara alternar entre ventanas abiertas, y Ctrl-W h(o jo ko l) para navegar a través de ventanas abiertas.

Ctrl-W cpara cerrar la ventana actual y Ctrl-W opara cerrar todas las ventanas excepto la actual.

Al iniciar vim con un indicador -oo se -Oabre cada archivo en su propia división.


Con todo esto, no necesito pestañas en Vim, y mis dedos encuentran mis amortiguadores, no mis ojos.

Nota: si desea que todos los archivos vayan a la misma instancia de Vim, inicie Vim con la --remote-silentopción.


44
En caso de que estés jugando con múltiples buffers, recomendaría LustyJuggler .
Arun M

1
Gracias por hacer una muy buena referencia rápida para los comandos vim más utilizados cuando se trabaja con varios archivos.
Quanticle

99
:bes un comando muy poderoso porque puede aceptar tanto números de búfer como nombres de búfer como argumentos. ¿Qué más? También admite la finalización de pestañas en cualquier parte del nombre de archivo. Por ejemplo, usted tiene foo.txt abierta en el tampón 2, puede escribir :b 2<Enter>o :b foo.txto :b oo<Tab><Enter>a editar ese archivo. Sí, el último completaría 'oo' a 'foo.txt' cuando presiona <Tab>.
Susam Pal

21
Tengo esta línea en mi .vimrc: nnoremap gb :ls<cr>:b<space>. Cuando escribo gben modo comando, enumera mis búferes y tipos abiertos :b , listos para comenzar a escribir un nombre / número de búfer.
nkorth

55
También vale la pena mencionar que :baceptará una coincidencia de subcadena siempre que no sea ambigua. Así que si usted tiene archivos abiertos foo, bary baz, simplemente :b zes suficiente para cambiar a la bazmemoria intermedia, y :b ooni :b ole llevará a la foomemoria intermedia.
Soren Bjornstad

233
:ls

para la lista de buffers abiertos

  • :bp tampón anterior
  • :bn siguiente búfer
  • :bn( nun número) mover al enésimo búfer
  • :b <filename-part> con tecla de tabulación que proporciona autocompletado (¡increíble!)

En algunas versiones de vim, bny bpson en realidad bnexty bpreviousrespectivamente. El autocompletado de pestañas es útil en este caso.

O cuando esté en modo normal, use ^para cambiar al último archivo en el que estaba trabajando.

Además, puedes guardar sesiones de vim

:mksession! ~/today.ses

El comando anterior guarda las configuraciones y los búferes de archivos abiertos actuales en ~/today.ses. Puede cargar esa sesión usando

vim -S ~/today.ses

Sin problemas para recordar dónde lo dejaste ayer. ;)


ir a un búfer específico: N CTRL- ^
Tom Yang

8
@shyam ¡Creo que te amo! De alguna manera, nunca supe con certeza el comando mksession, pero hoy de la nada decidí que DEBE haber alguna forma de guardar una lista de archivos para abrirlos fácilmente. Esto es aún mejor ya que incluso parece almacenar el estado completo de las cosas (divisiones de ventanas, ubicaciones de búfer, etc.). ¡Así que gracias!
Kasapo

Además, use la "marca para saltar a donde estaba en el archivo la última vez.
Cromo

113

Para agregar a la argslista:

:argadd

Para eliminar de la argslista:

:argdelete

En su ejemplo, podría usar :argedittest.pl para agregar test.pl a la argslista y editar el archivo en un solo paso.

:help args da mucho más detalles y uso avanzado


44
Esta es realmente la respuesta a la pregunta formulada, aunque dado el título, las otras respuestas son perfectamente justas.
Soren Bjornstad

48

Uso comandos de búfer: :bn(búfer siguiente), :bp(búfer anterior) :buffers(lista de búferes abiertos) :b<n>(búfer abierto n) :bd(borrar búfer). :e <filename>solo se abrirá en un nuevo búfer.


18
: es más rápido que: buffers
aehlke

42

Creo que puede estar usando el comando incorrecto para mirar la lista de archivos que ha abierto.

Intente hacer una :lspara ver la lista de archivos que ha abierto y verá:

   1 %a   "./checkin.pl"            line 1
  2 #    "./grabakamailogs.pl"     line 1
  3      "./grabwmlogs.pl"         line 0
  etc.

Luego puede rebotar a través de los archivos haciendo referencia a ellos por los números enumerados, por ejemplo: 3b

o puede dividir su pantalla ingresando el número pero usando sb en lugar de solo b.

Como un aparte% se refiere al archivo actualmente visible y # se refiere al archivo alternativo.

Puede alternar fácilmente entre estos dos archivos presionando Ctrl Shift 6

Editar: como :lspuede usar :regpara ver el contenido actual de sus registros, incluidos los registros 0-9 que contienen lo que ha eliminado. Esto es especialmente útil si desea reutilizar parte del texto que eliminó anteriormente.


2
Es bueno ver a un lado la información relacionada como% y #. +1
Ashish

35

Vim (¡pero no el Vi! Original) tiene pestañas que encuentro (en muchos contextos) superiores a los buffers. Puede decir :tabe [filename]que abra un archivo en una pestaña nueva. El ciclo entre pestañas se realiza haciendo clic en la pestaña o mediante las combinaciones de teclas [ n ] gty gT. Vim gráfico incluso tiene pestañas gráficas.


1
Gracias, suena genial, pero desafortunadamente solo tenemos instalado VIM 6.1 en el servidor.
Edward Tanguay

1
Las pestañas son muy hábil con comodines: vim -p dir/*. El tamaño máximo de la pestaña es 10, pero puede cambiarlo en la ~/.vimrcconfiguración tabpagemaxa otro valor.
Campa

27

Muchas respuestas aquí! Lo que uso sin reinventar la rueda: los complementos más famosos (que no van a morir en el corto plazo y que muchas personas usan) son ultra rápidos y geek.

  • ctrlpvim / ctrlp.vim : para buscar archivos por nombre búsqueda difusa por su ubicación o simplemente por su nombre
  • jlanzarotta / bufexplorer : para examinar los buffers abiertos (cuando no recuerda cuántos archivos abrió y modificó recientemente y no recuerda dónde están, probablemente porque los buscó con Ag)
  • rking / ag.vim para buscar los archivos con respecto a gitignore
  • scrooloose / nerdtree para ver la estructura del directorio, buscar, agregar / eliminar / modificar archivos

EDITAR: Recientemente he estado usando dyng / ctrlsf.vim para buscar con vista contextual (como Sublime search) y cambié el motor de ag a ripgrep . El rendimiento es sobresaliente.

EDIT2: junto con CtrlSF , puede usar mg979 / vim-visual-multi , realizar cambios en varios archivos a la vez y, al final, guardarlos de una vez.


2
ctrlp se ha movido, y ahora se encuentra en ctrlpvim / ctrlp.vim
Dave

1
¡Esta es la respuesta correcta! ¿Por qué no tiene más votos a favor?
Thomas Möbius

2
No tiene más votos a favor porque la pregunta se hizo en 2008. :)
burnettk

exactamente. No puedo imaginarme vim en una configuración de desarrollo sin esos complementos.
Edgar Alloro

25

Cosas como :ey :baddsolo aceptarán UN argumento, por lo tanto, lo siguiente fallará

:e foo.txt bar.txt
:e /foo/bar/*.txt
:badd /foo/bar/*

Si desea agregar varios archivos desde vim, use arga[dd]

:arga foo.txt bar.txt
:arga /foo/bar/*.txt
:argadd /foo/bar/*

21

Algunas respuestas en este hilo sugieren usar pestañas y otras sugieren usar un búfer para lograr lo mismo. Las pestañas y los tampones son diferentes. Le sugiero que lea este artículo " Vim Tab Madness - Buffers vs Tabs ".

Aquí hay un buen resumen que extraje del artículo:

Resumen:

  • Un búfer es el texto en memoria de un archivo.
  • Una ventana es una ventana gráfica en un búfer.
  • Una página de pestañas es una colección de ventanas.

2
Para obtener ese resumen, escriba :help windowVim
icc97

19

Cuando uso múltiples archivos en vim, uso estos comandos principalmente (con ~ 350 archivos abiertos):

  • :b <partial filename><tab> (saltar a un búfer)
  • :bw (limpieza del búfer, eliminar un búfer)
  • :e <file path> (editar, abrir un nuevo búfer>
  • pltags - habilitar saltos a definiciones de subrutinas / métodos

2
350 archivos !!! Eso es impresionante. ¿Cómo encuentras el búfer adecuado para saltar? ¿Alguna vez haces divisiones?
Brian O'Dell

3
@ BrianO'Dell el :b <partial filename><tab>plus set wildmenuen tu .vimrctrabajo bien para cuando tienes toneladas de buffers abiertos. Luego, solo coincide parcialmente y se desplaza por los que encuentra. En otros editores decentes, tiene hallazgos difusos, pero normalmente no puede restringir esos hallazgos difusos solo a los archivos que tiene abiertos.
icc97

17

Agregar otra respuesta ya que esto no está cubierto por ninguna de las respuestas

Para cambiar todos los buffers para tabver.

 :tab sball

abrirá todos los búferes a la vista de pestañas. Entonces podemos usar cualquier comando relacionado con pestañas

gt or :tabn           "    go to next tab
gT or :tabp or :tabN  "    go to previous tab

detalles en :help tab-page-commands.

Podemos indicar a vim que abra, como vista de pestaña, varios archivos por vim -p file1 file2. alias vim='vim -p'será útil.
Lo mismo también se puede lograr al tener el siguiente comando automático en~/.vimrc

 au VimEnter * if !&diff | tab all | tabfirst | endif

De todas formas para responder a la pregunta: ¿Para añadir a la lista de arg: arga file,

Para eliminar de la lista arg: argd pattern

Mas en :help arglist


16

Es posible que desee utilizar las marcas globales de Vim .

De esta manera, puede rebotar rápidamente entre archivos e incluso a la ubicación marcada en el archivo. Además, los comandos de teclado son cortos: 'C me lleva al código con el que estoy trabajando, 'T me lleva a la prueba unitaria con la que estoy trabajando.

Cuando cambia de lugar, restablecer las marcas también es rápido: mC marca el nuevo punto de código, mT marca el nuevo punto de prueba.


12

Yo uso el mismo archivo .vimrc para gVim y la línea de comando Vim. Tiendo a usar pestañas en gVim y buffers en la línea de comando Vim, así que tengo mi .vimrc configurado para facilitar el trabajo con ambos:

" Movement between tabs OR buffers
nnoremap L :call MyNext()<CR>
nnoremap H :call MyPrev()<CR>

" MyNext() and MyPrev(): Movement between tabs OR buffers
function! MyNext()
    if exists( '*tabpagenr' ) && tabpagenr('$') != 1
        " Tab support && tabs open
        normal gt
    else
        " No tab support, or no tabs open
        execute ":bnext"
    endif
endfunction
function! MyPrev()
    if exists( '*tabpagenr' ) && tabpagenr('$') != '1'
        " Tab support && tabs open
        normal gT
    else
        " No tab support, or no tabs open
        execute ":bprev"
    endif
endfunction

Esto cambia las asignaciones existentes para Hy L, pero hace que el cambio entre archivos sea extremadamente rápido y fácil. Solo presiona Hpara el siguiente y Lpara el anterior; ya sea que esté usando pestañas o buffers, obtendrá los resultados deseados.


1
Me gustan estos mapeos. Prueba también Ctrl-H, Ctrl-L. Configuré Firefox y el terminal gnome con las mismas asignaciones. Muy agradable tener atajos de teclado consistentes.
cmcginty el

44
use su clave de líder en lugar de ctrl para evitar alterar las asignaciones existentes
aehlke

10

Si va a utilizar múltiples buffers, creo que lo más importante es establecer ocultos para que le permita cambiar los buffers incluso si tiene cambios no guardados en el que está dejando.


9

Si usa solo los comandos integrados de vim , el mejor que he visto para cambiar entre múltiples buffers es este:

nnoremap <Leader>f :set nomore<Bar>:ls<Bar>:set more<CR>:b<Space>

Combina perfectamente ambos :lsy :bcomandos: enumera todos los búferes abiertos y espera a que ingrese el comando para cambiar el búfer.

Dado el mapeo anterior en vimrc, una vez que escribe <Leader>f,

  • Se muestran todos los búferes abiertos.
  • Usted puede:
    • Escriba 23para ir al búfer 23,
    • Escriba #para ir al búfer alternativo / MRU,
    • Escriba el nombre parcial del archivo, luego escriba <Tab>o <C-i>para autocompletar,
    • O simplemente <CR>o <Esc>para permanecer en el búfer actual

Una instantánea de la salida para la asignación de teclas anterior es:

:set nomore|:ls|:set more
  1  h    "script.py"    line 1
  2 #h  + "file1.txt"    line 6  -- '#' for alternative buffer
  3 %a    "README.md"    line 17 -- '%' for current buffer
  4       "file3.txt"    line 0  -- line 0 for hasn't switched to
  5     + "/etc/passwd"  line 42 -- '+' for modified
:b '<Cursor> here'

En la instantánea anterior:

  • Segunda columna: %apara actual, hpara oculto, #para anterior, vacío para no se ha cambiado a.
  • Tercera columna: +para modificado.

Además, sugiero encarecidamente set hidden. Ver :help 'hidden'.


Esta es una gran idea! He estado usando :by :lsmucho pero de forma independiente. Creo que esto se vuelve menos útil cuando tienes más de una página de buffers, pero aún así puedes recurrir a:b
icc97

Me alegra ver que ayuda. ¡Salud! :)
qeatzy

Desde esta wikia de Vim , puedes acortarlo un poco nnoremap <leader>f :ls<cr>:b<space>, que podría tener problemas con el comando 'más'
icc97

Sí, de esa manera funciona perfectamente si hay menos archivos abiertos (el caso de uso habitual). set morelas cosas solo hacen la diferencia cuando hay muchos archivos abiertos (más de una página), por ejemplo vim /usr/include/*, aunque menos útiles entonces.
qeatzy

8

Utilizo lo siguiente, esto le brinda muchas características que esperaría tener en otros editores como Sublime Text / Textmate

  1. Use buffers no 'páginas de pestañas'. Los buffers son el mismo concepto que las pestañas en casi todos los demás editores.
  2. Si desea que el mismo aspecto de tener pestañas puede utilizar el vim-aérea plugin con la siguiente configuración en su .vimrc: let g:airline#extensions#tabline#enabled = 1. Esto muestra automáticamente todos los búferes como encabezados de pestañas cuando no hay páginas de pestañas abiertas
  3. Use el vim-intacto de Tim Pope que le da [by ]bpara pasar a los buffers anteriores / siguientes respectivamente (más una gran cantidad de otras cosas)
  4. Tiene set wildmenuen su .vimrccontinuación, cuando se escribe :b <file part>+ Tabpara un buffer obtendrá una lista de posibles buffers que se puede usar / flechas derecha para desplazarse por la izquierda
  5. Use el complemento de vim-obsession de Tim Pope para almacenar sesiones que funcionan bien con la aerolínea (tuve mucho dolor con las sesiones y los complementos )
  6. Usa el plugin vim-vinagre de Tim Pope . Esto funciona con el nativo, :Explorepero hace que sea mucho más fácil trabajar con él. Simplemente escriba -para abrir el explorador, que es la misma clave que para subir un directorio en el explorador. Hace que la navegación sea más rápida (sin embargo, con fzf rara vez uso esto)
  7. fzf (que se puede instalar como un complemento vim) también es un buscador difuso realmente poderoso que puede usar para buscar archivos (y también almacenamientos intermedios). fzf también juega muy bien con fd (una versión más rápida de find)
  8. Use Ripgrep con vim-ripgrep para buscar a través de su base de código y luego puede usar :cdolos resultados para buscar y reemplazar

fzf y fzf-vim cambiaron mi vida, no puedo recomendarlo lo suficiente. También funciona muy bien en Windows, incluso en la consola para la búsqueda difusa de archivos. En Windows, use el backend ripgrep (rg), que en mi experiencia supera a cualquier otra herramienta find / grep (como silversearcher o las ventanas predeterminadas encuentran que fzf usa iirc). Puede usarlo para buscar en cualquier lista de elementos: archivos usados ​​más recientes, memorias intermedias abiertas actualmente, líneas en la memoria intermedia actual, líneas en la base de código (cwd), etiquetas, ... puede programar fácilmente su propia búsqueda difusa de listas. ¡Tan bueno! (Vine de ctrl-p y nunca miré hacia atrás)
Emile Vrijdags el

7

Mi forma de trabajar eficazmente con múltiples archivos es usar tmux.

Le permite dividir ventanas vertical y horizontalmente, como en:

ingrese la descripción de la imagen aquí

Lo tengo funcionando de esta manera en mis máquinas Mac y Linux y lo encuentro mejor que el mecanismo de cambio de panel de ventana nativo que se proporciona (en Mac). Encuentro el cambio más fácil y solo con tmux he podido hacer que la 'nueva página en el mismo directorio actual' funcione en mi mac (a pesar del hecho de que parece haber opciones para abrir nuevos paneles en el mismo directorio) que es Una pieza sorprendentemente crítica. Un nuevo panel instantáneo en la ubicación actual es increíblemente útil. Un método que crea nuevos paneles con las mismas combinaciones de teclas para ambos sistemas operativos es fundamental para mí y una ventaja para todos para la compatibilidad personal futura. Además de múltiples paneles tmux, también he intentado usar varias pestañas, por ejemplo, ingrese la descripción de la imagen aquíy varias ventanas nuevas, por ejemploingrese la descripción de la imagen aquíy finalmente descubrí que múltiples paneles tmux son los más útiles para mí. Soy muy 'visual' y me gusta mantener mis diversos contextos justo frente a mí, conectados entre sí como paneles.

tmux también admite paneles horizontales y verticales que los anteriores screenno (aunque mac's iterm2 parece admitirlo, pero de nuevo, la configuración actual del directorio no funcionó para mí). tmux 1.8


1
Tuve que jajaja cuando vi tu ejemplo artificial de "múltiples ventanas". Espero que nadie trabaje así :-) De todos modos, uso el mosaico wm que es aún mejor (cambié de tmux a i3wm). Solo para completar tu respuesta.
lzap

1
Tmux es increíble y utilicé este enfoque durante mucho tiempo, pero hace que la navegación, la copia y el pegado entre dos archivos sean más difíciles.
Neallred

1
Solía ​​hacer esto, pero tener múltiples buffers vim es superior cuando necesitas tirar / pegar
Titou

3

Uso la línea de comando y git mucho, así que tengo este alias en mi bashrc:

alias gvim="gvim --servername \$(git rev-parse --show-toplevel || echo 'default') --remote-tab"

Esto abrirá cada nuevo archivo en una nueva pestaña en una ventana existente y creará una ventana para cada repositorio git. Entonces, si abre dos archivos del repositorio A y 3 archivos del repositorio B, terminará con dos ventanas, una para el repositorio A con dos pestañas y otra para el repositorio B con tres pestañas.

Si el archivo que está abriendo no está contenido en un repositorio de git, irá a una ventana predeterminada.

Para saltar entre pestañas, uso estas asignaciones:

nmap <C-p> :tabprevious<CR>
nmap <C-n> :tabnext<CR>

Para abrir varios archivos a la vez, debe combinar esto con una de las otras soluciones.


3

Yo uso múltiples buffers que están ocultos en mi ~/.vimrcarchivo.

El script explorador mini-buffer también es bueno para obtener una buena lista compacta de sus buffers. Entonces :b1o :b2... para ir al búfer apropiado o usar el explorador de mini-búfer y pasar por los búferes.


2

intente seguir los mapas para editar con comodidad varios archivos

"ventanas divididas

nmap <leader>sh :leftabove vnew<CR>

nmap <leader>sl :rightbelow vnew<CR>

nmap <leader>sk :leftabove new<CR>

nmap <leader>sj :rightbelow new<CR>

"moviéndose

nmap <C-j> <C-w>j

nmap <C-k> <C-w>k

nmap <C-l> <C-w>l

nmap <C-h> <C-w>h


2

Hice un video muy simple que muestra el flujo de trabajo que uso. Básicamente utilizo el complemento Ctrl-P Vim, y asigné la navegación del búfer a la tecla Intro.

De esta forma, puedo presionar Enter en modo normal, mirar la lista de archivos abiertos (que aparece en una pequeña ventana nueva en la parte inferior de la pantalla), seleccionar el archivo que quiero editar y presionar Enter nuevamente. Para buscar rápidamente a través de múltiples archivos abiertos, simplemente escriba parte del nombre del archivo, seleccione el archivo y presione Entrar.

No tengo muchos archivos abiertos en el video, pero se vuelve increíblemente útil cuando comienzas a tener muchos de ellos.

Dado que el complemento clasifica los búferes utilizando un pedido MRU, puede presionar Entrar dos veces y saltar al archivo más reciente que estaba editando.

Después de instalar el complemento, la única configuración que necesita es:

nmap <CR> :CtrlPBuffer<CR>

Por supuesto, puede asignarlo a una clave diferente, pero creo que la asignación para ingresar es muy útil.


2

Sugeriría usar el complemento

NERDtree

Aquí está el enlace de github con instrucciones.

Nerdtree

Uso vim-plug como administrador de complementos, pero también puedes usar Vundle.

vim-plug

Vundle


2

En mi y otros muchos usuarios de vim, la mejor opción es,

  • Abra el archivo usando

: e nombre_archivo.extensión

Y luego simplemente Ctrl + 6 para cambiar al último búfer. O siempre puedes presionar

: ls para enumerar el búfer y luego cambiar el búfer usando b seguido del número del búfer.

  • Hacemos una división vertical u horizontal usando

: vsp para división vertical

: sp para división horizontal

Y luego <C-W><C-H/K/L/j>para cambiar la división de trabajo.

Por supuesto, puede editar cualquier archivo en cualquier cantidad de divisiones.


Por favor, editar su respuesta para asegurarse de que mejora las otras respuestas que ya están presentes en esta pregunta.
hongsy

1

Cuando comencé a usar VIM no me di cuenta de que se suponía que las pestañas debían usarse como diferentes diseños de ventana, y el búfer cumple la función de edición / cambio de múltiples archivos entre sí. En realidad, al principio, las pestañas ni siquiera estaban allí antes de v7.0 y acabo de abrir un VIM dentro de una pestaña de terminal (estaba usando gnome-terminal en este momento), y cambiar entre pestañas usando alt + números, ya que pensé usar comandos como : buffers,: bn y: bp fueron demasiado para mí. Cuando se lanzó VIM 7.0, encuentro que es más fácil administrar una gran cantidad de archivos y cambiarlo, pero recientemente me di cuenta de que los buffers siempre deberían ser el camino a seguir, a menos que sea una cosa: debe configurarlo para que funcione correctamente.

Así que probé vim-airline y habilité la barra de búfer visual similar a una pestaña, pero el gráfico tenía problemas con mi iTerm2, así que probé un par de otros y parece que MBE funciona mejor para mí. También configuré shift + h / l como accesos directos, ya que los originales (mover a la cabeza / cola de la página actual) no me son muy útiles.

map <S-h> :bprev<Return>
map <S-l> :bnext<Return>

Parece ser incluso más fácil que gt y gT, y: e es más fácil que: tabnew también. Encuentro: bd no es tan conveniente como: q aunque (MBE está teniendo algún problema), pero creo que puedo vivir con todos los archivos en el búfer.



0

La mayoría de las respuestas en este hilo están usando comandos vim simples, lo que por supuesto está bien, pero pensé que proporcionaría una respuesta extensa usando una combinación de complementos y funciones que encuentro particularmente útiles (al menos algunos de estos consejos provienen del archivo de Gary Bernhardt consejos de navegación ):

  1. Para alternar entre los dos últimos archivos, simplemente presione <leader>dos veces. Recomiendo asignar <leader>a la barra espaciadora:

    nnoremap <leader><leader> <c-^>
    
  2. Para moverse rápidamente por un proyecto, la respuesta es una solución de coincidencia difusa como CtrlP . Lo ato <leader>apara un acceso rápido.

  3. En el caso de que quiera ver una representación visual de los búferes abiertos actualmente, uso el complemento BufExplorer . Simple pero efectivo.

  4. Si quiero navegar por el sistema de archivos, usaría la línea de comando o una utilidad externa (Quicklsilver, Afred, etc.) pero para ver la estructura actual del proyecto, NERD Tree es un clásico. Sin embargo, no use esto 2como el método principal de búsqueda de archivos. Realmente te retrasará. Yo uso el enlace <leader>ff.

Estos deberían ser suficientes para encontrar y abrir archivos. A partir de ahí, por supuesto, use divisiones horizontales y verticales. Con respecto a las divisiones, encuentro estas funciones particularmente útiles:

  1. Abra nuevas divisiones en áreas más pequeñas cuando no haya suficiente espacio y amplíelos en la navegación. Consulte aquí para comentarios sobre lo que estos hacen exactamente:

    set winwidth=84
    set winheight=5
    set winminheight=5
    set winheight=999
    
    nnoremap <C-w>v :111vs<CR>
    nnoremap <C-w>s :rightbelow split<CR>
    set splitright
    
  2. Mover de división en división fácilmente:

    nnoremap <C-J> <C-W><C-J>
    nnoremap <C-K> <C-W><C-K>
    nnoremap <C-L> <C-W><C-L>
    nnoremap <C-H> <C-W><C-H>
    

0

Puede ser un loco absoluta y el alias vima vim -pañadiendo en su .bashrc:

alias vim="vim -p"

Esto dará como resultado la apertura de múltiples archivos desde el shell en pestañas, sin tener que invocar :tab balldesde dentro de vim después.

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.