Как получить исходные файлы в .vimrc - PullRequest
4 голосов
/ 19 декабря 2010

Я пробую простой способ поиска файла на основе типа файла нового открытого файла.Например, я хочу получить исходный код python.vimrc, когда новый файл * .py.Этот код (в .vimrc)

function LoadFileTypeDefaults()
  let vimrcfile = &filetype . '.vimrc' 
  if filereadable(vimrcfile)
    echo vimrcfile
    source vimrcfile
  endif
endfunction

выдает следующую ошибку, когда я vi new.py

python.vimrc

Обнаружена ошибка при обработке функции LoadFileTypeDefault:

строка 4:

E484: не удается открыть файл vimrcfile

Мой python.vimrc находится в моем пути выполнения.Более того, если я заменю

source vimrcfile

на

source python.vimrc 

, все будет работать как нужно.

Чего мне не хватает?

Ответы [ 3 ]

4 голосов
/ 19 декабря 2010

Команда source ожидает имя файла, а не выражение.Вы дали ему vimrcfile, поэтому он ищет файл с именем vimrcfile.Используйте execute, чтобы связать команду из одного или нескольких выражений.

exe 'source' vimrcfile

(Если вы передадите несколько аргументов, они будут выполнены с пробелами перед выполнением.)


ЧтоВы, вероятно, действительно хотите просто добавить

autocmd Filetype python set expandtab " etc

в свой .vimrc.


Или, если у вас действительно много настроек, введите их в ~/.vim/after/ftplugin/python.vim.

2 голосов
/ 19 декабря 2010

Разве это не должно быть execute "source " . vimrcfile?

1 голос
/ 19 декабря 2010

В Vim есть система для работы с подобными вещами, называемая плагинами файловых типов или ftplugins.

В вашем ~/.vim (или другом стандартном в вашей ОС) перейдите в каталог ftplugins(создайте, если он не существует) и создайте каталог python под этим.Любой файл .vim в этом каталоге будет автоматически получен при загрузке файла .py.

Обратите внимание, что вам нужно иметь filetype plugin on.

В качестве альтернативы вы можете сделать это с помощью автокомандхотя это немного громоздко:

autocmd BufNewFile,BufRead *.py source python.vimrc

Поместите это в ваш обычный vimrc, и он будет делать то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...