Как мне заставить netrw (в Vim) использовать абсолютный путь?
-
09-12-2019 - |
Вопрос
У меня есть Vim73 в Windows, и я пытаюсь перемещать файлы через файловый браузер.
Это выдавало мне ошибку о том, что "переместить" не является исполняемым (см. этот пост).После некоторой отладки я обнаружил, что проблема была в моем 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 может быть достаточно.