Как правильно использовать переменные vim в этих случаях? - PullRequest
0 голосов
/ 16 марта 2020

vimr c:

"set a variable
let g:location_pprefix='~/AppData/local'

"case1
if empty(glob(location_prefix.'/nvim/autoload/plug.vim'))
  silent !curl -fLo location_prefix/nvim/autoload/plug.vim --create-dirs
    \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  autocmd VimEnter * PlugInstall --sync | source location_prefix/nvim/init.vim
endif

"case2
map ooo ilocation_prefix

"case3
set backupdir=location_pprefix/nvim/tmp/backup,.

"case4
noremap <silent> <LEADER>rc :e location_pprefix/nvim/init.vim<CR>

‍‍ ‌ ‌ ‍ ‍ ‌ ‍ ‍ ‌ ‌ ‍ ‌ ‍ ‍ ‌ ‍‍ ‌ ‍ ‌ ‍ ‍ ‌ ‍‍ ‌ ‌ ‍

1 Ответ

2 голосов
/ 16 марта 2020

Во всех этих ситуациях вы можете использовать :execute для объединения переменной в команду.

exe "silent !curl -fLo ".g:location_prefix."/nvim/autoload/plug.vim..."
autocmd VimEnter * PlugInstall --sync | exe "source ".g:location_prefix."/nvim/init.vim"

Примеры :map можно сделать проще, используя <expr> (см. :help :map-expression).

map <expr> ooo "i".g:location_prefix
noremap <expr> <silent> <LEADER>rc ":e ".g:location_prefix."/nvim/init.vim<CR>"

Что касается примера :set, вы можете сделать это, используя вместо этого :let (опции доступны как переменные с префиксом &):

let &backupdir = location_prefix."/nvim/tmp/backup,."
...