2014-01-24 7 views
0

В ~/.vimrc, у меня есть две строки:Vim: Как переопределить глобальные настройки?

set textwidth=80 
au FileType vim set textwidth=200 " I like to live dangerously 

Когда я открываю Vim, set tw показывает 200 как это должно быть. Но когда я :source ~/.vimrc, set tw показывает 80. Это становится еще более ясным с set colorcolumn=+1

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

Мои вопросы: Я делаю что-то неправильно? Если да, то как я могу остановить tw от изменения каждый раз, когда я :so ~/.vimrc?

ответ

0

Наверное, это не отличное решение, но вы можете явно защитить его.

if !exists("g:conf_loaded") 
    " do things you only want to do once 
    set textwidth=80 
    let g:conf_loaded = 1 
endif 

Или вы могли бы обнаружить, если textwidth еще на его значение по умолчанию:

if &textwidth == 0 
    set textwidth=80 
endif 
0

Установка textwidth локальна в буфер. У вас есть autocmd, работающий на каждом буфере, когда установлен тип файла vim. Это правильно задает ширину текста. Затем вы переиздаете ~/.vimrc, который устанавливает ширину текста в 80. Автотекст FileType не обновляется.

Решение состоит в том, чтобы удалить строку ширины текста 80.

1

Поскольку это всего лишь угловой случай для .vimrc, я работал бы вокруг этого с условным, что повторно применяет локальную установку в буфер Vimscript:

set textwidth=80 
au FileType vim setlocal textwidth=200 " I like to live dangerously 
if &filetype ==# 'vim' 
    setlocal textwidth=200 
endif 

Заметим, что вы должны использовать :setlocal вместо :set для буфер-локальный вариант. В противном случае любой новый буфер без Vimscript, который вы откроете после редактирования Vimscript, неправильно наследует большую текстовую ширину.

Смежные вопросы