[vim] Vim에서 단일 버퍼를 여러 개로 닫으려면 어떻게해야합니까?

예를 들어 다음과 같이 Vim에서 여러 파일을 엽니 다.

vim a/*.php

23 개의 파일이 열립니다.

그런 다음 편집하고 다음을 두 번 실행하십시오.

:q

모든 버퍼가 닫힙니다.

Vim에서 하나의 버퍼 만 어떻게 닫을 수 있습니까?



답변

주의 사항 : “bw의 w는 쓰기가 아니라 지우기를 의미합니다!”

매뉴얼에서 더 많은 것 :

: bd

버퍼 [N] (기본값 : 현재 버퍼)을 언로드하고 버퍼 목록에서 삭제하십시오. 버퍼가 변경된 경우 [!]를 지정하지 않으면 변경이 손실됩니다. 파일은 영향을받지 않습니다.

당신이하고있는 일을 알고 있다면 다음을 사용할 수도 있습니다 : bw

: bw

| : bdelete |와 같지만 실제로 버퍼를 삭제하십시오.


답변

이전 답변으로 이것이 명확하지 않은 경우 :

: bd 는 현재 버퍼를 닫습니다. 버퍼 목록을 원하지 않으면


답변

: buffers를 사용하여 버퍼 ID를 확인하십시오.

다음과 같은 버퍼 목록이 표시됩니다.

1  a.php
2  b.php
3  c.php

버퍼에서 b.php를 제거하려면

:2bw

버퍼에서 모두 제거 / 닫으려면

:1,3bw


답변

: ls 명령의 출력을 찾아보고 번호를 지정하여 버퍼를 삭제 (언로드, 와이프 ..)하는 대신 파일 이름을 사용하는 것이 더 효과적이라는 것을 알았습니다.

예를 들어, 몇 가지 .txt 파일을 열어서 몇 가지 좋은 점에 대한 추억을 새로 고친 후 몇 줄의 텍스트를 복사하여 붙여 넣은 후 일종의 템플릿으로 사용할 수 있습니다. 등.

:bd txt <Tab>

일치하는 문자열이 파일 이름의 시작 부분에있을 필요는 없습니다.

위의 화면 하단에 ‘txt’와 일치하는 파일 이름 목록이 표시되고 처음에 입력 한 : bd 명령을 그대로 유지하여 완료 할 수 있습니다.

예를 들면 다음과 같습니다.

doc1.txt doc2.txt
:bd txt

‘txt’비트 위로 백 스페이스를 지우고 삭제하려는 파일 이름을 입력 할 수는 있지만 실제로는 필요하지 않습니다 .Tab 키를 두 번 누르면 Vim이 자동으로 명령을 완료합니다. 첫 경기 :

:bd doc1.txt

이 특정 버퍼를 제거하려면 Enter 키를 누르십시오.

그리고 삭제하려는 버퍼가 두 번째 (세 번째 등) 일치하는 경우 Tab 키를 계속 누르고 있으면 : bd 명령이 일치하는 목록을 순환하도록합니다.

당연히,이 방법은 : b .. : sb. 등과 같은 명령을 통해 주어진 버퍼로 전환하는데 사용될 수 있습니다.

이 방법은 ‘숨겨진’Vim 옵션이 설정 될 때 특히 유용합니다. 버퍼 목록이 빠르게 커져서 여러 화면을 덮을 수 있고 내가 찾고있는 특정 버퍼를 찾기가 어렵 기 때문입니다.

이 기능을 최대한 활용하려면 다음 Vim 도움말 파일을 읽고 작업 흐름에 가장 적합하도록 Tab 명령 줄 완성 동작을 조정하는 것이 가장 좋습니다.

:help wildmode

위에서 설명한 동작은 다음 설정의 결과로, bash 완료를 에뮬레이트하기 위해 일관성을 위해 선택했습니다.

:set wildmode=list:longest,full

버퍼 번호를 사용하는 것과는 대조적으로,이 방법의 장점은 일반적으로 주어진 파일 이름의 적어도 일부를 기억한다는 것입니다.


답변

사용하다:

  • :ls -버퍼를 나열
  • :bd#n– #N 버퍼 번호 근접 버퍼 (사용 ls을 얻기 위해)

예 :

  • 버퍼 2를 삭제하려면 :

    :bd2
    

답변

다음과 이전을 기능 키에 매핑하여 버퍼를 쉽게 순환시킬 수 있습니다.

map <F2> :bprevious<CR>
map <F3> :bnext<CR>

내 vimrc에서


답변

어때요?

vim -O a a

그렇게하면 왼쪽에서 단일 파일을 편집하고 오른쪽에서 전체 디렉토리를 탐색 할 수 있습니다 … 해결책이 아니라 생각입니다 …