Вариант Vim Set с конкатенацией строк - PullRequest
0 голосов
/ 07 мая 2018


Мне нравится делать в моем .vimrc следующее:

if has('nvim')
  let g:base_data_folder = $HOME . '/.nvim'
else
  let g:base_data_folder = $HOME . '/.vim'
endif

set backupdir = g:base_data_folder . '/backup'

К сожалению, последняя строка не работает, и я получаю сообщение об ошибке при запуске Vim / NeoVim .
Есть идеи, как заставить это работать?

1 Ответ

0 голосов
/ 07 мая 2018

В настройках используется специальный синтаксис. Значения, которые вы им задаете, на самом деле не являются выражениями . Это дает им то преимущество, что вам не нужны кавычки или экранирование, но они менее гибки, когда дело доходит до использования с программными выражениями.

Одним из способов избежать этого, который является обычным для других типов синтаксиса Vim, является команда execute (:help :execute ):

exe 'set backupdir = ' . g:base_data_folder . '/backup'

Тем не менее, для настроек есть специальный синтаксис (:help :let-& ) что я бы порекомендовал вместо этого:

let &backupdir = g:base_data_folder . '/backup'

По сути, это позволяет использовать настройки как «переменные». Я рекомендую вам прочитать все документы о "let", чтобы лучше понять, как это работает, и в других особых случаях.

...