VIM 응용 프로그램을 종료하지 않고 파일을 닫습니까?


258

:e:w명령을 사용하여 파일을 편집하고 씁니다. Vim을 떠나지 않고 현재 파일을 닫는 "close"명령이 있는지 확실하지 않습니까?

나는 알고 :q명령이 파일을 닫으하는 데 사용할 수 있지만 마지막 파일 인 경우, 빔이 아니라 폐쇄; 실제로 Mac OS에서는 MacVim이 종료됩니다. Vim 창이 닫히고 사용할 수 있습니다 Control- N빈 Vim 창을 다시 열 수 있습니다 . 빈 화면으로 Vim을 열어두고 싶습니다.

답변:


343

버퍼를 삭제합니다 (파일을 닫는 것으로 해석 됨).

:bd 

6
내가 선호하는 경향이 있지만, 버퍼 목록에 버퍼가있는 것을 좋아하기 때문에 선호하는 경향이 있지만 OP가 요구 한 것보다 내 것이 낫습니다. :)
Rytmis

2
이 작업을 수행 할 때 vim은 첫 번째 버퍼를 보여 주지만 여전히 버퍼에 액세스 할 수 있습니다
Martin Andersson

18
@Martin, 완전 버퍼 사용 삭제 BW를 :
sebnow

43

이미 언급했듯이을 찾고 :bd있지만 버퍼를 완전히 제거하지는 않지만 여전히 액세스 할 수 있습니다.

:e foo
:e bar
:buffers
  1 #h   "foo"                          line 1
  2 %a   "bar"                          line 1
Press ENTER or type command to continue
:bd 2
:buffers
  1 %a   "foo"                          line 1
Press ENTER or type command to continue
:b 2
2   bar

대신 :bw완전히 제거 할 수 있습니다.

:bw 2
:b 2 
E86: Buffer 2 does not exist

:bw나를 알지 못하고 꽤 오랫동안 나를 버그.


3
VIM의 도움으로 :bw"내가하는 일을 모른다면 이것을 사용하지 마십시오"라는 점을 명심하십시오 .
mato

22

Vim 창에 여러 개의 분할 창이있는 :bd경우 현재 파일의 분할 창을 닫으므로 조금 더 고급스러운 것을 사용하고 싶습니다.

map fc <Esc>:call CleanClose(1)

map fq <Esc>:call CleanClose(0)


function! CleanClose(tosave)
if (a:tosave == 1)
    w!
endif
let todelbufNr = bufnr("%")
let newbufNr = bufnr("#")
if ((newbufNr != -1) && (newbufNr != todelbufNr) && buflisted(newbufNr))
    exe "b".newbufNr
else
    bnext
endif

if (bufnr("%") == todelbufNr)
    new
endif
exe "bd".todelbufNr
endfunction

12
이제이 스 니펫은 무엇을합니까?
dolzenko

1
호출 후 실제로 <CR> 명령을 실행하기 위해 <CR>을 원할 것입니다.
dma

2
@dolzenko 그것은 정상 모드에서 'fc'와 'fq'를 매핑하여 선택적으로 현재 버퍼를 저장 한 다음 원본을 삭제하기 전에 새 버퍼로 전환합니다. 이렇게하면 설정 한 스플릿이 유지됩니다.
dma

좋은 생각 인 것 같습니다. 그래도 시도하면 다음과 같은 오류 메시지가 나타납니다. "CleanClose 함수를 재정의 할 수 없습니다 : 사용 중입니다"
jononomo

2
"f"를 다시 매핑하지 마십시오. . . "f"는 실제로 매우 유용합니다. 이 매핑을 사용하면 "c"또는 "q"를 "찾을"수 없습니다.
tandrewnichols

17
: [N] bd [elete] [!] * : bd * * : bdel * * : bdelete * * E516 *
: bd [elete] [!] [N]
                버퍼 [N]을 언로드하고 (기본값 : 현재 버퍼)
                버퍼리스트 버퍼가 변경되면 실패합니다.
                [!]를 지정하지 않으면 변경 내용이 손실됩니다.
                파일은 영향을받지 않습니다. 이 버퍼의 모든 창은
                닫은. 버퍼 [N]이 현재 버퍼 인 경우 다른 버퍼
                대신에 표시됩니다. 이것은 가장 최근 항목입니다
                로드 된 버퍼를 가리키는 점프 목록
                실제로 버퍼는 완전히 삭제되지 않고 제거됩니다.
                버퍼 목록에서 | | unlisted-buffer | 옵션 값
                버퍼에 대한 변수 및 매핑 / 약어는
                클리어했다.

9

마지막 파일을 이미 저장 한 경우 :enew친구입니다 ( :enew!마지막 파일을 저장하지 않으려는 경우). 원본 파일은 여전히 ​​버퍼 목록에 있습니다 (를 통해 액세스 할 수있는 파일 :ls).


6

파일 을 수정 하고 Vim을 종료하지 않고 저장하지 않고 파일을 닫으려면을 입력해야합니다 :bd!.


3

:bd매핑 될 수 있습니다. 나는하는지도 F4, Shift- F4나는 때문에 내가 더 이상 할 몇 가지 변화를 강제로 닫을 필요합니다.



1

.vimrc 파일에 다음을 삽입하면를 누르면 F4현재 파일이 닫힙니다.

:map <F4> :bd<CR>


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