2010-11-19 24 views
29

Tôi đã đọc một số dotfiles (vimrc .gvimrc) để tìm hiểu một số thủ thuật gọn gàng, và tôi đã đi qua this one:Tại sao một số người sử dụng 'if has ("gui_running")' trong một .gvimrc?

if has("gui_running") 
    set fuoptions=maxvert,maxhorz 
    au GUIEnter * set fullscreen 
endif 

Nếu đây đã là một .gvimrc (chỉ nạp nếu gVim được tải) tại sao nó có điều kiện if has("gui_running")? Không phải là dự phòng này? Có một vấn đề đặc biệt/lý do cho điều đó?

Tôi biết rằng if has("gui_running") thú vị khi sử dụng trong tập lệnh và như vậy, tôi yêu cầu cụ thể cho việc sử dụng trong .gvimrc, vì nó chỉ có nguồn gốc khi tôi sử dụng gvim, vì vậy về lý thuyết, không cần thiết.

Trả lời

46

File gvimrc rằng OP liên quan đến là của tôi, vì vậy tôi đã sở hữu tốt hơn và thừa nhận rằng nó đã được thực hiện không có lý do chính đáng.

Tôi đã sao chép đoạn mã đó từ Hacking without distractions, đề xuất đặt nó vào vimrc của bạn. Sau đó, tại một số điểm tôi nhận ra nó sẽ được neater để di chuyển nó vào tập tin gvimrc, nhưng tôi đã không nghĩ rằng nó thông qua rõ ràng và để lại kiểm tra if has('gui_running') tại chỗ. Bạn đúng để chỉ ra rằng nó là không cần thiết, vì vậy tôi đã loại bỏ nó.

Vì lợi ích của hậu thế, đây là gvimrc beforeafter thay đổi của tôi.

+0

Tôi bắt đầu đặt tất cả mọi thứ GUI liên quan đến gvimrc, tôi đã không unserstand có ('gui_running'). Cảm ơn bạn đã vượt qua và BTW, cảm ơn các tài nguyên Vimcasts tuyệt vời. Vì bạn biết rất nhiều về vim, tôi thậm chí không thể nghĩ rằng ('gui_running') là vô dụng, tôi nghĩ với bản thân mình, "nó phải là một lý do cho điều đó". :) –

4

Từ tài liệu vim, về cơ bản nó cho phép bạn thực hiện các cài đặt khác nhau tùy thuộc vào gui đang chạy.

- To check in a Vim script if the GUI is being used, you can use something 
    like this: 

    if has("gui_running") 
     echo "yes, we have a GUI" 
    else 
     echo "Boring old console" 
    endif 

          *setting-guifont* 
- When you use the same vimrc file on various systems, you can use something 
    like this to set options specifically for each type of GUI: 

    if has("gui_running") 
     if has("gui_gtk2") 
     :set guifont=Luxi\ Mono\ 12 
     elseif has("x11") 
     " Also for GTK 1 
     :set guifont=*-lucidatypewriter-medium-r-normal-*-*-180-*-*-m-*-* 
     elseif has("gui_win32") 
     :set guifont=Luxi_Mono:h12:cANSI 
     endif 
    endif 

UPDATE:

  *gui-init* *gvimrc* *.gvimrc* *_gvimrc* *$MYGVIMRC* 
The gvimrc file is where GUI-specific startup commands should be placed. It 
is always sourced after the |vimrc| file. If you have one then the $MYGVIMRC 
environment variable has its name. 
+0

Tôi có thể hiểu việc sử dụng 'if has ("gui_gtk2")'. Nhưng đang ở trong .gvimrc, tại sao không chỉ gọi 'if has ("gui_gtk2")' thay vì 'if has ("gui_running") nếu có ("gui_gtk2")'? Tôi muốn biết tại sao mọi người gọi 'if has ("gui_running")' trong một tệp chỉ được gọi khi tôi đã ở trong GUI. (.gvimrc nó chỉ có nguồn gốc nếu tôi đang sử dụng gvim, không vim) –

+3

câu trả lời khả thi khác có thể là mọi người không biết về thứ tự khởi tạo,: giúp khởi tạo và một số người đã quen với việc giữ tất cả các cài đặt của họ trong .vimrc (với gui_running) và khi chuyển chúng sang .gvimrc giữ gui_running bằng copy-paste ... –

1

Nó có thể là trường hợp .gvimrc được đọc nếu bạn gọi khởi động chương trình bằng cách sử dụng gvim thay vì vim? Sự khác biệt duy nhất mà tôi có thể thấy là nếu bạn đang gọi gvim trong một thiết lập nơi nó không thể bắt đầu (ví dụ, bạn đang ở phiên ssh mà không có X). Trong vim đó sẽ được chạy, nhưng các tập tin có thể vẫn còn có nguồn gốc.

(Tôi thật sự không biết nếu điều này là trường hợp, trong hệ thống của tôi, tôi đã biên soạn vim mà không cần X, vì vậy tôi không thể kiểm tra nó)

+0

Nó seens ngu ngốc để cố gắng chạy gvim trong một phiên ssh, nhưng đối số của bạn là hợp lệ, tôi đã không nghĩ về điều đó. –

+2

@Somebody: Không nhất thiết.Một số người sử dụng gvim trên ssh với X forwarding, trong trường hợp gvim sẽ bật lên trên máy chủ X cục bộ. Thử nghiệm này có thể là một trở lại cho trường hợp chuyển tiếp X không được đặt ra cho bất kỳ lý do và vim ra mắt để thay thế. –

+0

@RandyMorris bạn nói đúng. Lỗi của tôi! –

12

Giữ một tệp cấu hình thay vì hai tệp dễ dàng hơn (đặc biệt nếu bạn làm việc trên một số máy và cần đồng bộ hóa cấu hình của chúng). Do đó, thay vì tạo .gvimrc.vimrc, một số có thể thích đặt tất cả thành .vimrc tệp và sử dụng bộ phận bảo vệ.

Sau đó, ai đó chia sẻ tệp này trên internet và mọi người sao chép các phần có phần GUI vào số .gvimrc. Đó là cách nó kết thúc ở đó.

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