He intentado MiniBufExplorer, pero generalmente termino con varias ventanas que lo muestran o lo cierro por completo. Lo que me gustaría es algo así como LustyJuggler con búsqueda incremental, la forma en que cambio entre memorias intermedias en Emacs. Seguramente hay un guión como este?¿Cómo prefiere cambiar entre buffers en Vim?
Respuesta
He estado usando Wincent Colaiuta's Command-T vim plugin durante un par de meses. Wincent escribió las partes que necesitan ser rápidas en C, ¡y debo decir que así es! Y, creo que su lógica de coincidencia de patrones de archivos es incluso mejor que Command-T de Textmate. Consulte el screencast.
El plug-in Comando-T para VIM ofrece un mecanismo intuitivo extremadamente rápido para abrir archivos con un mínimo número de pulsaciones. Se llama "Command-T" porque está inspirada en la ventana "Ir a archivo" vinculada a Command-T en TextMate.
archivos se seleccionan escribiendo caracteres que aparecen en sus caminos, y son ordenados por un algoritmo que sabe que los caracteres que aparecen en ciertas ubicaciones (por ejemplo, inmediatamente después de un separador de ruta) deben recibir más peso.
Easier buffer switching contiene muchos consejos útiles. He adaptado lo siguiente a mi .vimrc, que realiza autocompletado de nombre de buffer, asigna los comandos de conmutación de buffer más útiles a mi <Leader> y las teclas de la fila de inicio izquierda, y muestra el número de búfer actual en la línea de estado :
"" Tab triggers buffer-name auto-completion
set wildchar=<Tab> wildmenu wildmode=full
let mapleader = ","
map <Leader>t :CommandT<Return>
map <Leader>a :bprev<Return>
map <Leader>s :bnext<Return>
map <Leader>d :bd<Return>
map <Leader>f :b
"" Show the buffer number in the status line.
set laststatus=2 statusline=%02n:%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P
también uso MiniBufExplorer, que proporciona una lista compacta de cada búfer que aparece en su propia parte superior dividir horizontal.
uso simple: vsplit con^W + w/^ W + r y: tabnew con combinaciones de teclas Ctrl + Alt + PgUp/PgDown.
uso el básico - ':ls
' + ':bn
'/' :bp
' + ':b <part-of-name>
'
:-) Nunca pensé que vería "simple" y "': ls' + ': bn'/': bp' + ': b
Pax, todavía no lo veo. :-) – csexton
Esto, más ': map
imap <A-1> <Esc>:tabn 1<CR>i
imap <A-2> <Esc>:tabn 2<CR>i
imap <A-3> <Esc>:tabn 3<CR>i
imap <A-4> <Esc>:tabn 4<CR>i
imap <A-5> <Esc>:tabn 5<CR>i
imap <A-6> <Esc>:tabn 6<CR>i
imap <A-7> <Esc>:tabn 7<CR>i
imap <A-8> <Esc>:tabn 8<CR>i
imap <A-9> <Esc>:tabn 9<CR>i
map <A-1> :tabn 1<CR>
map <A-2> :tabn 2<CR>
map <A-3> :tabn 3<CR>
map <A-4> :tabn 4<CR>
map <A-5> :tabn 5<CR>
map <A-6> :tabn 6<CR>
map <A-7> :tabn 7<CR>
map <A-8> :tabn 8<CR>
map <A-9> :tabn 9<CR>
Lo más interesante de Vim es que puedes aprender algo todos los días. –
La pregunta es sobre * buffers *, not * tabs * ... pero puedes ': tab sball' primero, o en lugar de usar': tabn' deberías usar ': buffer' – pera
Solía usar una combinación de pestañas y varias instancias gvim, manteniendo grupos de archivos relacionados como pestañas en cada instancia. Siempre que no termine con demasiadas pestañas en una instancia, la barra de pestañas le muestra el nombre de cada archivo que está editando de un vistazo.
luego leí un post de Jamis Buck sobre cómo cambió from TextMate back to vim, y aprendieron algunos grandes trucos:
- Ctrl-w s y v Ctrl-W para dividir la ventana actual
- Ctrl-6 para alternar entre dos almacenamientos intermedios en la misma ventana.
- la impresionante fuzzyfinder.vim que le da autocompletar la búsqueda de archivos en el directorio actual o de tampones que tiene abiertas
- Jamis propia fuzzy_file_finder y fuzzyfinder_textmate, que modificar ligeramente la forma fuzzyfinder funciona a comportarse más como una característica similar en TextMate (actualmente por lo que puedo decir, la diferencia es que coincide con cualquier parte del nombre de archivo en lugar de solo desde el principio). Mira this video para verlo en acción.
Ahora solo tengo una instancia de gvim, maximizada, y la divido en varias ventanas para que pueda ver varios archivos a la vez. Ataba Ctrl-F a fuzzyfinder_textmate, así que ahora si escribo (digamos) Ctrl-F mod/usob
, se abre la aplicación/modelos/user_observer.rb. Casi nunca me molesto con pestañas más.
Actualización 2010/08/07
Mientras fuzzyfinder_textmate sigue siendo impresionante, como se señala en los comentarios de Casey, que ya no es mantenido. Además, (y/o fuzzyfinder.vim) se vuelve un poco lento e inestable cuando se trabaja con proyectos grandes (muchos directorios o archivos), así que he estado buscando una alternativa.
Afortunadamente, parece haber una muy buena alternativa en la forma de 's Command-T plugin. Esto tiene un comportamiento muy similar (si no un poco mejor) a fuzzyfinder_textmate, pero es notablemente más rápido; también tiene buenas características como poder abrir el archivo encontrado en una división o división vertical. ¡Gracias (y votaciones ascendentes!) A David Rivers por señalarlo.
Sí, fuzzyfinder está muy cerca a lo que quiero –
Jamis 'fuzzyfinder_textmate completa vim. ¡Realmente debería convertirse en una característica central! – csexton
Parece que Jami ha dejado de trabajar en este proyecto. ¿Tal vez el autor original tendrá estas características? http://weblog.jamisbuck.org/2009/1/28/the-future-of-fuzzyfinder-textmate – cmcginty
La excelente Buffer Explorer, ha llegado a ser una memoria muscular tan fuerte que desearía poder utilizarla en otras aplicaciones. Me parece extremadamente rápido cuando edito activamente más de dos archivos.
Me gusta "ctrl-w s" y "ctlr-w v" para dividir la ventana.Luego asigno las teclas de movimiento (h, j, k, l) con Ctrl pulsada para moverse entre las ventanas divididas:
" Map ctrl-movement keys to window switching
map <C-k> <C-w><Up>
map <C-j> <C-w><Down>
map <C-l> <C-w><Right>
map <C-h> <C-w><Left>
tener que mover la mano hacia las teclas de flecha es molesto.
A continuación, estableció CTLR-Tab para cambiar entre memorias intermedias en la ventana actual (como muchos de los otros ambientes):
" Switch to alternate file
map <C-Tab> :bnext<cr>
map <C-S-Tab> :bprevious<cr>
Estos han trabajado bastante bien para mí en los últimos años, aunque vim siempre tiene más secretos de los que puedes saber.
Tu comentario "cambiar a archivo alternativo" es engañoso porque Vim ya tiene un archivo alternativo, es el archivo anterior en el que estabas, y puedes cambiar los archivos actuales (%) y alternativos (#) fácilmente usando ctrl-6. – graywh
Además,
He pasado bastante tiempo construyendo mi .vimrc para trabajar con este proyecto HTML :: Mason en el que he estado durante cuatro años, así que tengo una mezcla extraña de pestañas y ventanas divididas. Para su disfrute viendo:
map ;o :Sex <CR>
map <C-J> <C-W>j
map <C-K> <C-W>k
map <C-l> <C-W>l
map <C-h> <C-W>h
map ;] :tabnext<CR>
map ;[ :tabprev<CR>
map <C-t> :tabe +"browse ."<CR>
map <C-O> :NERDTreeToggle ~/curr/trunk/<CR>
utilizo tselectbuffer. Es muy rápido y, a diferencia de bufexplorer, no ocupa espacio en tu ventana. También tiene una búsqueda incremental. Intenté minibufexplorer y encontré la navegación en el buffer un poco difícil.
Gracias por el puntero, ahora uso ambos. Los valores predeterminados para BufExplorer son ', be',', bs', ', bv', por lo que asigné TSelectBuffer a', bb'. –
para enumerar y cambiar entre los tampones que utilizo:
nnoremap <Leader>l :ls<CR>:b<space>
Para cambiar entre los tampones:
map <Leader>n :bn<CR>
map <Leader>p :bp<CR>
he mapeado <S-J>
y <S-K>
a :bp
y :bn
, aunque admito que no lo uso como el número de archivos es mayor que 10. Luego han mapeado <C-J>
y <C-K>
a las pestañas anteriores y siguientes del Terminal de GNOME, y Normalmente ejecuto 4 instancias de vim para cada uno de los 4 proyectos diferentes en los que trabajo. Todavía me gustaría que el buffer siguiente y anterior vaya al historial de los buffers en los que he estado trabajando, y no al orden en la lista de buffer.
utilizo
CTRL - J para el próximo búfer
CTRL - K para el tampón anterior
CTRL - L para la siguiente pestaña
CTRL - H para la ficha anterior
Aquí está la configuración .vimrc
:
map <C-J> :bnext<CR>
map <C-K> :bprev<CR>
map <C-L> :tabn<CR>
map <C-H> :tabp<CR>
recientemente me he vuelto más minimalista.
Para tampones ciclo utilizo ] b y [b de irreprochable: https://github.com/tpope/vim-unimpaired
saltar directamente a una memoria intermedia abierta sólo tiene que utilizar de Vim tabulador con : b. Algunas letras son suficientes para llegar a cualquier búfer abierto con una pestaña o dos.
De manera similar a los búferes abiertos, uso : e con rutas de acceso relativas y pestañas completas.
También uso : ls de vez en cuando para ver qué almacenamientos intermedios tengo abierto (y para comprobar su estado modificado).
Para deshacerse de un búfer, uso : bw para limpiar el búfer. Normalmente hago una división temporal y cambio los búferes para preservar mi diseño, ya que desde : bw también se cierra la ventana activa.
Todas las cosas minibuf que intenté terminaron por molestarme, y no quiero que algo parecido coincida al abrir archivos aleatorios para mí. Si realmente necesito buscar algo, uso NERDtree (: e.).
IDK, Últimamente también se redujo Yankring (porque se estropea XP) y empecé a usar registros, y recientemente he decidido las f/t movimientos son lo mejor del mundo ...
Esto es todo un gran consejo. Mapeé '
Cuando hay varios búferes abiertos en una sesión de Vim, puede ser difícil hacer un seguimiento de los búferes y sus respectivos números de búfer. Si este es el caso, el cambio a un archivo diferente puede hacer más fácil el uso de un mapa sencillo:
: nnoremap (F5): Los tampones (CR): tampón (espacio)
Uso tselectbuffer. Es muy rápido y, a diferencia de bufexplorer, no ocupa espacio en tu ventana. También tiene una búsqueda incremental. Intenté minibufexplorer y encontré la navegación en el buffer un poco difícil.
- 1. Buffers por tabulación en vim
- 2. Vim mantener posición de ventana al cambiar buffers
- 3. vim - ¿cómo cerrar todos los buffers en la pestaña actual?
- 4. Ejecutar una macro en todos los buffers en vim
- 5. Cómo voltear ventanas en vim?
- 6. ¿Cómo cambiar teclas cortas en Vim?
- 7. Cómo cambiar al modo REPLACE en VIM
- 8. ¿Cómo cambiar el reconocimiento de palabras en el hechizo vim?
- 9. vim: buscar sustituir más de todos los buffers de escritura
- 10. Cambiar citas adjuntas en Vim
- 11. ¿Cómo administrar eficazmente pestañas/almacenamientos intermedios en vim?
- 12. ¿Cómo puedo ver y desplazar sincrónicamente buffers divididos verticalmente en Vim?
- 13. cómo controlar a distancia Bugzilla (Python prefiere)
- 14. Seleccionar entre páginas en Vim?
- 15. Lo que se prefiere entre liftM, lilftA, etc.
- 16. C++ cout y cin buffers, y buffers en general
- 17. ¿Cambiar color de sintaxis en vim?
- 18. ¿Cómo prefiere organizar las definiciones de excepción?
- 19. Cambiar a una pestaña particular en VIM
- 20. Emacs buffer-menu: ¿cómo mostrar solo el archivo + dired buffers?
- 21. Buffers de limpieza en C
- 22. VIM: ¿Cómo moverse entre las etiquetas coincidentes?
- 23. Cambiar el color de tilde (~) en Vim
- 24. Cambiar nombres de variables en Vim
- 25. ¿Cómo cambiar entre búferes visibles en emacs?
- 26. Buffers de protocolo de Google en C#
- 27. Cómo cambiar el orden de: bnext y: bprevious en vim?
- 28. Cómo cambiar la forma del cursor vim en diferentes modos
- 29. cómo cambiar^M a la nueva línea en vim?
- 30. Cambiar a la última pestaña activa en VIM
Tengo que estar de acuerdo con lo que [Zathrus] (http://stackoverflow.com/users/16220/zathrus) dijo [aquí] (http://stackoverflow.com/questions/102384/using-vims-tabs- like-buffers # 103590). Las pestañas en Vim (o Emacs con TabBar para el caso) simplemente no funcionan como en las interfaces con pestañas habituales. –