Як я можу змусити .vimrc читати із зовнішнього файлу?


23

Я хотів би змінити своє, .vimrcщоб прочитати значення змінної із зовнішнього файлу. Як я можу це зробити?

Зокрема, ми з другом ділимося git repo з нашими .vimфайлами, але є кілька невеликих відмінностей у тому, що ми хочемо в наших конфігураціях. Тож більша частина файлу є загальною, але ми використовуємо, якщо оператори визначають, чи потрібно завантажувати розділи, визначені користувачем, наприклад:

let whoami = "user2"
if whoami == "user1"
...

Перевіривши наш загальний .vimrcконтроль над джерелом, ми повинні змінити let whoamiпризначення, щоб наш власний розділ був завантажений. Натомість я хотів би зберегти окремий файл, який може бути різним для кожного з нас і з якого vim завантажить це змінне значення.

Можливо, інший аспект щодо цього: Чи буде vim автоматично читати всі файли в моєму .vimкаталозі? Якщо так, ми можемо кожну помістити в нього симпосилання під назвою username.vim і пов’язати це із зовнішнім файлом, який би відрізнявся для кожного з нас.

Відповіді:


33

у вашому головному .vimrc-файлі:

source otherVimScriptFilePath.vim

тоді просто помістіть свою змінну заяву у цей файл:

" otherVimScriptFilePath.vim
let whoami = "user1"

2
FYI - У моїй ситуації було корисно це зробити let whoami = ""безпосередньо перед sourceрядком, так що якщо не вдасться завантажити зовнішній файл, змінна існує, і я отримаю повідомлення про помилку, яке ми встановили раніше, щоб змінна не була встановлена.
Натан Лонг

2
@GorillaSandwich: Я використовую це для джерела мого vimrc на своїй машині Windows, оскільки Windows не має символічних посилань. У мене папка SVN, яка містить це та всі інші мої точкові файли. Отже, у мене просто _vimrc, який подає справжній у папку svn.
Robert S Ciaccio

@GorillaSandwich: дивіться мою відповідь на silent! sourceчастину
акіра

6

Використання спробу / лову

Оскільки я задав це запитання, я придумав інший випадок використання для завантаження зовнішнього файлу: налаштування, характерні для машини.

Оскільки я можу або не знадобиться робити налаштування на певній машині, я використовую a try/catchдля завантаження зовнішнього файлу; якщо такого файлу немає, я дозволяю йому мовчки вийти з ладу.

" If there are any machine-specific tweaks for Vim, load them from the following file.
try 
  source ~/.vimrc_machine_specific
catch
  " No such file? No problem; just ignore it.
endtry 

5

Щоб відповісти на останнє запитання, файли в ~/.vimне завантажуються автоматично, але всі файли в ~/.vim/plugin.


2
і деякі інші місця , що знаходяться під ~ / .vim ( after, autoload)
Акіра

4

Ви можете змусити ваш ~ / .vimrc завантажити інший файл за допомогою :sourceкоманди. Наприклад, ви можете вкласти свої унікальні команди в ~ / .myvimrc і завантажити ці команди

source ~/.myvimrc

Або, як ви думали, ви можете ввести своє ім’я у цей файл так:

let user = "user1"

а потім помістіть це у свій ~ / .vimrc:

source ~/.myvimrc
if user == "user1"
    " do this
elseif user == "user2"
    " do that
else
    echo "Invalid user"
endif

Замість того, щоб вводити свої імена у файли, ви можете використовувати $ USER як запропонований akira або встановити, userвикористовуючи whoami, як це:

let user = substitute(system('whoami'), '\n', '', '')

Функція substitute () потрібна тому, що у висновку system () зазвичай є позначення '\ n' на кінці.


whoamiне працює на windows
акіра

@akira: Щоправда, але GorillaSandwich використовує Unix, а не Windows. $ USER також не працює з Windows, принаймні, не з Windows XP.
garyjohn

просто кажучи, на Windows його $ USERNAME. mainpoint полягає в: whoamiпороджує новий процес, коли ви відкриваєте свій редактор, він повинен бути швидким, а не (марним) виконувати роботу ще раз.
акіра

2

Ім'я зареєстрованого користувача доступне в змінній середовища US USER. Ви можете легко отримати доступ до цієї змінної:

:echo $USER

так, просто використовуйте

execute "silent! source vimrc." . $USER

у вашому vimrc та введіть налаштування для користувача

vimrc.joe

або будь-яке ваше ім’я для входу


0

Я не впевнений, як виглядає ваш vimrc, тому це може бути нездійсненно, але якщо є великі частини, якими ви і ваш друг поділитесь, ви можете розбити їх на окремі плагіни. Ви можете додати файли до ~/.vim/pluginкаталогу, щоб завантажити їх при запуску. (Вони завантажені в алфавітному порядку - використовуйте :scriptnamesдля перевірки.)

Таким чином, кожен може мати vimrc, який є абсолютно унікальним, але вся ваша загальна конфігурація знаходиться у плагінах. Якщо ви розбиваєте їх логічно, то це також легко поділитися з іншими.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.