Как я могу удалить с диска текущий открытый файл из vim? Было бы неплохо также закрыть буфер.
Я вижу, что вы можете использовать NERDTree для этого, но я не использую этот плагин.
Как я могу удалить с диска текущий открытый файл из vim? Было бы неплохо также закрыть буфер.
Я вижу, что вы можете использовать NERDTree для этого, но я не использую этот плагин.
Использование внешнего инструмента, такого как rm (1), отлично, но Vim также имеет свою собственную функцию delete()
для удаления файлов. Преимуществом этого является переносимость.
:call delete(expand('%'))
Альтернативный способ выразить это :call delete(@%)
, который использует регистр %
(текущий файл) (отзыв от @accolade).
Чтобы полностью очистить текущий буфер, как представление файла на диске, так и буфер Vim, добавьте :bdelete
:
:call delete(expand('%')) | bdelete!
Вы, вероятно, захотите сопоставить это в соответствии с вашими предпочтениями.
Посмотрите Удалить файлы с помощью команды Vim. Раздел Comments должен иметь то, что вы ищете:
В основном, Rm удалит текущий файл; RM удалит текущий файл и выйдет из буфера (без сохранения) за один раз.
В качестве альтернативы вы можете просто выдать команду оболочки для удаления текущего файла:
:!rm %
Иногда плагин может быть привлекательным решением даже для простой задачи. В этом случае нам повезло, так как eunuch.vim всемогущего Тима Папы.
Своими словами eunuch.vim предоставляет
Сак Vim для команд оболочки UNIX, которые в ней больше всего нуждаются. Удалите или переименуйте буфер и базовый файл одновременно. Загрузите a
find
илиlocate
в список quickfix. И так далее.
Perfect. Он имеет то, что нам нужно, плюс некоторые дополнительные инструменты, если мы находимся в системе UNIX.
Команда, которую вы ищете,
:Remove!
Опять повторите его, если вам это нужно, например, :nnoremap <Leader>rm :Remove!<CR>
.
Мне нравится удалять файлы из vim, но я также параноик о случайном удалении важной работы, которая по той или иной причине еще не находится под контролем версий. Мне полезно совместить предыдущую информацию из @glts и @accolade с этим ответом о том, как использовать команду confirm
для запроса перед выходом из vim.
Объединяя это, я добавил функцию в свой ~/.vimrc
, который запрашивает перед удалением файла и закрытием буфера и сопоставляет его с комбинацией клавиш:
nnoremap <Leader>d. :call DeleteFileAndCloseBuffer()
fun! DeleteFileAndCloseBuffer()
let choice = confirm("Delete file and close buffer?", "&Do it!\n&Nonono", 1)
if choice == 1 | call delete(expand('%:p')) | q! | endif
endfun
Если вы являетесь одним нажатием клавиш, менее параноидальным, чем я, вы можете добавить <CR>
в первую строку
nnoremap <Leader>d. :call DeleteFileAndCloseBuffer()<CR>
и только один раз нажмите один раз.
Вы можете сделать это двумя шагами:
сохранить как новый файл
: w newfilename
удалить старый файл
! rm oldfilename