Ответ 1
Это удаляет буфер (который переводит, чтобы закрыть файл)
:bd
Я новичок в VIM. Я использую команды :e
и :w
для редактирования и записи файла, который очень удобен. Я не уверен, есть ли команда "закрыть", чтобы закрыть текущий файл, не выходя из VIM?
Я знаю, что команда :q
может использоваться для закрытия файла, но если это последний файл, VIM также закрывается; Фактически на Mac OS MacVIM завершает работу. Окно VIM закрывается, и я могу использовать Control-N, чтобы снова открыть пустой 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] 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.
Если вы уже сохранили последний файл, то: enew - ваш друг (: enew! если вы не хотите сохранять последний файл). Обратите внимание, что исходный файл по-прежнему будет в вашем списке буферов (тот, который доступен через: ls).
Если вы изменяете файл и хотите его закрыть, не выходя из VIM и без сохранения, вы должны ввести :bd!
: bd может быть отображен. Я сопоставляю его с F4, shift-F4, если мне нужно принудительно закрыть из-за некоторых изменений, которые я больше не хочу.
Для этого есть плагин: bufkill (см. http://www.vim.org/scripts/script.php?script_id=1147)
Это добавляет BD
и т.д., чтобы удалить буфер без закрытия каких-либо разделов (как BD
).
Посмотрите плагин Butane, чтобы сохранить макет окна при закрытии буфера.
Я сопоставил bd с F4 с вставьте в файл .vimrc следующее и нажав F4, он закроет текущий файл.
:map <F4> :bd<CR>
У меня такая же проблема, поэтому я сделал плагин. Этот плагин заменяет: q и другие команды, а затем не закрывает окно.
Если у вас все еще есть проблема, попробуйте использовать следующий плагин. https://github.com/taka-vagyok/prevent-win-closed.vim