Vim как удалить файл

Обновлено: 07.07.2024

Текстовый редактор vim, созданный на основе более старого vi. Один из мощнейших текстовых редакторов с полной свободой настройки и автоматизации, возможными благодаря расширениям и надстройкам. По умолчанию входит в состав любого дистрибутива Linux.

Открываем файл с помощью vi / vim:

Основные режимы работы.

«Обычный режим» — перемещение по файлу, стирание текста и другие редактирующие функции. Это - основной режим, только из него можно сразу перейти в другие режимы. Для возврата в основной режим из любого другого режима:

«Режим ввода» - ввод текста. Как только завершается ввод текста, принято сразу возвращаться в обычный режим. Заметьте, что стирание и ввод текста происходит в двух разных режимах. Переход в него из обычного режима:

«Командный режим» - Команды (операции с файлом, поиск и замена, настройка редактора…). Переход в него из обычного режима:

«Режим поиска» - ввод поискового запроса. Переход в него из обычного режима

«Визуальный режим» - режим выделения текста:

Перемещение по файлу

После загрузки Vim, на экране вы увидите часть загруженного вами текстового файла. Загрузившись, Vim находится в «командном режиме» - один из основных режимов. Это значит, что если вы нажмете клавишу <l> (строчная L), вместо появления «l» на месте курсора вы увидите, что курсор сдвинулся на один символ вправо. В командном режиме знаки, набираемые на клавиатуре, используются как команды для Vim, а не как помещаемые в текст символы. Команды перемещения - один из наиболее важных типов команд. Вот некоторые из них:

Ввод текста

Следующие команды переводят редактор в режим ввода:

Удаление и вставка

Ниже перечислены основные комманды удаления и вставки текста:

Отмена изменений

Поиск

Перейти на строку:

Выход

Есть еще пара команд, которые вам необходимо знать:

В этой статье описаны основные возможности, необходимые для работы. Практически во все дистрибутивы Linux входит учебник по работе с редактором, - просто введите в командной строке команду vimtutor.

Как я могу удалить с диска текущий открытый файл из vim? Было бы неплохо еще и буфер закрыть.

Я вижу, вы можете использовать для этого NERDTree , но я не использую этот плагин.

Можно использовать внешний инструмент, такой как rm (1), но у Vim также есть собственная delete() функция для удаления файлов. Это имеет преимущество портативности.

Альтернативный способ выразить это - :call delete(@%) использовать % регистр (текущего файла) (подсказка @accolade).

Чтобы полностью очистить текущий буфер, представление файла на диске и буфер Vim, добавьте :bdelete :

Вероятно, вы захотите сопоставить это в соответствии с вашими предпочтениями.

Благодаря! Следующая карта в .vimrc , кажется, работает: nnoremap rm :call delete(expand('%')) \| bdelete!<CR> . Вы можете добавить свой ответ. Это отображение не идеально. Мы не хотим нарушать r команду! Лучше префикс вашего сопоставления с <Leader>. . Я сопоставил его с Ctrl + Del с помощью, nnoremap <C-Del> :call delete(expand('%'))<CR> но я не закрываю буфер на случай, если это произойдет случайно; тогда у вас еще есть шанс его спасти. :call delete(@%)|q! ← Краткий вариант (если не хотите отображать). (Буфер остается внутри :ls и может быть восстановлен :b таким образом; он сохраняет имя файла и параметры буфера, но не содержимое файла.) @accolade, мне нравится твой трюк, но тебе нужно использовать :call delete(@%)|bd! и использовать :ls! с, :b чтобы оживить.

Взгляните на Удаление файлов с помощью команды Vim . В разделе комментариев должно быть то, что вы ищете:

Обычно Rm удаляет текущий файл; RM удалит текущий файл и выйдет из буфера (без сохранения) за один раз.

В качестве альтернативы вы можете просто ввести команду оболочки для удаления текущего файла:

