Как мне заставить 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 может быть достаточно.