창을 닫지 않고 버퍼를 닫는 방법? 발행됩니다 :bd및 :bw경우에,뿐만 아니라 창을 닫는 결과

나는 보통 몇 개의 창을 열고 일부 버퍼를 열어 둡니다. 버퍼 탐색에서 내 MO는 :bn및 바로 가기를 사용하는 것이므로 :bp불필요한 버퍼를 닫아 버퍼 서핑을 방해하지 않도록하고 싶습니다.

그러나 통증이 발행됩니다 :bd:bw경우에,뿐만 아니라 창을 닫는 결과 나는 여러 사람이 열 수 있습니다. 버퍼를 닫고 삭제하는 방법은 무엇입니까?

@peth의 답변에서 영감을 얻은 솔루션

:command! BW :bn|:bd#

간단하다. 하나의 버퍼 열기만으로는 제대로 작동하지 않습니다 (파일을 여는 방식에 따라 다른 동작이 발생 함). 큰 문제는 아닙니다. 🙂



답변

그것은 고통 스러울 수 있습니다.이 질문은 #vim(Freenode)에서도 계속 제기 됩니다.

어떤 사람들은 :b partial<Tab>대신 버퍼를 삭제하고 대신 전환하지 않는 것이 좋습니다 :bn.하지만 작동하지 않습니다.

내가 아는 가장 좋은 방법은 다른 버퍼로 전환 한 다음 :bd#물론 매핑 할 수 있습니다.

Vim wikia 에서 창닫지 않고 버퍼 삭제를 참조하십시오 .


답변

나는 이것을 조금 엉망으로 만들었고 마침내 :

:bp | sp | bn | bd

키 매핑을위한 복사 / 붙여 넣기 버전은 다음과 같습니다.

:bp<bar>sp<bar>bn<bar>bd<CR>

또는 .vimrc에 대한 명령 (: Bd로 호출) :

명령 Bd bp | sp | 십억 | bd

나는 그것을 공정하게 테스트했으며 다양한 조건에서 일관되게 작동합니다. 마지막 버퍼에서 사용되면 새로운 빈 버퍼가 남습니다.


답변

윈도우는 버퍼에 대한 뷰포트입니다. (참조는 :help window.) 당신은 관련 버퍼없이 창을 가질 수 없습니다. :enew그러나 현재 창 내용을 빈 버퍼로 바꾸는 등의 명령을 사용할 수 있습니다 .


답변

bufkill.vim의 플러그인은 잘 작동합니다. 추가 기능 및 기능을 위해 vim-command-w 와 함께 사용하고 싶습니다 (마지막 버퍼 인 경우 분할을 닫거나 마지막 버퍼 / 분할 인 경우 vim을 닫는 것처럼).


답변

또 다른 해결책은 다음과 같습니다.

map <C-W>o <C-W>n<C-W><C-W><C-W>c

Ctrl + W를 입력 한 다음 o를 입력하면 조용히 새 창이 생성되고 이전 창이 닫힙니다. 커서가 새 창에 남아 있습니다. 몇 가지 긍정적 인 효과가 있습니다.

  1. 원래 분할 치수가 유지됩니다.
  2. 빈 버퍼가 새로운 스플릿에로드됩니다.
  3. 원래 버퍼는 여전히로드되어 있습니다.
  4. Ctrl + o를 누르면 커서를 이전 버퍼의 원래 위치로 이동해야합니다.
  5. 하나의 창이로드 된 경우에도 잘 작동합니다.

답변

문제는 대부분의 사람들이 vim 버퍼와 창을 자신이 아닌 것으로 기대한다는 것입니다.

사람들은 vim 창을 자체 버퍼 목록이있는 독립 실행 형 프로세스로 생각하지만 슬프게도 그렇지 않습니다. vim 창은 버퍼의 뷰포트 일뿐입니다.
따라서 문제 또는 다른 창이 동일한 버퍼 목록을 공유하는 문제와 같은 많은 문제가 발생하므로 창 A에서 버퍼 1을 편집 할 수 없으며 버퍼 목록에서 버퍼 1을 버퍼 B에서 무시하도록하십시오.

내 솔루션은 vim의 두 인스턴스를 여는 것이므로 원하는 vim 창을 가질 수 있습니다. WM 타일링에 가장 효과적입니다.


답변

일반적으로 버퍼에있는 동안 메뉴를 엽니 다. 왼쪽 창에서 메뉴가 열리고 커서가 활성화됩니다. 따라서 활성 버퍼로 다시 전환하고 버퍼를 삭제합니다.

그 후 메뉴에서 다른 파일을 열 수 있습니다.

내 단계는 다음과 같습니다

:Vex

ctrl + w + w

:bd