Это что-то настолько простое, что я почти не могу поверить, что мне нужно создать для этого сценарий. Благодарю. удаление с помощью !rm % , есть ли способ избежать предупреждения, когда vim вернется в буфер? @ saeed144, в случае пробелов в имени файла (или другие символы , которые вы не хотите интерпретировать на уровне оболочки), вы хотите , чтобы окружить имя файла ( % ) в кавычки: !rm "%" . ОПАСНОСТЬ ДАННЫХ ВНИМАНИЕ! Используя только % (путь к файлу (« имя файла » в терминологии vim) как первоначально вызванный, потенциально относительный, например, просто имя файла) вместо %:p (абсолютный путь к файлу), вы подвергаетесь небольшому риску удаления файла с таким же именем в другом каталоге вместо этого, если вы забыли, что вы :cd там написали. Поэтому я настоятельно рекомендую использовать %:p вместо этого, % если вы все равно сопоставите его.

Иногда плагин может быть привлекательным решением даже для простой проблемы. В этом случае нам повезло, так как есть eunuch.vim всемогущего Тима Поупа.

По собственным словам, eunuch.vim предоставляет

Vim сахар для команд оболочки UNIX, которые в нем больше всего нуждаются. Удалите или переименуйте буфер и основной файл одновременно. Загрузите a find или a locate в список quickfix. И так далее.

Отлично. В нем есть все, что нам нужно, а также некоторые дополнительные инструменты, если мы работаем в системе UNIX.

Команда, которую вы ищете, это

Опять же, переназначьте его, если он вам очень нужен, например :nnoremap <Leader>rm :Remove!<CR> .

Я искал способ обойтись без плагинов, поэтому я приму ваш другой ответ. Плагин неплохо выглядит :-) Этот плагин очень удобно , если вам нужно ВИМ пути mv , mkdir , find и т.д. очень рекомендую.

Мне нравится удалять файлы из vim, но я также боюсь случайно удалить важную работу, которая по той или иной причине еще не находится под контролем версий. Я считаю полезным объединить предыдущую информацию из @glts и @accolade с этим ответом о том, как использовать confirm команду для вывода запроса перед выходом из vim.

Собрав их вместе, я добавил функцию к my

/.vimrc , которая запрашивает перед удалением файла и закрытием буфера, и сопоставила ее с комбинацией клавиш:

Если вы на одно нажатие клавиши меньше параноика, чем я, вы можете добавить <CR> в первую строку

Иногда Vim падает и оставляет мне файл подкачки. Это потрясающе. Затем я открываю файл, который редактировал, и Vim спрашивает меня, хочу ли я восстановить. Да, спасибо. Когда это будет сделано, Вим говорит мне,

Почему, да, я делаю. Как мне это сделать? Я подумал, что он просто снова начнет использовать старый файл подкачки в качестве файла подкачки и очистит его при выходе, но это не так. Он создает новый, очищает его, и когда я снова открываю файл, он снова предлагает мне восстановиться после первого.

Конечно, я что-то упустил.

Немного более простой способ:

Из эмулятора терминала:

Затем выберите восстановить , и если вы хотите удалить своп вы пишете (сохранить) , а затем сделать это изнутри Vim:

. и выберите удалить на этот раз.

Я только что узнал об этом, и я думаю, что я буду делать это теперь. Тогда я не буду случайно перезаписывать рабочий файл, если восстановление оказалось поврежденным (хотя я никогда раньше не пробовал).

Есть также соответствующие советы по этому вопросу о переполнении стека (где я нашел этот совет).

У меня нет delete выбора, есть только: [O] pen (E) dit (R) ecover (Q) uit (A) bort, что мне делать? @Arne: Из моего опыта это обычно означает, что файл в данный момент открывается в другом экземпляре vim? Опция [D] elete появилась только после того, как я обновился до Vim 7.4 @ У меня была такая же проблема. Но через некоторое время, примерно через час, я перезапустил vim, и опция была доступна. ПК не был перезагружен в то время. vim может подумать, что запущен другой процесс vim. Вот почему это не показывает вариант. Для тех, кто говорит, что не видит (D)elete выбора, смотрите :help swap-exists ; котировка On Unix this choice is only offered when the process that created the swap file does not appear to be running. Т.е. , возможно , у вас есть еще один ВИМ запущенного процесса , который вызывает этот параметр , чтобы скрыть. Это также может объяснить, почему у вас есть swp файл в первую очередь!

