удалить непустую директорию в vim - PullRequest
6 голосов
/ 26 августа 2011

Пользователи Vim будут знакомы с получением и просмотром текущего списка каталогов с помощью

:o .

. В этом представлении каталога мы можем дать дополнительные команды, такие как d и vim.ответит "Пожалуйста, дайте имя каталога:".Это, конечно, позволяет нам создать новый каталог в текущем каталоге, как только мы предоставим имя каталога для vim.

Точно так же мы можем удалить пустой каталог, сначала переместив наш курсор вниз к списку, который подчеркивает определенныйкаталог, который мы хотим удалить, и набрав D .

Проблема в том, что vim не позволяет нам удалять непустой каталог.

Это какой-либо способ настаиватьчто мы удаляем непустую директорию?

Ответы [ 2 ]

7 голосов
/ 26 августа 2011

Представление каталога, на которое вы ссылаетесь, называется netrw. Вы можете прочитать всю документацию с помощью :help netrw, но то, что вы ищете в этом случае, доступно по :help netrw-delete:

Переменная g: netrw_rmdir_cmd используется для поддержки удаления каталогов. Значение по умолчанию:

g: netrw_rmdir_cmd: ssh HOSTNAME rmdir

Если удаление каталога завершается неудачно с помощью g: netrw_rmdir_cmd, тогда netrw попытается чтобы удалить его снова, используя переменную g: netrw_rmf_cmd. Значение по умолчанию:

g: netrw_rmf_cmd: ssh HOSTNAME rm -f

Таким образом, вы можете переопределить переменную, содержащую команду для удаления каталога, следующим образом:

let g:netrw_rmf_cmd = 'ssh HOSTNAME rm -rf'

РЕДАКТИРОВАТЬ : Как указывалось выше, это довольно рискованно. Если вам нужно дополнительное подтверждение, если каталог не пустой, вы можете написать сценарий оболочки, который выполняет запрос. Быстрый Google поднял этот вопрос SO: пользовательский ввод bash, если .

Итак, вы можете написать скрипт, который выглядит так:

#! /bin/bash

hostname = $1
dirname  = $2

# ...
# prompt the user, save the result
# ...

if $yes
then
  ssh $hostname rm -rf $dirname
fi

Затем установите команду для выполнения вашего скрипта

let g:netrw_rmf_cmd = 'safe-delete HOSTNAME'

Рекомендуется, конечно, много тщательного тестирования:).

4 голосов
/ 30 октября 2013

Эндрю ответ не работает для меня.Я нашел другой путь к этому вопросу.Попробуйте :help netrw_localrmdir.

Настройки из моего файла .vimrc:

let g:netrw_localrmdir="rm -r"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...