5

По какой-то причине я не могу понять, как передавать одинарные кавычки внешним инструментам при использовании vim. Например, я мог бы захотеть вызвать внешний grep Vim для поиска текста «foo (то есть, одна кавычка, затем слово foo)

Так что я мог бы попробовать команду:

:grep \"foo *.txt

Но это приводит к следующему сообщению об ошибке:

!findstr /n \"foo *.txt >C:\Users\[username]\AppData\Local\Temp\VIeC244.tmp 2>&1
shell returned 1
E40: Can't open errorfile C:\Users\[username]\AppData\Local\Temp\VIeC244.tmp

Обратите внимание, что grep изменен для использования 'findstr /n', так как я нахожусь в Windows (и это можно проверить, запустив echo &grepprg). Что я нахожу, так это то, что я могу легко выполнить поиск, который хочу, если я делаю это сам из командной строки, набрав следующее:

findstr /n \"foo *.txt

Который работает именно так, как я ожидал

1 ответ1

1

Вы можете попытаться временно (или навсегда) установить 'shellxquote' в один символ кавычки, например :set shellxquote=\"

Обратите внимание, что это повредит некоторые внешние команды, используя специальные символы, такие как &, |, <,> и т.д. (Все по умолчанию в shellxescape), поэтому вам может не потребоваться оставлять это значение. Но, похоже, это единственное место, где значение shellxquote по умолчанию из Vim 7.3.450 не работает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .