Как я могу удалить с диска текущий открытый файл из vim? Было бы неплохо еще и буфер закрыть.
Я вижу, вы можете использовать для этого NERDTree , но я не использую этот плагин.
Как я могу удалить с диска текущий открытый файл из vim? Было бы неплохо еще и буфер закрыть.
Я вижу, вы можете использовать для этого NERDTree , но я не использую этот плагин.
Можно использовать внешний инструмент, такой как rm (1), но у Vim также есть собственная delete()
функция для удаления файлов. Это имеет преимущество портативности.
:call delete(expand('%'))
Альтернативный способ выразить это - :call delete(@%)
использовать %
регистр (текущего файла) (подсказка @accolade).
Чтобы полностью очистить текущий буфер, представление файла на диске и буфер Vim, добавьте :bdelete
:
:call delete(expand('%')) | bdelete!
Вероятно, вы захотите сопоставить это в соответствии с вашими предпочтениями.
nnoremap rm :call delete(expand('%')) \| bdelete!<CR>
. Вы можете добавить свой ответ.r
команду! Лучше префикс вашего сопоставления с<Leader>...
.nnoremap <C-Del> :call delete(expand('%'))<CR>
но я не закрываю буфер на случай, если это произойдет случайно; тогда у вас еще есть шанс его спасти.:call delete(@%)|q!
← Краткий вариант (если не хотите отображать). (Буфер остается внутри:ls
и может быть восстановлен:b
таким образом; он сохраняет имя файла и параметры буфера, но не содержимое файла.):call delete(@%)|bd!
и использовать:ls!
с,:b
чтобы оживить.Взгляните на Удаление файлов с помощью команды Vim . В разделе комментариев должно быть то, что вы ищете:
В качестве альтернативы вы можете просто ввести команду оболочки для удаления текущего файла:
источник
!rm %
, есть ли способ избежать предупреждения, когда vim вернется в буфер?%
) в кавычки:!rm "%"
.%
(путь к файлу (« имя файла » в терминологии vim) как первоначально вызванный, потенциально относительный, например, просто имя файла) вместо%:p
(абсолютный путь к файлу), вы подвергаетесь небольшому риску удаления файла с таким же именем в другом каталоге вместо этого, если вы забыли, что вы:cd
там написали. Поэтому я настоятельно рекомендую использовать%:p
вместо этого,%
если вы все равно сопоставите его.Иногда плагин может быть привлекательным решением даже для простой проблемы. В этом случае нам повезло, так как есть eunuch.vim всемогущего Тима Поупа.
По собственным словам, eunuch.vim предоставляет
Отлично. В нем есть все, что нам нужно, а также некоторые дополнительные инструменты, если мы работаем в системе UNIX.
Команда, которую вы ищете, это
Опять же, переназначьте его, если он вам очень нужен, например
:nnoremap <Leader>rm :Remove!<CR>
.источник
mv
,mkdir
,find
и т.д. очень рекомендую.Мне нравится удалять файлы из vim, но я также боюсь случайно удалить важную работу, которая по той или иной причине еще не находится под контролем версий. Я считаю полезным объединить предыдущую информацию из @glts и @accolade с этим ответом о том, как использовать
confirm
команду для вывода запроса перед выходом из vim.Собрав их вместе, я добавил функцию к my
~/.vimrc
, которая запрашивает перед удалением файла и закрытием буфера, и сопоставила ее с комбинацией клавиш:Если вы на одно нажатие клавиши меньше параноика, чем я, вы можете добавить
<CR>
в первую строкуи нужно только один раз нажать клавишу возврата.
источник
expand('%:p')
вместо того,@%
чтобы писать сценарий. (Хотя я польщен, что вы включили мой намек :) Преимущество краткости в сценарии незначительно. Что еще более важно%:p
:) расширит имя файла до полного абсолютного пути (который может быть, а может и не быть). Просто%
вы рискуете удалить файл с таким же именем в другом каталоге, если вы забыли, что вы:cd
там редактировали.Вы можете сделать это в два этапа:
сохранить как новый файл
: w newfilename
удалить старый файл
! rm oldfilename
источник
Это может быть непопулярное мнение, но ваш проводник файлового дерева (Netrw / NerdTree) будет самым простым и безопасным способом удалить файл. Даже если OP не использует NerdTree, встроенный плагин Netrw будет работать так же.
источник