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

StackOverflow https://stackoverflow.com//questions/9609026

  •  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 может быть достаточно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top