Предотвратите vim от экранирования паразитов при использовании%: p - PullRequest
2 голосов
/ 06 февраля 2012

Я создал команду в vim, чтобы открыть текущий файл в Проводнике, используя следующую команду:
command! E silent !start explorer /select,"%:p"

Если я использую эту команду, чтобы попытаться открыть мой файл _vimrc (находится по адресу: C: \ Program Files (x86) \ Vim \ _vimrc) открывает неверный каталог.Похоже, что%: p избегает скобок вокруг "x86", когда он запускает Проводник, в результате чего он пытается перейти к C: \ Program Files \ (x86 \) \ Vim \ _vimrc

Часть, которую яЯ считаю странным, что если в vim я набираю следующую команду:
:echo expand("%:p")
, она печатает путь без экранирования скобок.

Кроме того, если я пытаюсь жестко кодировать путь в командеоткрыть правильно.Это заставляет меня поверить, что это странная причуда с разрешением vim%: p при использовании!команда.

Кто-нибудь знает способ предотвратить%: p от использования скобок при использовании!команда?Я прочитал справку для%: p и:!, Но не смог найти ничего, чтобы решить эту проблему.

1 Ответ

1 голос
/ 08 февраля 2012

Я не знаю, есть ли способ сделать это, но использование !...% в любом сценарии - плохая идея, поскольку это невозможно (по крайней мере, в системах POSIX, AFAIK это не так так на окнах, где " запрещено в имени файла). Если вам нужно передать имя файла в команду оболочки, используйте :execute + shellescape() + expand():

command! E :execute 'silent !start explorer /select,'.shellescape(expand('%:p'), 1)
...