Чтобы очистить все файлы vim Swap в каталоге:

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

Некоторое вдохновение и мысли пришли из удаления ненужных .swp файлов в группах Google. Это удалит все файлы , чьи имена заканчиваются .swk , .swl , .swm , .swn , .swo , или .swp в текущем дереве каталогов.

Это может быть не то, что вы хотите, по нескольким причинам:

    Как уже говорилось, он ищет текущее дерево каталогов ; т.е. текущий каталог и все подкаталоги, рекурсивно. Это выходит за рамки того, о чем просит вопрос, и может считаться излишним.

Как уже говорилось, он будет удалять все файлы , чьи имена заканчиваются .swk , .swl , .swm , .swn , .swo , или .swp , и не только .swp . Гэри Джонсон говорит ,

Кроме того, не все файлы подкачки заканчиваются на .swp. Если Vim необходимо создать файл подкачки, а файл, заканчивающийся на .swp, уже существует, Vim будет использовать расширение .swo для нового и .swn после этого. Я думаю, что это просто продолжается назад по алфавиту. Так что используя что-то вроде

или даже

будет более тщательным

'klmnop' может быть излишним, но это обычно гарантирует, что я получу их все.

С другой стороны, это может быть недостаточно. рубль подсказывает

который соответствует всем (строчным) трехбуквенным расширениям в диапазоне от .saa до .swp . Он добавляет: «Будьте осторожны, хотя это более полное решение, оно удалит любые файлы изображений .svg и файлы .swf Adobe Flash. Вы можете изменить регулярное выражение , если вы работаете с этими файлами.»Это также соответствует .sav , .snd (звуковые данные) .sql , .src , .srt (SubRip видео формат субтитров), и многие другие широко распространенные расширения.

Есть ли способ отключить .swp создание файлов в vim? или, по крайней мере, создать их все в одном месте, чтобы я мог легко найти и удалить их.

Я нахожу их особенно раздражающими, когда копирую родительский каталог во время редактирования. Конечно, я знаю, что могу использовать find -exec, чтобы найти и удалить их. Но я хочу более практичное решение.

Чтобы отключить файлы подкачки из vim, введите

Чтобы навсегда отключить файлы подкачки, добавьте в свой

/.vimrc файл ниже

Для более подробной информации смотрите документацию Vim на swapfile

Файлы подкачки хороши, если ваш редактор выходит из строя (отключение питания и т. Д.), Просто имейте в виду. Другой вариант по-прежнему использовать файл подкачки, но оставить его в памяти, чтобы он не продолжал записывать на жесткий диск. Это не может защитить вас от потери файла во время сбоя, но если вы откроете тот же файл в anther vim, он немедленно сообщит вам об этом. Команда выглядит так: set directory = / dev / Ответ trusktr позволяет вам сохранить преимущества файлов подкачки при решении проблемы ОП. Внутри vim вы также можете отключить файл подкачки при открытии файла: :noswapfile edit /path/to/file Моя личная философия о потере данных - DBAB и часто сохраняйте .

Установите следующие переменные в .vimrc или / etc / vimrc, чтобы vim помещал файлы подкачки, резервного копирования и отмены в специальное место вместо рабочего каталога редактируемого файла:

Использование двойной косой черты в пути указывает vim включить функцию, в которой он избегает конфликтов имен. Например, если вы редактируете файл в одном месте, а другой файл в другом месте, и оба файла имеют одинаковые имена, вы не хотите, чтобы в

/ .vim / swap / происходило столкновение имен. Если вы укажете

/ .vim / swap // с двумя завершающими косыми чертами, vim создаст файлы подкачки, используя полный путь редактируемых файлов, чтобы избежать коллизий (косые черты в пути файла будут заменены символом процента%).

Читайте также: