С помощью редактора vim обычной задачей является просмотр буферов. Теперь я использую стандартные команды, такие как :ls
или :bnext
. На самом деле я установил в моем .vimrc:
"move amongs buffers with CTRL
map <C-J> :bnext<CR>
map <C-K> :bprev<CR>
Я хотел бы просмотреть буферы в виде списка в окне быстрого исправления простым (= превосходным) способом, который реализует плагин MRU .
Есть ли такой простой плагин, как MRU, но работающий на буферах?
Хорошо, возможное решение могло бы состоять в том, чтобы использовать :CtrlpBuffers
команду, часть плагина Ctrlp, но я не большой поклонник Ctrlp, потому что иногда у меня странное поведение, которое я не до конца понимаю (выбор нечеткого режима ...); поэтому я ищу что-то действительно простое, как плагин MRU.
Кстати, я пошутил с :cexpr {expr}
командой, пытаясь заполнить окна быстрого исправления содержимым :buffers
списка, но безуспешно (возможно, из-за моего невежественного программирования vimscripts)
Любое предложение ?
:bnext
вместо:cnext
?Ответы:
Вы можете заполнить список быстрых исправлений каждым буфером следующим образом:
setqflist()
принимает список элементов словаря, описывающих каждую ошибку (имя файла, номер строки, положение и т. д.). В этом случае мы указываем минимальный набор информации: номер буфераmap()
принимает список и выражение (строку) и возвращает новый список выражения, примененного к каждому элементу входного списка. Здесь мы берем список перечисленных номеров буферов и форматируем их для использования вsetqflist()
('{"bufnr": v:val}'
гдеv:val
значение элемента в списке)filter()
фильтрует список, удаляя элементы, которые не удовлетворяют данному выражению. Здесь выражение означаетbuflisted(v:val)
, что номер буфера существует и указан в списке, то есть появляется в:ls
выходных данных.range(a, b)
генерирует список номеров отa
доb
bufnr()
возвращает номер заданного имени буфера. Если аргумент равен'$'
, он возвращает самый большой номер буфераЭто много для ввода, и не очень запоминающимся, так что вы можете заключить его в команду в вашем vimrc:
Теперь вы можете просто использовать
:Qbuffers
для заполнения списка быстрых исправлений.Если вы хотите, чтобы это обновлялось автоматически при добавлении новых буферов, вы можете сделать что-то вроде этого:
Однако я бы не рекомендовал это, поскольку это сделает список быстрых исправлений непригодным для таких вещей, как
:make
или:grep
.источник
Вы должны попробовать это отображение:
В командной строке введите желаемый номер буфера и нажмите Enter.
источник
Взгляните на плагин bufexplorer . Он открывает просматриваемый список всех буферов в боковой панели, аналогично упомянутому плагину MRU. Также на vim.org есть еще несколько таких плагинов .
PS: вы задали тот же вопрос о переполнении стека ; Пожалуйста, не задавайте одинаковый вопрос нескольким сайтам параллельно!
источник