Vim-창에서 열린 버퍼의 동적 목록


22

Vim에서 열린 버퍼 목록을 유지 관리하는 몇 가지 방법을 조사했으며 그중 일부는 매우 우수하지만 그 중 어느 것도 내가 원하는 방식으로 작동하지 않는 것 같습니다. 내가 원하는 것과 같은 것이 존재하지 않을 가능성이 매우 높으며 물어볼 수 없습니다.

GVim에서 NERDTree를 사용하고 있으며 정보를 가늘고 왼쪽 창에 넣는 아이디어가 마음에 듭니다. 내 환경이 어떻게 보이는지에 대한 간단한 다이어그램을 작성했습니다.

|--------|---------------------------------------|
|        |                                       | 
|        |                                       | 
|NERDTree|           Windows                     | 
|        |                                       | 
|        |                                       | 
|        |                                       | 
|--------|                                       |
|        |                                       | 
|        |                                       | 
|  List  |                                       | 
|   of   |                                       | 
|  Open  |                                       | 
| Buffers|                                       | 
|        |                                       | 
|        |                                       | 
|--------|---------------------------------------|

그래서 내 질문은 : NERDTree와 비슷한 창에서 현재 열려있는 버퍼 목록을 유지하고 해당 목록에서 선택 / 편집 / 닫기위한 독창적이거나 플러그인 가능한 방법이 있습니까?

이 접근 방식이 Vim 작업 방식 과 일치하지 않을 수 있음을 이해 하고 Vim 세션에서 여러 파일을 관리하는 방법에 대한 내용이 누락되었다고 생각되면 제안 사항이있는 의견을 남겨주세요!


또한 nerdtree 창 아래 또는 위에 버퍼 목록을 찾고 있습니다. 좋은 해결책을 찾으면이 게시물을 업데이트하려고 노력할 것입니다 (하지만 질문 해 주셔서 감사합니다)
Eric Drechsel

답변:


7

vim.org의 플러그인 저장소를 검색 했습니까? BufferGator 또는 SelectBuf 와 같이 선택할 수 있는 수십 가지 버퍼 전환 플러그인 이 있습니다 . 또는 대부분 Vim 위키의 멋진 목록에 컴파일되어 있습니다.


질문의 마지막 부분에서 언급했듯이 시스템의 종류는 모든 사람의 취향이 아닙니다.

나는 모든 메뉴, 버튼 및 이것의 목록 ​​또는 항상 열려있는 것을 싫어 합니다 : 열린 버퍼 목록은 실제로 다른 버퍼로 이동해야 할 때만 유용합니다. 그러한 목록을 열어두면 공간 낭비처럼 보입니다. . 슈퍼 차지 상태 표시 줄에도 동일하게 적용 할 수 있습니다.

버퍼를 빠르게 전환하고 현재 편집중인 파일 주위에서 파일 시스템을 빠르게 탐색 하기 위해 동일한 플러그인 을 사용 합니다 . ,f(파일) 또는 ,b(버퍼)로 호출 하면 창이 끝나면 창이 사라집니다. 완전한. 다른 유사한 플러그인 이 있습니다 . 그 아이디어가 마음에 든다면 모두 사용해보십시오.

편집하다

버퍼링을 전환하면서 작동중인 CtrlP의 애니메이션 GIF를 추가해야한다는 느낌이 듭니다.

CtrlP를 사용하여 버퍼 전환

ENDEDIT

원주민 :sb <Tab>도 꽤 깔끔하지만 덜 섹시합니다. 이 퍼지 매칭을 지원하지 않습니다하지만 몇 가지 큰 장점이 있습니다 : 그것은 기본적으로 제공하고처럼 작동 :e <Tab>, :vs <Tab>등등.


제안 해 주셔서 감사합니다. BufferGator와 SelectBuf는 적어도 내가 추구하는 기능과 거의 비슷하지만 상황을 조정하려면 약간의 조정이 필요할 수 있습니다. 공간 낭비에 대한 우려에 대해 분명히 감사하지만 현재 사용 사례를 통해 한 번에 여러 파일을 한 번에 하나씩 열어 두 개의 GVim 인스턴스를 한 번에 열어 필요에 따라 파일을 가져옵니다. 이러한 상황에서는 영구 버퍼 목록이 매우 유용합니다. 그러나 버퍼 관리에 대한 일반적인 Vim 접근 방식에 대해 배우려면 시간이 걸립니다.
asfallows

