10

например, предположим, что я сделал

:let foo=pattern

и теперь я хочу выполнить Ggrep patter но использовать переменную foo вместо литеральной строки patter .

:echo foo

pattern выходов, но

:Ggrep foo

просто ищет фу

ОБНОВИТЬ:

создать строку команды и затем выполнить: выполнить ее не решение, это взломать. И это ломается с любыми нетривиальными значениями переменных.

3 ответа3

5

как насчет:

:execute ':grep ' . foo
2

Дело не в переменной, но, возможно, команда vim abbreviate может помочь. Попробуйте из командной строки:

:abbreviate foo pattern

затем

:Ggrep foo<space>

Это завершит «foo» для вашего «шаблона».

2

Если вам не нравится решение :exe , вы можете "прочитать" содержимое переменной в командную строку, используя регистр выражения = . Например, введите :Ggrep затем нажмите Ctrl - r, а затем введите =foo и нажмите Enter . Предполагая, что переменная foo содержит "pattern", ваша командная строка должна выглядеть так:

:Ggrep pattern

Преимуществом этого является то, что вы можете видеть фактическую команду, которая будет выполняться, и даже изменять ее перед повторным нажатием Enter .

Увидеть:

:help "=

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