2011-08-18 28 views
5

Tôi thường sử dụng GVim, nhưng hầu hết cấu hình của tôi được thực hiện thông qua .vimrc (như keymappings) vì tôi muốn chúng trong vim gvim. Vì vậy, khi tôi chỉnh sửa vimrc của tôi và sau đó nguồn nó từ gvim, tôi có nguồn của tôi .gvimrc sau đó để có được colorscheme của tôi trở lại (kể từ khi nó gvim chỉ). Tôi cố gắng để viết một chức năng để làm điều này, và chạy vào những vấn đề được mô tả trong các ý kiến ​​dưới đây:Chức năng nguồn .vimrc và .gvimrc

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 

Có thể làm một cái gì đó như thế này? Hoặc, vì .gvimrc của tôi chỉ có một vài dòng, tôi có nên đặt nội dung của nó vào một khối if has("gui_running") không?

Trả lời

14

Bạn đã đặt chức năng của mình ở đâu đó trong .vimrc. Điều này có nghĩa rằng, trong khi nó đang được thực hiện, :source .vimrc đang cố gắng xác định lại nó, đó là một vấn đề. Bạn có thể thử làm điều này:

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

Nếu chức năng đã được xác định, điều này nên bỏ qua xác định lại, tránh vấn đề.

3

Tôi sẽ nói rằng bất cứ điều gì bạn có trong .vimrc của bạn đó là rối tung lên cài đặt gvim nên được bao quanh bởi một khối if !has("gui_running").

Một autocmd có vẻ là cách dễ nhất xử lý những gì bạn đang cố gắng để làm:

autocmd BufWritePre .gvimrc,.vimrc source <amatch> 

Bằng cách này bạn sẽ có được tập tin cấu hình của bạn sẽ tự động tải lại khi bạn lưu nó mà không cần phải mess xung quanh với các chức năng. Ngoài ra, bạn có thể sử dụng ánh xạ để kích hoạt :source $MYVIMRC hoặc :source $MYGVIMRC.

+0

Không có bất cứ điều gì trong .vimrc của tôi là "messes up" gvim. Tôi chỉ đơn giản là sử dụng màu sắc khác nhau trong vim và gvim. Gvim colorscheme được chỉ định trong .gvimrc. Tôi cũng có phông chữ, dòng/cols, guioptions và cài đặt showtabline. Có vẻ như dòng 'autocmd' sẽ chỉ nguồn tệp được ghi. Vì vậy, nếu tôi đang chỉnh sửa .vimrc trong gvim và tôi viết nó, tôi vẫn sẽ phải nguồn gvimrc. – Daniel

+0

Tại sao bạn cần tìm nguồn gvimrc? (Lưu ý câu đầu tiên của tôi.) –

+0

Tôi đã lưu ý câu đầu tiên của bạn. Vim và gvim sử dụng các gam màu khác nhau, như tôi đã nói trong bài gốc. – Daniel

Các vấn đề liên quan