List Vim active buffers with Selecta
Migrating from Command-T to
Selecta left one thing missing, list
the active buffers. In order to feed Selecta through STDIN
I had to create a
function that outputs a shell command with all active buffers line by line.
Here's the function:
function! ListActiveBuffers()
let bufferlist = []
for l:bni in range(bufnr("$"), 1, -1)
if buflisted(l:bni)
call add(bufferlist, bufname(l:bni))
endif
endfor
return "echo ".join(bufferlist, ' ')." | tr ' ' '\\n' "
endfunction
This function goes through all buffer numbers, check if the buffer is listed and
adds to a list called bufferlist
. Then it concatenates all elements outputting
a shell command, as an example:
echo buffer1 buffer2 buffer3 | tr ' ' '\n'
Then this is "pipped" (fed into SelectaCommand()) to Selecta. Now we create a Vim mapping:
nnoremap <leader>b :exec ":e " SelectaCommand(ListActiveBuffers())<cr>
And we are done.
Published in Jan 10, 2014