ВП читает строку, не дающую желаемого результата - PullRequest
1 голос
/ 30 января 2020

У меня есть файл с именем test, я открываю его, используя vi следующим образом:

vi test

Теперь я хочу вставить строку с помощью команды оболочки, для простоты я использую printf:

:r! printf %s hello

Однако введенная строка имеет вид

tests

, т. Е. Имя файла с добавлением s.

Если я введу ту же команду в терминале напрямую он работает нормально.

В конечном итоге я хочу закодировать строку в base64 и ввести ее в той же строке, что и мой курсор в vi, так что я не буду нужно скопировать строку в отдельный терминал, закодировать ее и скопировать обратно в vi. Как я могу это сделать? Что я делаю не так?

1 Ответ

4 голосов
/ 30 января 2020

Первый этап обработки командной строки в vim - это expand. % расширяется до имени текущего файла - test в вашем случае. %s расширен до tests.

Чтобы избежать расширения, защитите специальный символ обратным слэ sh:

:r! printf \%s hello
...