Vim: поиск на основе строки
Я не могу найти ответ на это в любом из многочисленных обучающих руководств по Vim в Интернете. Я хочу создать имя файла script из переменных окружения, а затем указать его. И я хочу сделать это в Виме.
Если бы я сделал это в оболочке, я бы сделал что-то вроде этого:
source ${HOME}/.vim/myscript_${FOO}.vim
Как это сделать в Vim?
Ответы
Ответ 1
Вы можете создать строку, а затем использовать команду execute:
exec "source " . $HOME . "/.vim/myscript_" . l:foo . ".vim"
(l:foo
здесь приведен пример использования локальной переменной изнутри функции.)
Edit:
Но на самом деле exec
является излишним в этом конкретном случае. Как показано на рисунке , задачу OPs можно выполнить непосредственно с помощью
source $HOME/.vim/myscript_$FOO.vim
Хотя vim не позволяет нам аккуратно обертывать имена переменных в ${...}
, как мы могли бы в оболочке, в этом случае нам повезло, что HOME
заканчивается /
и FOO
символом .
В общем случае exec
понадобится, если вы хотите следовать одной из переменных с помощью символа без конца. Например:
exec "source " . $BAR . "_script.vim"
будет вставлять переменную BAR
, в то время как следующее попытается найти переменную с именем BAR_script
:
source $BAR_script.vim " Possibly not what you wanted!
Ответ 2
Только :source
работает для меня:
% export MYPATH='a/b/c'
% mkdir -p $MYPATH
% export MYFILE='temp.vim'
% cat > $MYPATH/$MYFILE
echo 'hello world'
^D
% vim
:source $MYPATH/$MYFILE
hello world
Если вы хотите, чтобы некоторые скрипты vim автоматически загружались, просто вставьте их в свой каталог ~/.vim/plugin/
, и они будут загружены для вас, без необходимости делать это вручную.
От :help expand-environment-var
(который я получил, выполнив :help environment
и вкладку, завершив первый вероятный результат)
*:set_env* *expand-env* *expand-environment-var*
Environment variables in specific string options will be expanded. If the
environment variable exists the '$' and the following environment variable
name is replaced with its value. If it does not exist the '$' and the name
are not modified. Any non-id character (not a letter, digit or '_') may
follow the environment variable name. That character and what follows is
appended to the value of the environment variable. Examples: >
:set term=$TERM.new
:set path=/usr/$INCLUDE,$HOME/include,.
When adding or removing a string from an option with ":set opt-=val" or ":set
opt+=val" the expansion is done before the adding or removing.
Я, как правило, считаю, что vim, встроенный в помощь, более полезен, чем что-либо еще, но требуется некоторое время, чтобы получить умение знать, что искать.