Vim의 퀵 픽스 창에 버퍼를 어떻게 나열합니까?


13

vim 편집기를 사용하는 일반적인 작업은 버퍼를 찾아 보는 것입니다. 이제는 또는와 같은 표준 명령을 사용 :ls합니다 :bnext. 사실 나는 내 .vimrc에 설정했습니다.

"move amongs buffers with CTRL
map <C-J> :bnext<CR>
map <C-K> :bprev<CR>

MRU 플러그인이 구현 하는 간단한 (= 우수한) 방식으로 quickfix 창에서 목록으로 버퍼를 탐색하고 싶습니다 .

MRU처럼 간단하지만 버퍼에 작용하는 플러그인이 있습니까?

OK, 가능한 해결책 :CtrlpBuffersCtrlp 플러그인의 일부인 command 를 사용하는 것이지만 때로는 완전히 이해하지 못하는 이상한 행동 (퍼지 모드 선택 ...)이 있기 때문에 Ctrlp의 큰 팬이 아닙니다. 그래서 MRU 플러그인과 같은 간단한 것을 찾고 있습니다.

BTW, 나는 :cexpr {expr}명령없이 농담을 했고 :buffers, 성공하지 않고 퀵 픽스 창을 목록의 내용으로 채우려 고 시도 했다. (내 무지 프로그래밍 vimscript 때문에)

어떠한 제안 ?


:bnext대신에 의미 했습니까 :cnext?
tommcdo

특히 퀵 픽스이어야 합니까? 아니면 창에서 열린 버퍼를보고 싶습니까? (후자를 수행하는 플러그인이 여러 개 있기 때문에).
Rich

창에서 열린 버퍼를 탐색 할 수 있기를 원합니다. 실제로 quickfix는 reuired되지 않습니다
조르지오 Robino

@tommcdo : 그렇습니다, 나의 일반적인 오타. bnext을 나는 질문을 업데이트 : 내 말은
조르지오 Robino

답변:


18

다음과 같이 빠른 수정 사항 목록을 각 버퍼로 채울 수 있습니다.

:call setqflist(map(filter(range(1, bufnr('$')), 'buflisted(v:val)'), '{"bufnr": v:val}'))
  • setqflist()각 오류를 설명하는 사전 항목 목록 (파일 이름, 줄 번호, 위치 등)을 가져옵니다. 이 경우 최소 정보 세트를 지정합니다 : 버퍼 번호
  • map()List 및 표현식 (문자열)을 사용하여 입력 List의 각 항목에 적용된 표현식의 새 List를 리턴합니다. 여기에 나열된 버퍼 번호의 목록을 가져 와서 사용할 수 있도록 형식화하고 있습니다 setqflist()( '{"bufnr": v:val}'여기서 v:val, 목록의 항목 값은
  • filter()주어진 표현식을 만족하지 않는 요소를 제거하여 List를 필터링합니다. 여기서 표현식은입니다 buflisted(v:val). 즉 버퍼 번호가 존재하고 나열됩니다. 즉 :ls출력에 나타납니다.
  • range(a, b)에서 숫자의 목록 생성 a에를b
  • bufnr()주어진 버퍼 이름의 번호를 반환합니다. 인수가 '$'인 경우 가장 높은 버퍼 번호를 반환합니다.

입력하기가 많고 기억에 남지 않을 정도로 vimrc의 명령으로 래핑 할 수 있습니다.

command! Qbuffers call setqflist(map(filter(range(1, bufnr('$')), 'buflisted(v:val)'), '{"bufnr":v:val}'))

이제 :Qbuffers퀵 픽스 목록을 채우는 데 사용할 수 있습니다 .


새 버퍼가 추가 될 때이를 자동으로 업데이트하려면 다음과 같이 할 수 있습니다.

autocmd BufAdd * Qbuffers

이 같은 것들에 대한 꽤 사용할 수 없게 quickfix 목록 렌더링 나는, 그러나,이 권하고 싶지 않다 :make또는 :grep.


1
설명 주셔서 감사합니다, tommcdo. Qbuffers는 아름답습니다! 어쩌면 나는 픽스 픽스 창을 즉시 열기 위해 마지막에 : copen를 추가하고 커서 위치를보고하는 것이 도움이 될 수 있습니다. 나는 :-) vim 스크립트의 조금 공부해야
조르지오 Robino

9

이 매핑을 시도해야합니다.

nnoremap gb :ls<CR>:b<Space>

프롬프트에서 원하는 버퍼 번호를 입력하고 Enter를 누르십시오.

gb


빠른 찾기 창에서 버퍼를 나열하는 위치
VeXii

예, 제 대답은 간단한 대안을 제공합니다.
romainl

1
OP는 버퍼 목록에 대해 알고 있지만 빠른 수정 창에 넣고 싶다고 말합니다. 그리고 당신은 해결책이 버퍼리스트를 사용하는 것입니까?
VeXii

1

bufexplorer 플러그인을 살펴보십시오 . 언급 된 MRU 플러그인과 유사하게 사이드 바에서 모든 버퍼의 탐색 가능한 목록을 엽니 다. 또한 vim.org에 이러한 플러그인이 더 있습니다 .

추신 : 스택 오버플로에 대해 같은 질문을했습니다 . 여러 사이트에 동일한 질문을 동시에 제출하지 마십시오.


tks Ingo, 나는 약간의 bufexplorer를 테스트했고 그것을 좋아한다. 나는 또한
스택 오버 플로우

1
네, 봤어요 그런 다음 원래 SO 게시물을 삭제했거나 적어도 교차 게시에 연결된 것을 선호했을 것입니다.
Ingo Karkat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.