например, предположим, что я сделал
:let foo=pattern
и теперь я хочу выполнить, Ggrep patter
но использовать переменную foo
вместо литеральной patter
строки.
:echo foo
выходы pattern
, но
:Ggrep foo
просто ищет фу
ОБНОВИТЬ:
создать строку команды и затем выполнить: выполнить ее не решение, это взломать. И это ломается с любыми нетривиальными значениями переменных.
Ggrep
(заглавная G?)?Ответы:
Дело не в переменной, но, возможно, команда vim abbreviate может помочь. Попробуйте из командной строки:
потом
Это завершит «foo» для вашего «шаблона».
источник
echo foo
. Оппсecho pattern
который не является переменной. это взломать и ввести в заблуждение.как насчет:
источник
let xyz = tabpagenr()
тогдаtabnext xyz
. Язык сценариев Vim столь же несовершенен, как и его модальная среда.Если вам не нравится
:exe
решение, вы можете «прочитать» содержимое переменной в командную строку, используя=
регистр выражений. Например, введите,:Ggrep
затем нажмите Ctrl-, rа затем введите=foo
и нажмите Enter. Предполагая, что переменнаяfoo
содержит «pattern», ваша командная строка должна выглядеть так:Это имеет то преимущество, что вы можете видеть фактическую команду, которая будет выполняться, и даже изменять ее перед Enterповторным нажатием .
Увидеть:
источник