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, 가능한 해결책 :CtrlpBuffers은 Ctrlp 플러그인의 일부인 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.