① 為什麼Vim這樣早期的編輯器一直流行
Vim一直流行說明它好用。Vim本身並不是一成不變的,每個版本的更新要麼解決上個版本的bug要麼提供一些新的功能。
有人會說vim就是用原生vim,配置一大套插件就不是vim了,這是誰告訴你的?很多人用Vim很大原因就是它的插件非常豐富,既然有人為自行車加上了發動機變成了電動車我為什麼非要強迫自己蹬著走?況且可以將Vim改裝成屬於你自己的戰車。以上個人淺見,歡迎批評指正。認同我的看法,請點個贊再走,感謝!喜歡我的,請關注我,再次感謝!
② 為什麼要用vim編程
你不要著急,慢慢來!linux相比Windows更加適合開發,這是很多程序員的親身經歷!你常去www.linuxsir.org逛逛,高手不少!VIM只是文本編輯器,就像記事本程序似的,只是功能多一些……用什麼編輯器無所謂,看個人喜好,我一般在Eclipse上直接編輯……還有,想深入了解Linux操作系統,建議你做做LFS,學習Linux的捷徑!
③ 用vim 編輯怎樣才能比 IDE 更快
很多使用過 IDE 的朋友在開始使用 Vim 時都會覺得 Vim 缺少 IDE 中的功能。而在提問過程中遭遇 Vim 熟練使用者們的抨擊。
這里需要澄清的一點是,即使你再怎麼去調節你的Vim,或為他書寫插件,Vim始終是一個靜態文本編輯器,他在增量解析上因為訪問編輯器內存的局限性和其設計原則,使得他效率上有所缺失,並且不支持 shell-window (關於為什麼不支持 shell-window, 請閱讀 :help shell-window 更詳細地了解)。由於這些問題的存在,Vim 並不能像 IDE 一樣成為一個強大的,動態的編程環境。但是,這並不能妨礙我們使用Vim編程,當我們認可了Vim是一個靜態文本編輯環境後,我們所要做的事情,就是盡可能地利用靜態分析工具打造一個適合靜態文本編輯的編程環境。
對於喜歡使用Vim並且掌握Vim的人們,都有一套自己的配置來讓他們處理IDE 相關的操作。以下我就說一說我自己是如何來打造這樣一個環境:
我們假設你要編輯的項目為: ~/foo/bar/foobar/ 這個project
1. 定義,聲明的跳轉
在編程中,最常使用的是定義跳轉 ( define, declaration jumping ),這方面需要你藉助一個Vim中常用的外部工具叫做 cTags 來實現。很少有人會告訴你 cTags 怎麼使用。但是當你開啟一個項目後,一般你會通過:
~/foo/bar/foobar/: ctags -R .
生成你想要的 tags。完成這個操作後,你的 ~/foo/bar/foobar/ 目錄下會出現一個叫做 tags 的文件。在你的 .vimrc 中設置:
let tags+=./tags
即可將上面的文件加入到 vim中。這個時候,如果你可以試著將游標挪動到某個定義單詞下,按下 ctrl+] 就會跳轉到這個單詞的定義中。你也可以通過 :ts <your_word> 直接列出<your_word> 相關的單詞定義。
2. 文件瀏覽
相信喜歡 Vim 的朋友都有自己的文件瀏覽插件。最常被大家使用的是 NERDTree: https://github.com/scrooloose/nerdtree 。這個插件可以幫助你列出你當前項目下的文件。並且他提供了 file filter pattern。這樣你可以通過設置 g:NERDTreeIgnore 這個變數來忽略那些你不想要的文件。
但是,我個人喜歡使用的是我自己開發的一個插件叫做 ex-project: https://github.com/exvim/ex-project 。這個插件和NERDTree 的功能類似,不過他是專門為單獨 Project 設計的,有更好的 folder, file filter 選項。同時他也是 exVim 插件體系的一部分。
如果說 Vim 的文件瀏覽有什麼比 IDE 有優勢的地方,莫過於因為Vim是一個靜態文本編輯器,所以他的所有東西皆文本,所以你可以用任何文本操作的方式來遊走於文件瀏覽插件中,比如 search /,比如單詞跳轉等等。對了,你還可以用 regular expression。是不是很cool呢。
3. 全局搜索
我相信不少人為此困擾過。Vim 社區里確實太缺少這個東西了。你說 grep? NO,NO,NO!對於大型項目,grep 的recursively搜索即使配合file filter pattern也是慢如狗。為此我個人特地開發了一個專門為 global search 做優化的插件 ex-gsearch: https://github.com/exvim/ex-gsearch 。同樣的,ex-gsearch 也是 exVim 插件體系的一部分。
ex-gsearch 實際上是一個引用外部搜索引擎的搜索結構到 Vim 插件窗口中的插件。他能夠很好的引用 grep, id-utils 的搜索結構。而我這里要重點介紹的就是除了 grep 外更適合作為項目內全局搜索的工具 id-utils。和 ctags 一樣,id-utils 也是一個預先幫助你解析項目文件,然後生成索引列表文件提供給Vim使用的外部工具。他的使用方法:
~/foo/bar/foobar:mkid
然後你會生成一份 ID 文件。在項目中,通過:
~/foo/bar/foobar:lid --result=grep -f"ID" your_search_word
即可全局搜索你想要的文字。因為 mkid 是預先將項目文件索引起來,所以搜索非常的快。並且他有各種指令可以幫助你 filter 你不想要搜索的 folders, files。這些通過 -p 和 id-lang-map 設置即可。
4. 文件快速跳轉
相信不少朋友都被 sublime text 的 ctrl+p 文件快速搜索功能給深深地吸引。其實 Vim 中也有一個類似的插件做相同的事情,他就是 ctrlp: https://github.com/kien/ctrlp.vim。這里我就不多說了。同類的Vim插件還有 lookupfile, unite 等等。他們做的同樣出色。
5. 代碼補齊
這類型的 Vim插件也是非常的多的,我按照我目前喜歡的按排名列舉:
vim-autocomplpop
neocomplcache
neocomplete
YouCompleteMe
supertab
我喜歡 autocomplpop 是因為他純 Vim 腳本編寫,速度上是測試的幾個純 Vim 編寫的插件中最快的。如果你不拘泥於純粹Vim腳本這件事情, neocomplete, YouCompleteMe 會是更好的選擇。
總結,關於 exVim
以上幾點已經可以將Vim打造成不錯的IDE了。說了那麼多,其實只是想告訴題主,Vim只是一個靜態文本編輯工具,他不是IDE,但是藉助外部工具可以做很多類似IDE的事情,甚至有些時候做的更好。
不過耐心看到這里的朋友應該發現了,我上面的列舉有個很大的問題,這些外部工具在項目里運行,需要一些精心的調配,比如 file filter, folder filter。不同的插件語法不同,總不能我每次開個項目,都要設置這些東西吧,很煩。
所以,我寫這篇文章的目的,並不是讓你們用上面的方法來使用Vim編程IDE,而是推薦大家使用 exVim 這個我精心配置過的 Vim 編程環境。exVim 將項目中用到的 file filter, folder filter, 插件配置,外部工具等等東西都通過 .exvim 這個文件進行統一配置,當你開始一個項目的時候,你只需要在項目工程下創建 foobar.exvim 這個文件,並且用 Vim 編輯他,他就會自動的將配置信息轉化到 Vim 中,並且幫你啟動你需要的插件和腳本。也就是說,他做了上面的我說的那些操作,讓你不用去二次學習那些外部工具的命令語法和其他一些選配功能。
④ 為什麼 Mac 下使用 Vim 游標移動速度很慢
你可以通過系統設置裡面的鍵盤設置來提高 h, j, k, l 的移動速度。
⑤ windows 上的 vim 真的很慢么
不知道你的目的是什麼。vim是unix系統下的工具,win下面有很多方便的工具做編程。一般在windows下可以用虛擬機模擬linux
vim來做練習。如題,在windows下安裝vim,完後,輸入法是中文,切換成英文後,就再也切換不到中文輸入法了,改快捷鍵也沒用,有誰知道怎麼設置嗎?
⑥ 為什麼redhat vim編輯文件很卡
我覺得可能網速才是根本原因。你用一般終端命令,信息量較少,所以不覺得。當你用vim編輯大文本文件,信息量變大了,所以就會很卡。
我SSH遠程國外伺服器,就很慢,堵的時候幾十秒沒反應。
你可在網路狀態較好的時候試一下。
⑦ 請問下 為什麼linux在shell命令時會經常反應遲鈍 而且在vim編輯器輸入時有時也會不流暢(純文本終端下)
我在古董機上裝的linux都不會卡
先看系統有問題嗎?用top命令看看cpu佔用情況,free看看內存,沒事兒的話重裝下系統看看。再不行,換個發行版
⑧ 為什麼我vim 括弧出來的很慢
出來有什麼效果?可能和你裝的插件過多有關。估計只能通過調試判斷是什麼問題。
⑨ 當我用vim打開一個xml文件時, 速度非常慢, 而且打開後也會卡半天, 這是為什麼
qq郵箱:872010760
正如 wangjun403 所說,就是正則表達式匹配超長行會比較慢。因為用於分析 xml 語言的正則表達式比較復雜,匹配失敗時引發的回溯較深。
樓主可以試試用 vim7.4,新版 vim 更新了正則引擎,匹配這樣的文本會快許多。
⑩ 為什麼我的Vim啟動和關閉都巨慢
說明 .vimrc root 用戶效
linux 系統用戶系統軟體用戶配置相互獨立
.vimrc 要放用戶自主目錄才行般 ~/.vimrc已經目錄能文件讀需要用 sudo 文件拷所權轉給自需要用 cp, chown, chmod 類命令