나는 당신이 큰 모니터에서 일한다고 상상합니다. 어떤 시스템을 선택하든 여전히 버퍼 목록으로 전환하고, 2. 버퍼를 선택하고, 3. 버퍼 목록이 이미 표시되어 있는지 여부에 관계없이 키를 누르십시오. 따라서 "주문형"버퍼 스위처를 사용하면 버퍼 목록을 열어 두는 것만 큼 효과적이며 공간을 절약 할 수 있습니다.
romainl

추론을 분명히 고맙게 생각합니다. 여기에서 설명하는 정확한 구성이 불가능할 가능성에 대해 너무 걱정하지 않는 이유가 있습니다. 퍼시 스턴트 버퍼리스트가 갖는 유일한 주요 장점은 어떤 버퍼가 열려 있는지 확인하기 위해 0 번의 키 입력이 필요하다는 것입니다. (그렇습니다. 상당히 큰 모니터로 작업하고 있습니다.)
42 분에 asfallows

@romainl, ,bctrlp로 버퍼를 검색 하기 위해 어떤 vimrc 명령을 사용 했 습니까?
눈에 갇힌

1
@snowbound, FWIW 얼마 전에 CtrlP 또는 다른 유사한 플러그인 사용을 중단했습니다. 어쨌든 내 명령은이었다 nnoremap ,b :CtrlPBuffer<CR>.
romainl

5

MiniBufExplorer를 강력히 추천 할 수 있습니다 . minibufexplorer의 대안을 참조하십시오 ?

스크린 샷


답장을 보내 주셔서 감사합니다-MiniBufExplorer를 찾았습니다. MiniBufExplorer는 그 기능이 매우 뛰어나지 만 버퍼 관리 방법에 대해 설명한 조건을 충족하지 않습니다. 그것이 내가하려는 일을 할 수있는 좋은 방법이 없거나 올바른 방법이 아니라고 결정하면 MBE는 다음에 시도 할 일에 대한 내 목록에서 꽤 높습니다.
asfallows

1
충족되지 않은 유일한 조건은 목록이 왼쪽에 있다는 것입니다. 동의 MiniBufExplorer합니다. 상단에 있습니다 (왼쪽만큼 많은 공간을 낭비하지 않습니다). 또는 귀하의 요구 사항을 이해하지 못했습니다.
Marco

현재 설정을 사용하면 왼쪽에 버퍼 목록이 표시된 것처럼 실제로 공간 사용량이 향상됩니다. NERDTree는 항상 열려 있지만 항상 전체 수직이 아니기 때문입니다. 해당 공간을 버퍼 목록과 공유하면 좋을 것입니다. 이것이 GVim을 사용하는 방법이라는 점은 주목할 가치가 있으며 콘솔에서 Vim을 사용하는 경우 지속적인 왼쪽 열을 원하지 않습니다. Vim을 사용하는 콘솔의 대부분은 "파일 열기, 빠른 편집, vim 닫기"입니다.
asfallows

1

winmanager 플러그인 을 사용하여 정확하게 수행하는 방법이 있습니다. 이 스크린 샷 에서는 동일한 세로 분할에 NERDTree 및 MiniBufExpl (github : techlivezheng / vim-plugin-minibufexpl, 최신 커밋 atm 349a9fbb) 플러그인을 결합하고 F4로 전환합니다. 이론적으로이 솔루션은 다른 플러그인 조합에서 작동합니다.

내 .vimrc의 예

"{{{MiniBufExpl 구성
g : miniBufExplVSplit = 20 "를 세로로 열어 보자
g : miniBufExplSplitToEdge = 0 "이전 창 (NERDTree)을 기준으로 열도록하십시오.
"}}} MiniBufExpl 구성

"{{{winmanager 구성
"플러그인 등록
g : NERDTree_title = 'NERD 트리'를 보자
g : MiniBufExpl_title = 'MiniBufExpl'하자

"레이아웃을 설정
g : winManagerWindowLayout = 'NERDTree | MiniBufExpl'하자

"NERDTree의 핸들러
기능! NERDTree_Start ()
    exec 'NERDTree'
최종 기능

"MiniBufExpl 처리기
기능! MiniBufExpl_Start ()
    exec 'MBEOpen'
최종 기능

분할을 F4로 전환하기위한 매핑
nmap <F4> : WMToggle
"}}} winmanager 설정

문제 :

  • NERDTree는 winmanager가 생성 한 버퍼를 사용하지 않지만 자체적으로 열립니다 ...
  • ... 따라서 winmanager 버퍼는 사용되지 않은 상태로 유지됩니다
  • 버퍼간에 점프 할 때 MiniBufExpl이 제대로 업데이트되지 않습니다

내가 달성 한 행동은 완벽하지는 않지만 좋은 출발입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.