Usando el editor vim, una tarea común es buscar buffers. Ahora uso comandos estándar como :ls
o a :bnext
. De hecho puse en mi .vimrc:
"move amongs buffers with CTRL
map <C-J> :bnext<CR>
map <C-K> :bprev<CR>
Me gustaría examinar los buffers como una lista en la ventana de revisión rápida, de la manera simple (= excelente) que implementa el complemento MRU .
¿Existe un complemento tan simple como MRU pero que actúa sobre buffers?
OK, una posible solución podría ser usar el :CtrlpBuffers
comando, parte del complemento Ctrlp, pero no soy un gran admirador de Ctrlp, porque a veces tengo comportamientos extraños que no entiendo completamente (las selecciones de modo difuso ...); así que busco algo realmente simple como el complemento MRU.
Por cierto, bromeé con el :cexpr {expr}
comando, intentando llenar las ventanas de corrección rápida con el contenido de la :buffers
lista, sin éxito (tal vez porque mi ignorancia programaba vimscripts)
Cualquier sugerencia ?
:bnext
lugar de:cnext
?Respuestas:
Puede completar la lista de soluciones rápidas con cada búfer de esta manera:
setqflist()
toma una lista de elementos del diccionario que describe cada error (nombre de archivo, número de línea, posición, etc.). En este caso, estamos especificando un conjunto mínimo de información: el número de búfermap()
toma una Lista y una expresión (una cadena) y devuelve una nueva Lista de la expresión aplicada a cada elemento de la Lista de entrada. Aquí, tomamos una Lista de números de búfer enumerados y los formateamos para su uso ensetqflist()
('{"bufnr": v:val}'
, dondev:val
es el valor del elemento en la lista)filter()
filtra una Lista, eliminando elementos que no satisfacen una expresión dada. Aquí la expresión esbuflisted(v:val)
, lo que significa que el número de búfer existe y está en la lista, es decir, aparece en la:ls
salidarange(a, b)
genera una lista de números desdea
hastab
bufnr()
devuelve el número de un nombre de búfer dado. Si el argumento es'$'
, devuelve el número de búfer más altoEs mucho para escribir, y no es muy memorable, por lo que puede envolverlo en un comando en su vimrc:
Ahora puede usar
:Qbuffers
para completar la lista de soluciones rápidas.Si desea que esto se actualice automáticamente a medida que se agregan nuevas memorias intermedias, puede hacer algo como esto:
Sin embargo, no recomendaría esto, ya que hará que la lista de soluciones rápidas sea bastante inutilizable para cosas como
:make
o:grep
.fuente
Deberías probar este mapeo:
En el indicador, escriba el número de búfer deseado y presione Entrar.
fuente
Echa un vistazo al plugin bufexplorer . Abre una lista navegable de todos los buffers en una barra lateral, similar al complemento MRU mencionado. Además, hay varios complementos más en vim.org .
PD: Has hecho la misma pregunta sobre Stack Overflow ; ¡no envíe la misma pregunta a varios sitios en paralelo!
fuente