Одне можливе рішення, про яке ще не було сказано, - це піднятися на один рівень вище та застосувати спеціальні сценарії оболонки для розгортання вашого середовища vim.
Це дозволяє передавати налаштування, характерні для vim, використовуючи параметр -S
командного рядка. Перевага полягає в тому, що він також дозволяє налаштувати інші аспекти середовища, наприклад, налаштування терміналу чи кскопа.
Наприклад, скажімо, у мене є проект C ++, який називається foo
, для якого я хочу завантажити параметри файлу vim ~/.vim/projects/foo.vim
. Я також хочу встановити індекс cscope і запустити вікно терміналу, якщо команда викликається з якогось швидкого запуску інструменту або ярлика робочого столу. Щоб відкрити своє середовище, у мене є такий сценарій, який називається vim-foo
:
#!/bin/bash
# Script to setup the VIM development environment of my "foo" project
# Includes building ctags and cscope databases.
VIM_CONFIG=$HOME/.vim/projects/foo.vim
BASE_DIR=$HOME/work/foo
function setup_cscope()
{
CSCOPE_FILES=$BASE_DIR/cscope.files
created_files=false
# check if global cscope.files exist
if [ ! -f $CSCOPE_FILES ]; then
echo "Creating cscope.files"
find $BASE_DIR/src -name '*.cpp' -o -name '*.h' >> $CSCOPE_FILES
created_files=true
fi
# create cscope database
if [ $created_files ] || \
[ ! -f $BASE_DIR/cscope.in.out ] || \
[ ! -f $BASE_DIR/cscope.po.out ] || \
[ ! -f $BASE_DIR/cscope.out ]; then
echo "Creating cscope database"
cscope -b -q -i $CSCOPE_FILES
for f in in.out po.out out; do
mv cscope.$f $BASE_DIR/
done
fi
export CSCOPE_DB=$BASE_DIR/cscope.out
}
# setup everything and finally launch vim
setup_cscope
cd $BASE_DIR
if [[ $TERM == "rxvt-unicode" ]]; then
vim -S $VIM_CONFIG
else
urxvt -e vim -S $VIM_CONFIG
fi