最后更新于 .

其實很早就想寫這篇文章了,雖然晚上介紹vim的文章很多,本博也已經就vim的使用寫了70多篇博文,但是由于歷史的原因,還有很多人對vim能做什么存在誤解,包括:

  • vim對中文支持不好
  • vim適合臨時編輯文本,對IDE的支持不好
  • vim的內嵌腳本語言不夠強大,不像emacs的lisp那樣無所不能

我不知道提出這些論斷的人是因為不了不了解vim的現狀,還是是對vim心存偏見。本博在寫vim相關文章的時候,一直堅持只談技術的原則,不會涉及到與其他編輯器尤其是emacs的任何比較,然而最近在看了某些博文之后,覺得為了不讓某些已經過時的觀點給初學者選擇編輯器時造成困擾,寫下這篇文章十分必要。 OK,我們正式開始,在文章的末尾,相信大家都會明白上面的幾個觀點是否正確。 一.普通人的編輯利器

  • 之所以第一點就提到這個,是因為"文字處理"當然是一個編輯器最基本的功能,而能把編輯的體驗發揮到極致的也恐怕只有vim而已了。 這一節,也會參考善用佳軟對vim的使用心得,相信用戶的感受是最好的證明。
  • 1.免費
  • 用戶再也不用去網上辛苦的下載D版了!
  • 2.提高輸入速度
  • 這個相信也沒有什么好爭論的,純鍵盤操作的速度是鼠標無法比擬的,雖然會帶來一定的學習成本,但是相信還是值得的。
  • 3.完美支持中文,并支持多種文件編碼
  • 很多編輯器會有處理多字節編碼的問題,而vim完美解決了這一點。(如果你的vim沒解決,請參考linux下vim的編譯以及終端亂碼的最終解決方案
  • 4.文本筆記管理
  • 這要歸功于vim的一款插件:voom,詳情可以參考善用佳軟的這篇博文--VOoM(原VOOF):vim實現帶折疊雙欄樹狀文本管理

二.程序員的編輯利器

  • 如果你是一名程序員,那就千萬不要錯過vim,它真的為程序員提供了太多貼心的功能。
  • 1.支持幾乎所有語言類型
  • 不夸張的說,vim真的是將這一點做到了極致,只要是大家知道的語言,大到c++,python,小到bash,sql,vim全部都默認支持了這些語言的語法高亮,自動縮進,等等。一個編輯器搞定所有源碼編寫,不用為每門語言學習他的編輯器,降低學習成本,何樂而不為?
  • 2.支持各種語言的代碼自動補全和智能提示
  • 詳見:vim所支持的自動完成詳解把VIM打造成一個真正的IDE(3)
  • 3.快速查找函數定義功能及顯示函數列表功能
  • vim+tags+taglist即可輕松實現上面的功能,功能上完全可以替代si或者vs.詳見:把VIM打造成一個真正的IDE(2)在Vim中使用ctags
  • 4.支持類似textmate的代碼片段功能
  • 我目前使用的是snipMate,當然提供這種功能的插件可不只這一個,你可以有更多選擇~
  • 5.集成編譯調試功能,快速定位編譯錯誤
  • vim提供了quickfix的功能,可以集成gcc,g++,java,c#,python,php等各種語言的錯誤定位功能,極大提高了代碼編譯調試時的錯誤定位。參見:VIM-一鍵編譯單個源文件
  • 6.開源
  • 如果發現vim有bug,那么大可以自己去研究代碼修復~
  • 7.跨平臺
  • 在linux,windows,mac等多平臺都有相應的版本,不用擔心跨平臺開發的問題!
  • 8.支持插件,無限擴展自己想要的功能
  • vim本身有自己的腳本語言,如果你真的不想再多學一門語言,那也不是什么大事,gvim7.3已經默認編譯支持了python,ruby,lua,perl等等腳本語言,用你喜歡的腳本語言開發去吧!(我愛python!),與emacs的lisp相比,vim自身的腳本語言確實有所欠缺,但是python較之lisp也算是旗鼓相當了吧

三.vim骨灰級玩家的超級終端

  • 這是我幾個月來一直試圖總結的結論,也是vim發展至今我認為顛覆性的一個大特性。 其實在我現在看來,vim更像是一個超級終端,vim已經支持用python,lua,perl,ruby等多種腳本語言進行腳本編寫,只要你愿意,你可以用腳本語言實現任何你想要的功能,然后通過vim展示出來。 簡單來說,即vim替你實現了一個通用的界面,而你只需要編寫你的邏輯代碼,而展現到屏幕這一層,就調用vim的接口,由vim來完成就可以了~ 這就是我所說的超級終端的定義,如果還是不能理解,那我們就用實例來說明吧!
  • 1.Vimpress,提供在vim中查看、發布、修改、刪除博客的功能
  • 2.TwitVim,提供在vim查看、發布、修改、刪除twitter的功能
  • 3.vimwiki,用vim打造你的個人wiki~
  • 4.qiushibaike,在vim中看糗事百科(本博編寫)
  • 5.Calendar,提供日歷的功能,并且可以記筆記
  • 6.vimmailr,用vim來發郵件,參見:用Vim(gvim)發郵件(上流哇)

OK,到此為止就結束啦~對照文章開頭的那些所謂vim的不足,是否有了新的認識呢? 然而其實vim所能做的遠不止這么點,只要你肯去發掘,你會發現vim真的遠超乎你的想象!

Pingbacks

  1. vim簡介-無所不能的vim究竟能做什么 | 程序猿小7 on #

    [...] 這里 Categories: [...]

Pingbacks已打開。

Trackbacks

引用地址

評論

  1. dxq83

    dxq83 on #

    雖然我不是程序員,但是愛好者,在剛開始學vim。這個網站很好,會常來看看學習!

    Reply

    1. Dante

      Dante on #

      哈哈,歡迎交流~

      Reply

  2. fanhe

    fanhe on #

    缺點:1.無論你怎么搞,還是不能想ide那樣方便的管理項目,調試等等。一句話,vim就是沒辦法做到現代的ide一樣。
    2.如果你的文本經常要長行的,不要用vim了。

    Reply

    1. Dante

      Dante on #

      1.關于第一點我不發表意見,并不在技術討論的范疇。不過我一直有個觀點:一件事你完成了,對別人宣布這件事是可以實現的,別人肯定會相信;但如果一件事你沒做出來,就對別人宣布這件事情是不可能完成的,是沒有什么說服力的。

      2.第二個問題很容易解決:

      <pre lang="vim" line="1">
      set display=lastline
      </pre>

      Reply

      1. fanhe

        fanhe on #

        往下滾還可以,往上滾就知道什么叫晃動

        Reply

      2. ==

        == on #

        額,不太理解,所謂的長行是不是指很長的一個行,要切換這個長行的文字用 jk 不是很好使?用了set display=lastline,并沒有達到像Word那樣。。求解

        Reply

        1. Dante

          Dante on #

          呃,不是,set display=lastline主要是為了解決一行的顯示超過一屏時的問題。
          你說的切換行用gj,gk就可以

          Reply

          1. ==

            == on #

            OK了,謝謝。

            Reply

            1. lisfan

              lisfan on #

              哈,又學了一招,這問題困擾我挺久了。
              不過我現在使用vim的最大原因還是在文本編輯上,純鍵盤操作可以讓我更專注于在內容上,至于將vim當成ide編輯器,我現在遇到的難點是對某一語言的插件尋找配置,太耗費時間了點(如果有朋友可以放出針對某一語文的插件及配置的話,再好不過了)因為并不是只用一種語言啊。總之先在文本編輯領域成為“磚家”先

              Reply

              1. ==

                == on #

                請問 你知道怎么在win下設置vim背景透明嗎?網上的說法都是在linux下的終端里用vim,再將終端設置為透明;或者是善用佳軟的用ahk腳本設置,我下了上面的ahk腳本,沒用……

                Reply

                1. Dante

                  Dante on #

                  win下面,vim自身確實沒提供這樣的功能,如果善用佳軟那個沒用的話,我也不知道咋搞了,沒有研究過。。

                  Reply

                2. kit393

                  kit393 on #

                  搜索挖墳出來的:

                  這個不是vim本身的功能,是由第三方程序提供的,ahk不可以的話搜索一下類似功能的小軟件.

                  Reply

                3. 梧桐樹

                  梧桐樹 on #

                  使用 dm2 可以實現 該功能

                  Reply

    2. 依云

      依云 on #

      如果你的文本經常要長行的,那么你不應當把它當作普通的純文本處理,比如由程序生成的長長的 XML 或者 json 文件。

      Reply

    3. 梧桐

      梧桐 on #

      說的有點道理,但是在純編輯領域VIM肯定是最強的~沒有之一~

      Reply

    4. artmath

      artmath on #

      總有一些人愿意把vim和ide相提并論,真是讓人很不爽。不是vim沒有ide那么強大,而是受使用者的水平限制,水平低的人覺得很羅嗦,而水平高的人配置得比ide還強大順手。

      vim就是一個編輯器,自己需要的功能自己去擴展,有沒有ide那么強完全是使用著的水平,像什么netbeans,visual studio,這些玩意,人家那是商業軟件,多少人在開發?花了多少錢?

      而vim就是一款開源免費的編輯器。
      當年沒有這些ide之前的黑客不也總vim,emacs么。

      Reply

      1. fanhe

        fanhe on #

        膚淺。

        Reply

        1. zsneoks

          zsneoks on #

          一句話。
          使用者有多長。vim就能有多長。

          Ps:在博主這又學了不少東東來

          Reply

          1. Dante

            Dante on #

            呵呵,歡迎經常來討論~~

            Reply

      2. Jacky Liu

        Jacky Liu on #

        vim 是最強大的 IDE。以上。

        Reply

  3. vimererer

    vimererer on #

    vimer的確很強大!
    博主也很強大
    對待任何事物都要奔著學習他的好的一方面的態度去看待~這樣自己才能有所提高·

    Reply

  4. 老戴

    老戴 on #

    好久沒來回復了!最近在學習emacs,想試試看哪個更適合我一點

    Reply

    1. Dante

      Dante on #

      呵呵,倚天屠龍,得其一便可獨步武林~

      Reply

  5. Eric

    Eric on #

    作為編輯器vim是強大,但絕對不是無所不能。要比多才多藝,.NET,Java的IDE要甩開vim幾條街幾乎毫無壓力。
    另外一個不爽的地方是:80%的時間只是在使用20%的功能,只要肯記,vim的操作風格非但無害而且好處多多,但是那80%的功能有時還是要用到的,譬如要set某個比較偏門的option,運氣好時能google之,I‘m not lucky時就只能一頁一頁的翻文檔。。。

    Reply

    1. Dante

      Dante on #

      對與.NET,java的IDE的比較同樣不發表意見,不在技術的范疇。

      不過vim的精髓不僅是hjkl,那只是vim外在的表現,文章中的所說的第二和第三大類也同樣是vim非常重要的特性。

      Reply

    2. 依云

      依云 on #

      Vim 本來就不是無所不能的,Vim 說過你不能用它來洗盤子的,只有 Emacs 說過自己能煮咖啡。

      如果你要的是 IDE,那么你不應該使用 Vim。Vim 是通用的文本編輯器,根本就不是專門寫某種(或某些)代碼的 IDE。

      Reply

      1. fanhe

        fanhe on #

        所以我從不向想要在linux下要ide的同學推薦vim。

        Reply

        1. Mike Ma

          Mike Ma on #

          Emacs和Eclipse比起來,前者勝過后者毫無壓力

          Reply

      2. wangjl

        wangjl on #

        ide隱藏了太多東西,想走遠一點的同學還是看著腳下,編譯器、連接器一步一個腳印的走過來比較好……

        選vim只是因為我在很多機器上需要用它,emacs需要太長時間來調教……
        “vi任何地方都有”,雖然這個說法不太牢靠了

        另外,我想我應該可以用vim來煮咖啡。

        Reply

        1. 依云

          依云 on #

          vi 的確很多地方都有啊,連 busybox 里都有一個呢。不過 vi 和 vim 相比差多了,而且有些奇怪的行為,比如我寫好 :q! 正準備按回車時,突然反悔了,于是 Esc,結果 vi 還是會執行命令。。。

          Reply

          1. wangjl

            wangjl on #

            貌似現在很多發行版用nano代替了vi,比如ubuntu、gentoo什么的……讓人很郁悶,安裝的時候第一件事就是裝vim,不然根本沒法用。
            busybox上的vi確實很讓人感動。

            Reply

            1. 依云

              依云 on #

              除了嵌入式系統外,還沒有不能用 vi 的 Linux 系統吧?Ubuntu 也有 vi 命令的,雖然默認是鏈接到 vim.tiny。

              Reply

              1. jayklx

                jayklx on #

                Gentoo木有。。。
                灰常糾結。。。居然帶了Emacs不帶Vim。。。

                Reply

        2. fanhe

          fanhe on #

          當你都了解了編譯器、連接器啥的,然后也會寫makefile了,那又如何?自己手動一個一個打命令?反正我就是想偷懶,但是又用慣了vim,就會對沒有把vim作為ide編輯器的種種郁悶

          Reply

          1. wangjl

            wangjl on #

            我確實敲過很多makefile,現在敲automake,對c/c++來說,完全掌控自己的代碼太重要了,ide隱藏的細節都是將來的風險

            Reply

            1. Dante

              Dante on #

              我也是一直在寫自己的makefile,后來寫的多了之后,就自己用snipmate做了幾個makefile的模板,然一直在用~ 很順手~~

              Reply

            2. fanhe

              fanhe on #

              那你為什么信任makefile?難道makefile就不會隱藏細節?你信任自己寫的makefile就好像我信任一個穩健的ide設置的一個項目。客觀來說,vim能做很多事,但不是萬能。這句話不能只說一半,否則就是誤人子弟。其實我想過跑emacs那里的,因為它比vim“萬能”,但是那操作方式實在是不適合我。

              Reply

              1. 依云

                依云 on #

                當你完全了解你的 IDE 時,并且知道它的 bug 很少時,它也是可信的。只是,誰給我個 Visual Studio 參考手冊之類的東西?

                Reply

                1. fanhe

                  fanhe on #

                  全世界的ide只有visual studio一種?我用的ide只是讓它幫我組織項目,幫我敲那一大堆的編譯命令等等這類

                  Reply

                  1. 依云

                    依云 on #

                    呃,我只是舉個例子嘛。不管是什么東西,如果我不知道它是怎么調用后端的編譯器什么的我就不放心,說不定哪天死得很慘還不知道自己是怎么死的。

                    Reply

                    1. 雨碎江南

                      雨碎江南 on #

                      我強烈贊同這個觀點,以前做JavaEE項目的時候給IDE忽悠慘了,所以現在只用Vim+Ant+JDK作為基本工具,重要的web.xml什么的都是手寫.令我驚奇的是這樣同時提高了編輯效率和代碼可靠程度......

                      Reply

            3. zsneoks

              zsneoks on #

              我覺得單就這個makefile的問題來講,既然ide可以自動生成,那么就表示存在自動生成的算法。把這個算法設計出來寫成個自動生成makefile的腳本那不就搞定,一勞永逸了。

              當然,如果非說這樣還得自己去想和寫這個腳本,而ide下已經有人替我們想和寫好自動生成過程直接使用,來做為ide強于vim的理由。我就實在沒什么話好說了。

              總之,只要愿意動手,計算機上的事情應該都可以實現,我覺得。

              Reply

      3. madper

        madper on #

        其實vim也可以煮咖啡的, 你所需要的只是一個支持超文本咖啡壺控制協議的咖啡壺而已. 雖然這個協議一開始是惡搞的, 但是真的有國外蛋疼的人做出來了..

        Reply

    3. 依云

      依云 on #

      呃,我用的 Vim 時除了找插件外很少 Google 的。如果 :h 的補全中找不到的話就試試 :helpgrep,實在不行可以到 vim_use (或者中文的 vim-cn)郵件列表里去問。當然也歡迎到 vim-cn@appspot.com 這個 XMPP 群來討論。

      Reply

      1. 亞彌

        亞彌 on #

        這個XMPP群咋訪問呢?GTalk可以不?

        Reply

        1. 依云

          依云 on #

          當然可以了~

          Reply

  6. Javaer

    Javaer on #

    喜歡用vim,轉了,謝謝博主。

    Reply

  7. Ricepig

    Ricepig on #

    正在學習VIM,作為文字編輯器它是給力的。

    不過,文章中的第二部分。。。VIM和史前ide比比還是可以的,和現代的ide比。。。就說幾點吧

    1、調試的支持
    2、代碼智能感知和智能提示
    3、項目管理、代碼管理和重構等較為“高級”的特性

    VIM是很強大的,手指不離開鍵盤的感覺也確實很好。

    但是,Visual Studio,這個宇宙中最強大的ide,也懇請作者感受一下最新版吧,哇哈哈

    Reply

    1. Dante

      Dante on #

      我公司的電腦上一直裝著vs2010。。。不過好像過了試用時間了。。
      其實可能你對文章的第二部分真的理解和我的初衷有些偏差,我的意思是vim雖然只是一款編輯器,但已經集成了很多IDE的功能。這對vim的使用者是福音,畢竟對IDE功能支持的欠缺將不再是拒絕vim的理由了。

      本博所有的vim相關文章都是基于推廣vim和讓vim使用者更方便的使用vim,并非有意要與哪個編輯器或者IDE一爭高下。

      Reply

    2. Noe

      Noe on #

      就憑VS自帶的渣類編輯器也好意思稱最強大?笑話!蘋果免費提供的Xcode不知道比VS好用多少倍。更不用說和Emacs和vim相比了。

      Reply

    3. 依云

      依云 on #

      是的,VS 太強大了,以至于在全宇宙的 IDE 中只有它做到我剛接觸時就如同想不到火球一般,此后只好遠遠躲避。

      Reply

      1. 依云

        依云 on #

        s/想不/像碰/

        Reply

  8. prife

    prife on #

    網站很好,收藏,請教樓主一個問題哈
    我用gvim的時候,輸入中文的時候,搜狗輸入法
    按下ESC切換模式,有的時候輸入法自動變成輸入英文狀態,有時候卻又成了中文狀態了,很糾結,樓主有何良策么?先謝謝了

    Reply

    1. Dante

      Dante on #

      呃,搜狗輸入法沒用過,不過我現在用QQ輸入法按下ESC是自動進入英文模式的,google輸入法好像也沒問題。

      Reply

      1. prife

        prife on #

        謝謝,我換了輸入法就么有搜狗的那個毛病了。再請教一個問題哈,我試了下配置python,也把你的python.vim放到indent目錄下了。但是似乎編寫 file.py文件的時候,還是沒有正確的縮進。比如我寫
        for i in range(5):
        print i
        print所在行又從頭開始了,而且按下tab是默認的8字符。我想實現的效果是,按下tab是四空格縮進,但是只是針對py文件,并且可以實現樓主那種漂亮的縮進。我以前用notepad++則無此問題,可以正常縮進。請問是什么原因呢?
        系統:win7
        版本:gvim 7.3

        Reply

        1. prife

          prife on #

          set nu
          set autoindent
          syntax enable
          " 取消文件備份
          set nobackup
          " 注釋語句
          " 設置 mapleader
          let mapleader = ","

          "設置加載vimrc配置文件的快捷鍵
          map ss :source $HOME\_vimrc
          "設置打開配置文件的快捷鍵
          map o :e $HOME\_vimrc
          "當vimrc文件改動時,自動加載此文件
          "autocmd! bufwritepost _vimrc source $HOME\_vimrc
          "Go to last file(s) if invoked without arguments.
          autocmd VimLeave * nested if (!isdirectory($HOME . "\mvim")) |
          \ call mkdir($HOME . "\mvim") |
          \ endif |
          \ execute "mksession! " . $HOME . "\mvim\Session.vim"

          autocmd VimEnter * nested if argc() == 0 &amp;&amp; filereadable($HOME . "\mvim\Session.vim") |
          \ execute "source " . $HOME . "\mvim\Session.vim"
          "插入python配置的快捷鍵
          map :w:!python %
          imap :w:!python %
          "pydiction 1.2 python auto complete
          filetype plugin on
          let g:pydiction_location = '$HOME/mvim/complete-dict'
          "defalut g:pydiction_menu_height == 15
          "let g:pydiction_menu_height = 20

          Reply

        2. Dante

          Dante on #

          好奇怪。。我試了一下是可以的呀?
          set autoindent
          把這個去掉試試。

          Reply

  9. prife

    prife on #

    去掉了,還是不能對for語句自動縮進,那個python.vim是不是應該放在ftplugin目錄下面呢?放在indent目錄下似乎沒有任何效果。另外不知道是不是vimrc需要做一些設置呢?

    Reply

    1. Dante

      Dante on #

      你是不是沒有寫這句

      <pre lang="vim" line="1">
      filetype plugin indent on
      </pre>

      Reply

      1. prife

        prife on #

        加上這句果然可以了。非常感謝

        Reply

  10. showwiki

    showwiki on #

    請問Vim支持像Eclipse那種高亮所選的 相同 單詞 的功能么?

    Reply

    1. Dante

      Dante on #

      自帶的serach可以高亮一個。
      擴展的mark.vim都可以同時高亮6個。

      Reply

      1. showwiki

        showwiki on #

        非常謝謝!vim自帶的search要敲入所選的單詞,gvim中支持雙擊選擇然后高亮么?
        mark.vim 的下載頁面有個叫mark.vba.gz 的下載鏈接,和mark.vim的鏈接 ,有沒有簡單的教程鏈接啊,百度了一下,沒有相關教程啊
        非常感謝站長的熱心回答,

        Reply

        1. showwiki

          showwiki on #

          不好,意思,剛在鏈接上才看到英文的使用說明,竊問一下,
          “m Mark or unmark the word under the cursor”

          是指在某種模式下直接按 m 鍵然后高亮光標所在單詞么?我試了一下,沒有效果矣?
          和{Visual} 是指什么啊?困惑中

          Reply

          1. showwiki

            showwiki on #

            神啊,居然是指\\ , m 指的居然是\\m, 真是太出乎我的意料了,能改成一個簡單點的映射么?

            Reply

            1. kikyo

              kikyo on #

              http://paste.org.ru/?q6fbue

              上面的應該是樓上想要的吧。

              Reply

            2. Dante

              Dante on #

              我映射的是,k

              <pre lang="cpp" line="1">
              map ,k <leader>m
              </pre>

              Reply

        2. 依云

          依云 on #

          “選擇”和“高亮”有區別嗎?

          Reply

  11. lisfan

    lisfan on #

    現在討論很激烈呢,求一個東西:哪款輕便的劃詞翻譯軟件能在vim中使用(現在使用的是有道,翻譯時要打開notepad,真麻煩)

    Reply

    1. Dante

      Dante on #

      善用佳軟之前有片博文,可以看一下:
      http://xbeta.info/gvim-powerword-ciba.htm

      Reply

      1. 梧桐

        梧桐 on #

        這個會不會更符合你的需要?http://www.vim.org/scripts/script.php?script_id=3404

        Reply

        1. lisfan

          lisfan on #

          謝謝梧桐兄了,已經用慣了有道了

          Reply

      2. lisfan

        lisfan on #

        55~太感動了,終于解決這個問題了,不久前也準備是想將善用佳軟的所有博文都看下的,都是精品啊,可能還沒有看到這篇吧。謝謝了

        Reply

  12. lisfan

    lisfan on #

    測試一下,不好意思哈。

    Reply

  13. johnson

    johnson on #

    我正準備學VIM
    可是看到了好多老文章,說VIM甚至比不過VS。
    純鍵盤我的打字速度并不快(當然也沒有刻意練過)請問我適合用vim嗎。。。

    Reply

    1. Dante

      Dante on #

      呃,關于VIM和VS的爭論已經很多,這里就不多說什么了,不過我個人是更趨向于vim。
      對于打字速度的話,這種東西慢慢熟悉了自然會提速,而且用vim也利于你的快速編輯能力。

      Reply

  14. jeng

    jeng on #

    請問各位達人,vim中有C# 或 ASP.NET 的插件嗎?
    不要誤會,我也是支持使用VIM 的,但是迫于現在主要做 .NET 開發
    VS 中有人做了模仿vim的插件,及其不好用。
    和你們一樣,我也討厭VS~
    資源占用之多實在是不忍提起

    Reply

    1. Dante

      Dante on #

      嗯,很久沒寫過C#和ASP.net了,在www.vim.org里直接查一下吧

      其實可以一步步來,先把vim當普通的編輯器,時間長了,你會發現自己需要的插件都會找到。

      Reply

    2. madper

      madper on #

      vs占用資源真不多, 算是很少的了, vs2008打開之后只占用三十多mb的內存, 比起別的ide或者emacs動輒80mb的內存, 算是很少的了. 只不過vs2008用起來不是很流暢罷了.

      Reply

  15. x-snail

    x-snail on #

    新手學習了,不知道vim 有沒有php 代碼補全功能

    Reply

    1. Dante

      Dante on #

      http://www.vnchuangji.cn/?p=772

      Reply

  16. freiz

    freiz on #

    喜歡用vim寫腳本語言,寫Java不用IDE相當于自虐吧...就確定別人的幾十個類庫里面的細節都了解么,反正我是沒這本事

    兩個思路,一是把vim擴展成IDE,這方面我感覺不靠譜,各種語言補全就很難弄,其實也不用弄,像Python、C這些標準庫比較小的平時拿來寫點兒小片段,搞ACM什么的都沒問題。一是Eclipse加上viplugin,手指照樣不用離開鍵盤,大工程下效率絕對能體現出來,缺點是鍵綁定啥的基本上沒有個性化可言了

    Reply

    1. Dante

      Dante on #

      嗯,和搞什么樣的開發也有關系。

      不過我真是什么開發都用vim,無論是c、c++、python、php、html、js……哈哈,習慣了~

      Reply

  17. mythyear

    mythyear on #

    要是能夠用vim收郵件就好了……

    Reply

    1. Dante

      Dante on #

      介個。。其實只要肯花時間,也是一樣能寫出來的……
      用vim看、寫blog都可以,郵件也沒啥不可能的。。

      Reply

    2. madper

      madper on #

      不是一直就可以嘛?

      Reply

  18. yulong

    yulong on #

    hi,大神,我想了解下gvim跟vim是什么關系阿?說是gvim強大了一些,但是實質有什么改變么??

    Reply

    1. Dante

      Dante on #

      gvim 可以理解為 gui vim,清楚了吧~~

      Reply

  19. 用emacs也用vim,用python也用lisp

    用emacs也用vim,用python也用lisp on #

    總體寫得不錯,但有的地方不認同,例如這句:

    “但是python較之lisp恐怕就是旗鼓相當甚至更勝一籌了吧”

    博主又說

    “...我一直有個觀點:一件事你完成了,對別人宣布這件事是可以實現的,別人肯定會相信;但如果一件事你沒做出來,就對別人宣布這件事情是不可能完成的,是沒有什么說服力的。”

    那么博主是否既懂python也懂lisp,否則說這樣的話,也是沒有說服力,不如把“python較之lisp”這一句刪掉吧

    vim好是好,但是不能通過踩低lisp或emacs,來抬高vim

    Reply

    1. Dante

      Dante on #

      這位朋友說的很中肯,這種論斷確實容易引起紛爭,我改一下吧。

      Reply

    2. Dante

      Dante on #

      btw,學過一段時間的lisp,很欣賞lisp的編程思想,文中絲毫沒有貶低的意思。

      Reply

    3. madper

      madper on #

      雖然我是用emacs的, 但我還是想說, vim可以用python擴展, 確實比lisp易學, 至少對我來說是...

      Reply

  20. Fermat618

    Fermat618 on #

    這里還有個打架帖。

    vim強在它是一個編輯效率超高的通用文本編輯器。之后是它的可擴展性。

    那些花哨的功能,的確可以代表vim的可擴展性,但是我是不打算用那些了,因為其它專門的程序往往做得更好。

    vim不是萬能的,可知道了vim的好處,要再去找個替代器就難了。

    Reply

  21. bsky22

    bsky22 on #

    博主你好,我想只用VIM作鍵的替換,交換CAPS和左ctrl,達到只有在VIM里面才能體現兩鍵交換的效果,這個能不能實現?謝謝!

    由于在VIM里沒發現如何表示capslock的方法,目前我才用的方法是用xmodmap交換,在vim里用autocmd的方法,進入vim就替換,退出時就替換回來,不太完美,缺點就是:正在使用vim時,用其他程序都會感覺鍵被替換掉。

    Reply

    1. Dante

      Dante on #

      :h map,看一下,應該有寫

      Reply

    2. ooops

      ooops on #

      我想問下怎么用xmodmap映射,研究了一下,沒太明白。望指教。

      Reply

      1. Dante

        Dante on #

        沒用過,試下vim自己的map呢?

        Reply

        1. ooops

          ooops on #

          不行的。因為capslock屬于修飾鍵,在vim里面沒有這個鍵的映射,mac只能用上面那個人說的方法,或者下一個軟件。但是那個方法不太會用,網上下的軟件用ps/2鍵盤不給力,usb鍵盤可以,但我基本不用usb鍵盤 = =

          對了, 話說我點他的回復,他收不到么?

          Reply

          1. bsky22

            bsky22 on #

            用vim自己做映射,會形成循環映射,vim會提示錯誤,所以無法實現,再說vim里沒有表示caps_lock的方法。
            目前我采用的方法是用xmodmap交換caps_lock和右邊ctrl,因為右邊的ctrl由于鍵盤的位置不同而不同,所以很少使用,這樣做的好處是既保留了大寫鍵,又不影響日常習慣了的左ctrl操作,還能實現ctrl鍵的位置與hhkb鍵盤上的一致。好了,廢話少說,上步驟:
            1、寫一個可執行的shell文件,內容如下:
            #!/bin/bash
            xmodmap -e "remove Lock = Caps_Lock"
            xmodmap -e "remove Control = Control_R"
            xmodmap -e "keycode 66 = Control_R"
            xmodmap -e "keycode 105 = Caps_Lock"
            xmodmap -e "add Control = Control_R"
            xmodmap -e "add Lock = Caps_Lock"

            2、讓這個腳本開機自動運行(不要設置在rc*.d里面,那執行的時候x還沒啟動,會失敗的)

            如果你在純字符界面下,用如下方法:
            dumpkeys &gt; tmp
            vim tmp 交換鍵值58和97,然后loadkeys tmp
            rm -f tmp

            Reply

  22. lijsf

    lijsf on #

    不錯的站點,學習了~~

    Reply

  23. bing

    bing on #

    vim確實是好用 即使有了IDE 我也愿意內嵌進vim插件 確實是好用

    Reply

  24. taowl2003

    taowl2003 on #

    一直很想用vim來編程,但找了很久也沒有搞明白,也許是我太菜鳥了吧。
    一個是在win環境下,用vim進行C++調試編譯等相關的內容很少,還不是太明白怎么弄。
    更重要也很費解的是,一個程序總歸會用到一些資源吧,對話框、按鈕、編輯框,怎么大家討論時從來不涉及到這個?怎么用vim來管理和設計資源、界面?這個問題不解決,就沒有辦法拋棄vs啊。
    我太菜鳥,盼指教。

    Reply

  25. liuhao

    liuhao on #

    vim 不強大,vim很弱小。vim能干的事情很少。vim只會編輯,而且是純鍵盤流,有很多不便,相當的不直觀。vim只把編輯這件事干的還不錯。要干其他的事情,需要跟別人合作。之所以,許多人喜歡vim的原因,應該是,雖然他做的還不好,他能干的事不多,但是他在努力的做好自己的事。不像一些,想做很多事,但是一件也沒做好。如果說vim不完美,的確是,但是在編輯領域,他應該是最接近的。

    Reply

  26. 我握我

    我握我 on #

    vim就像一個坑,掉進去的時候在下面玩地牛開心,等到爬出來以后,就不想再掉進去了

    Reply

  27. abbr

    abbr on #

    樓主是用什么輸入法啊,我用QQ輸入法,如果在QQ輸入法英文輸入狀態,vim在ex模式時,輸入的命令顯示不出來,切換成英文輸入法就正常了。遇到過這樣的情況嗎?

    Reply

    1. 朱念洋

      朱念洋 on #

      是mac還是win?win下應該正常吧?

      Reply

  28. abbr

    abbr on #

    是win7,64位的,后來發現只是第一次顯示不出來,輸入兩次就出來了。比如在半角英文狀態下輸入“:x"退出,可以完成命令,只是那個x顯示不出來。輸入兩個xx就可以了

    Reply

  29. Ava1oN 龍龍

    Ava1oN 龍龍 on #

    收藏學習了~~

    Reply

  30. hilojack

    hilojack on #

    博主在mac 下是怎么解決vim從insert 到 normal 時自動中英文切換的問題?原來我用linux 時,利用的是InsertLeave + fcitx 的api。后來使用mac 后,用百度五筆,可惜百度五筆沒有提供api, 無法自動切換英文。后來我用鼠須管輸入法,可以在macvim 作 insertLeave時,自動切到英文。但是terminal 下的vim 還是不行。

    Reply

    1. 朱念洋

      朱念洋 on #

      終端下的vim是應該是改不了的,這個和你用的終端還有關系。最后我是養成了切換模式時,手會自動去切換一下輸入法。。

      Reply

  31. 歪妖內涵網

    歪妖內涵網 on #

    悄悄的路過。

    Reply

  32. 黃瓜大王

    黃瓜大王 on #

    至今不知道怎么用命令編譯java的win程序員路過。

    僅支持語法高亮不支持語法檢測實在難受。輸入的快意味著更多的錯誤。可能只是我不懂,但是我并沒有找到讓VIM告訴我語法錯誤的辦法,哪怕是檢測每句話后面有沒有分號似乎都要去找插件。

    編輯方式很好,但只是一個編輯器。

    Reply

  33. iPixelOldC

    iPixelOldC on #

    ...我只想說。。。一個東西如果是你自己專為你一個人做的,你會用的不舒服?為什么非要從眾呢,IDE給出的大眾化解決方案怎么可能有定制方案好2333不過呢。。。如果水平太菜的話。。。定制沒大眾肯定好= =不過那確實沒辦法。。。你菜嘛2333【個人觀點,VIM會用但不常用,因為我現在主要用vscode+vim mode在windows平臺下。。。我一般只在終端環境下用vim,桌面還是用其他的。。。】

    Reply

  34. 抬頭看見檸檬樹

    抬頭看見檸檬樹 on #

    為何您的這篇文章里好多鏈接都是404啊qwq

    Reply

  35. 陶煒

    陶煒 on #

    博主你好,冒昧問一個問題啊:我的vim光標在普通模式下不會把下面的文字顯示出來,有什么辦法能顯示出來呢?(我希望的是下面的字反色顯示)

    Reply

    1. Dante

      Dante on #

      配色方案的問題,換個配色試試。
      或者直接自己修改一下:h Cursor

      Reply

發表評論