
我正在為一家主要基於 Windows 的公司的開發人員設置虛擬化 Linux 盒子(作為本地開發伺服器),並且一些開發人員對 vim(除其他外)提出了負面批評。 (在他們看來,這在某種程度上代表了Linux/Unix,並證明了該環境非常難以使用。)我記得當我第一次被迫使用vim 時(系統管理員拒絕安裝emacs!)以及最初的困難學習曲線,所以我有點同情。我突然想到,與其向他們介紹nano
(他們可能永遠無法通過),不如在 vim 中設置類似納米的菜單,以使轉換更容易。 (我找到了一個非常適合初學者的 .vimrc 檔案來提供給他們,但它沒有類似奈米風格菜單的東西。)
唯一的問題是我能找到的唯一一個聲稱可以在 vim (而不是 gvim)中設置菜單的東西不起作用,而我嘗試糾正這個問題只是給我留下了另一個需要解決的問題。在我浪費大量時間之前,我想知道這實際上是否可能,因為關於如何做到這一點的資訊似乎很少。
答案1
對的,這是可能的。您可以載入menu.vim
(預設的 gvim 選單定義),或者您可以從頭開始並建立自己的選單,然後透過:emenu
.不過,這並沒有為您提供類似 Nano 的始終可見的菜單;它使您能夠使用命令列選項卡完成來導航選單。
如果使用者沒有 vimrc,您需要先停用 vi 相容性:
:set nocompatible
啟用智慧型命令列完成(啟用列出所有可能的選擇,並使用、、、和<Tab>
導航結果):<Up>
<Down>
<Left>
<Right>
<Enter>
:set wildmenu
在所有匹配選項之間重複按下循環:
:set wildmode=full
載入預設選單(這會在 gvim 中自動發生,但不會在終端 vim 中發生):
:source $VIMRUNTIME/menu.vim
在這四個命令之後,您可以透過呼叫命令上的選項卡完成來手動觸發選單完成:emenu
,方法是:emenu<space><tab>
您可以使用 Tab 鍵、箭頭鍵和 Enter 鍵(它既可以展開子選單也可以選擇項目)來導覽結果。然後,您可以更進一步,綁定一個映射來彈出選單,而不必:emenu
每次都鍵入:
使 Ctrl-Z 在映射中的作用類似於<Tab>
在命令列上交互按下:
:set wildcharm=<C-Z>
並建立一個自動為您呼叫:emenu
完成的綁定:
:map <F4> :emenu <C-Z>
答案2
我自己也遇到過這樣的問題:我無法記住我正在使用的插件的所有命令和組合鍵。另外,我希望有簡單的方法來快速執行命令,而無需設定新的鍵映射或發明命令來存取它們。
維姆維努
我寫了一個小vim 選單插件它允許您為可以使用 vim 編輯的每種文件類型定義選單。這樣,您可以為不同的檔案類型定義選單選項“編譯”,並根據您正在編輯的檔案(.py、.c、.c++、...)啟動正確的指令來編譯程式碼。或在 Markdown 檔案中為「Table」插件命令建立子選單。
在這裡查看: https://github.com/Timoses/vim-venu
附帶說明:我認為每個人都應該選擇自己喜歡的文字編輯器。 Vim 確實有一點障礙(值得學習!)。如果有人不願意學習,那麼 vim 對那個人來說就沒有多大用處。