Функция для источника .vimrc и .gvimrc - PullRequest
5 голосов
/ 19 августа 2011

Я обычно использую GVim, но большая часть моей конфигурации выполняется через .vimrc (например, сопоставления клавиш), потому что я хочу их в vim и gvim.Поэтому, когда я редактирую свой vimrc, а затем отправляю его из gvim, мне нужно после этого поставить свой .gvimrc, чтобы вернуть мою цветовую схему (поскольку это только gvim).Я попытался написать функцию, чтобы сделать это, и столкнулся с проблемами, описанными в комментариях ниже:

function ReloadConfigs()
    :source ~/.vimrc
    if has("gui_running")
        :source ~/.gvimrc
    endif
endfunction
command! Recfg call ReloadConfigs()
" error: function already exists, add ! to replace it

function! ReloadConfigs()
    :source ~/.vimrc
    if has("gui_running")
        :source ~/.gvimrc
    endif
endfunction
command! Recfg call ReloadConfigs()
" error: cannot replace function, it is in use

Возможно ли сделать что-то подобное?Или, так как мой .gvimrc имеет всего несколько строк, я должен просто поместить его содержимое в блок if has("gui_running")?

Ответы [ 2 ]

14 голосов
/ 19 августа 2011

Вы поместили свою функцию где-то в вашем .vimrc.Это означает, что во время выполнения :source .vimrc пытается переопределить его, что является проблемой.Вы можете попробовать сделать это:

if !exists("*ReloadConfigs")
  function ReloadConfigs()
      :source ~/.vimrc
      if has("gui_running")
          :source ~/.gvimrc
      endif
  endfunction
  command! Recfg call ReloadConfigs()
endif

Если функция уже определена, следует пропустить ее переопределение, избегая проблемы.

3 голосов
/ 19 августа 2011

Я бы сказал, что все, что у вас есть в вашем .vimrc, который портит настройки gvim, должно быть окружено блоком if !has("gui_running").

Кажется, что autocmd - самый простой способ справиться с тем, что вы пытаетесь сделать:

autocmd BufWritePre .gvimrc,.vimrc source <amatch>

Таким образом, ваш файл конфигурации автоматически перезагружается, когда вы сохраняете его, без необходимости возиться с функциями. Кроме того, вы можете использовать сопоставление для запуска :source $MYVIMRC или :source $MYGVIMRC.

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