Закрыть файл без выхода из приложения VIM?

Я новичок в VIM. Я использую команды :e и :w для редактирования и записи файла, который очень удобен. Я не уверен, есть ли команда "закрыть", чтобы закрыть текущий файл, не выходя из VIM?

Я знаю, что команда :q может использоваться для закрытия файла, но если это последний файл, VIM также закрывается; Фактически на Mac OS MacVIM завершает работу. Окно VIM закрывается, и я могу использовать Control-N, чтобы снова открыть пустой VIM. Я бы хотел, чтобы VIM оставался открытым с пустым экраном.

Ответ 1

Это удаляет буфер (который переводит, чтобы закрыть файл)

:bd 

Ответ 2

Как уже упоминалось, вы ищете : 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 есть несколько разделенных окон, то: 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

Ответ 4

:[N]bd[elete][!]                        *:bd* *:bdel* *:bdelete* *E516*
:bd[elete][!] [N]
                Unload buffer [N] (default: current buffer) and delete it from
                the buffer list.  If the buffer was changed, this fails,
                unless when [!] is specified, in which case changes are lost.
                The file remains unaffected.  Any windows for this buffer are
                closed.  If buffer [N] is the current buffer, another buffer
                will be displayed instead.  This is the most recent entry in
                the jump list that points into a loaded buffer.
                Actually, the buffer isn't completely deleted, it is removed
                from the buffer list |unlisted-buffer| and option values,
                variables and mappings/abbreviations for the buffer are
                cleared.

Ответ 5

Если вы уже сохранили последний файл, то: enew - ваш друг (: enew! если вы не хотите сохранять последний файл). Обратите внимание, что исходный файл по-прежнему будет в вашем списке буферов (тот, который доступен через: ls).

Ответ 6

Если вы изменяете файл и хотите его закрыть, не выходя из VIM и без сохранения, вы должны ввести :bd!

Ответ 7

: bd может быть отображен. Я сопоставляю его с F4, shift-F4, если мне нужно принудительно закрыть из-за некоторых изменений, которые я больше не хочу.

Ответ 8

Для этого есть плагин: bufkill (см. http://www.vim.org/scripts/script.php?script_id=1147)

Это добавляет BD и т.д., чтобы удалить буфер без закрытия каких-либо разделов (как BD).

Ответ 9

Посмотрите плагин Butane, чтобы сохранить макет окна при закрытии буфера.

https://github.com/Soares/butane.vim

Ответ 10

Я сопоставил bd с F4 с вставьте в файл .vimrc следующее и нажав F4, он закроет текущий файл.

:map <F4> :bd<CR>

Ответ 11

У меня такая же проблема, поэтому я сделал плагин. Этот плагин заменяет: q и другие команды, а затем не закрывает окно.

Если у вас все еще есть проблема, попробуйте использовать следующий плагин. https://github.com/taka-vagyok/prevent-win-closed.vim