2008-11-29 60 views

Respuesta

23

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.

0

uso simple: vsplit con^W + w/^ W + r y: tabnew con combinaciones de teclas Ctrl + Alt + PgUp/PgDown.

+1

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. –

33

uso el básico - ':ls' + ':bn '/' :bp' + ':b <part-of-name>'

+8

:-) Nunca pensé que vería "simple" y "': ls' + ': bn'/': bp' + ': b ' '' en la misma oración. – paxdiablo

+16

Pax, todavía no lo veo. :-) – csexton

+0

Esto, más ': map : bn ' y ': map : bp ', ya que 'C-n' y' C-p' son rápidos de escribir y permiten el ciclo entre búferes si los presiona repetidamente. (Nunca los usé para su propósito original). Es como desplazarse entre las pestañas del navegador con 'C-PgUp' y' C-PgDn' o cualquier atajo que tenga su navegador. – Tobia

5
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> 
+1

Lo más interesante de Vim es que puedes aprender algo todos los días. –

+0

La pregunta es sobre * buffers *, not * tabs * ... pero puedes ': tab sball' primero, o en lugar de usar': tabn' deberías usar ': buffer' – pera

72

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.

+0

Sí, fuzzyfinder está muy cerca a lo que quiero –

+0

Jamis 'fuzzyfinder_textmate completa vim. ¡Realmente debería convertirse en una característica central! – csexton

+0

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

2

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.

31

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.

+3

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

+9

Además, con hjkl cambiará las ventanas - no se requieren teclas de flecha. – graywh

+3

está pidiendo RSI. He asignado a ': bp' y a': bn' – puk

2

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> 
2

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.

+0

Gracias por el puntero, ahora uso ambos. Los valores predeterminados para BufExplorer son ', be',', bs', ', bv', por lo que asigné TSelectBuffer a', bb'. –

2

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> 
17
nmap <Leader>bb :ls<CR>:buffer<Space> 

y nadie mencionado buen complemento ctrlp.vim. Usando este plugin puedes buscar buffer por nombre.

+0

¡Me gusta ese mapeo! Inteligente y flexible. – ivan

2

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.

14

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> 

Ver http://syskall.com/my-biggest-vim-productivity-boost/

6

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 ...

+0

Esto es todo un gran consejo. Mapeé ' ll' a': ls'. También es muy útil asegurarse de tener 'set wildmenu' en su' .vimrc', ya que luego obtiene un pequeño menú que presenta todas las alternativas para ': b' – icc97

0

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)

vim.wikia.com

2

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.

Cuestiones relacionadas