Как мне заставить netrw (в Vim) использовать абсолютный путь?

У меня Vim73 в Windows, и я пытаюсь переместить файлы через файловый браузер.

Он выдавал мне ошибку о том, что "move" не является исполняемым (см. Этот пост). После некоторой отладки я обнаружил, что проблема была в моем vim73\autoload\netrw.vim файл. У меня работает команда перемещения, но есть еще одна проблема - очевидно, каталог, в котором я просматриваю :Ex это не мой текущий рабочий каталог, поэтому mv.exe Команда (из UnxUtils) не может найти источник или назначение.

Вот строка из netrw, которая вызывает проблемы:

 let ret= system(g:netrw_localmovecmd." ".shellescape(fname)." ".shellescape(s:netrwmftgt))

Я пытался обернуть shellescape() функции в expand()но это, похоже, не помогло.

Любая идея, как я могу получить абсолютный путь для источника и назначения?

2 ответа

Решение

Ну, как выясняется, когда ваш курсор находится на .. в списке файлов он считает, что каталог.

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

Упс!

Вместо того, чтобы пытаться найти абсолютный путь, установим g:netrw_keepdir 0 работать на тебя? Это не совсем то, что вы хотите (я подозреваю, что нужно взять vim CWD и применить его к netrw, а не наоборот), но если вы согласны с использованием netrw для управления вашим vim CWD, ваши команды могут просто работать как есть.

Редактировать: Посмотрите на :help netrw-c для подробного объяснения. c команды в netrw может быть достаточно.

Другие вопросы по тегам