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

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

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



답변

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

:bd


답변

이미 언급했듯이을 찾고 :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나를 알지 못하고 꽤 오랫동안 나를 버그.


답변

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


답변

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


답변

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


답변

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


답변

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