Vim簡介

vi ? vim?

vi是一種計算機文本編輯器,由美國計算機科學家比爾·喬伊(Bill Joy)完成編寫蹭越,并于1976年以BSD協(xié)議授權發(fā)布诈嘿。

vi是“Visual”的不正規(guī)的縮寫抬旺,來源于另外一個文本編輯器ex的命令visual刹孔。

vi是一種模式編輯器瑞侮。不同的按鈕和鍵擊可以更改不同的“模式”收擦。在“插入模式”下鞋既,輸入的文本會直接被插入到文檔力九;當按下“退出鍵”,“插入模式”就會更改為“命令模式”邑闺,并且光標的移動和功能的編輯都由字母來響應跌前,例如:“j”用來移動光標到下一行;“k”用來移動光標到上一行陡舅,“x”可以刪除當前光標處的字符抵乓,“i”可以返回到“插入模式”(也可以使用方向鍵)。在“命令模式”下靶衍,敲入的鍵(字母)并不會插入到文檔灾炭,這給新接觸vi的用戶帶來混亂。

在“命令模式”下摊灭,多重文本編輯操作是由一組鍵(字母)來執(zhí)行咆贬,而不是同時按下<Alt>、<Ctrl>和其他特殊鍵來完成帚呼。更多復雜的編輯操作可以使用多重功能基元的組合,比如說“dw”用來刪除一個單詞皱蹦,“c2fa”可以更改當前的光標處中“a”之前的文本煤杀。這就是說:對于熟練的vi用戶可以更快的操作,因為雙手就可以不必離開鍵盤沪哺。

早期的版本中沈自,vi并沒有指示出當前的模式,用戶必須按下“退出鍵”來確認編輯器返回“命令模式”(會有聲音提示)辜妓。當前的vi版本可以在“狀態(tài)條”中(或用圖形顯示)枯途。最新的版本中,用戶可以在“終端”中設置并使用除主鍵盤以外的其他鍵籍滴,例如:PgUp酪夷,PgDn,Home孽惰,End和Del鍵晚岭。圖形化界面的vi(如gvim)可以很好的支持鼠標和菜單。

直到Emacs的出現(xiàn)(1984年以后)勋功,vi幾乎是所有“黑客”所使用的標準UNIX編輯器坦报。從2006年開始库说,作為“單一UNIX規(guī)范”(Single UNIX Specification)的一部分,vi或vi的一種變形版本一定會在UNIX中找到片择。

直到現(xiàn)在潜的,vi仍然被廣泛的使用,并且贏得1991年在USENET的票選字管;vi比Emacs的Bulkier版本啟動的更快夏块,并且占內(nèi)存更少。因此纤掸,甚至Emacs的追隨者又重新使用vi脐供,并且作為郵件編輯器和其他小型編輯工作的首選。1999年時借跪,著名的歐萊禮出版社(O'reilly)賣出了比emacs更多的vi參考書政己。

當救急軟盤作為恢復硬盤崩潰的介質以來,vi通常被用戶選擇掏愁,因為一張軟盤正好存儲下vi歇由,并且?guī)缀跛腥硕伎梢院茌p松的使用vi。

編輯器的大戰(zhàn)中果港,vi和Emacs是作戰(zhàn)的雙方沦泌。

Emacs???

Emacs/?i?m?ks/,源自Editor MACroS辛掠,編輯器)谢谦,是一個文本編輯器家族,具有強大的可擴展性萝衩,在程序員和其他以技術工作為主的計算機用戶中廣受歡迎回挽。最初由Richard Stallman于1975年在MIT協(xié)同蓋伊·史提爾二世共同完成。這一創(chuàng)意的靈感來源于TECO宏編輯器TECMAC和TMACS猩谊,它們是由蓋伊·史提爾二世钥弯、Dave Moon记餐、Richard Greenblatt厨疙、Charles Frankston等人編寫的宏文本編輯器赡磅。

自誕生以來,Emacs演化出了眾多分支暗甥,其中使用最廣泛的兩種分別是:1984年由理查·斯托曼發(fā)起并由他維護至2008年的GNU Emacs喜滨,以及1991年發(fā)起的XEmacs。XEmacs是GNU Emacs的分支淋袖,至今仍保持著相當?shù)募嫒菪院枋小K鼈兌际褂昧?a target="_blank">Emacs Lisp這種有著極強擴展性的編程語言,從而實現(xiàn)了包括編程編譯乃至網(wǎng)絡瀏覽等等功能的擴展焰情。

Unix文化里陌凳,Emacs是黑客們關于編輯器之戰(zhàn)的兩大主角之一,它的對手是viVim)内舟。

Emacs不僅僅是一個編輯器合敦,它是一個集成環(huán)境,或可稱它為集成開發(fā)環(huán)境验游,這些功能如讓用戶置身于全功能的操作系統(tǒng)中充岛。Emacs可以:

  • 收發(fā)電子郵件、上新聞組(Gnus)
  • 無縫直接編輯遠程文件(Tramp)
  • 通過Telnet登錄遠程主機
  • 操作殼層(M-x EShell耕蝉,Term)
  • 結合git, mercurial等版本控制系統(tǒng)并直接操作(Magit崔梗,VC)
  • 上Twitter(Twittering-mode)
  • 登陸IRC和朋友交流(M-x ERC,rcirc)
  • 電子數(shù)據(jù)表
  • 模擬其他編輯器垒在,如vi(Evil-mode)蒜魄、WordStar、EDT场躯、TPU等
  • 編輯Wiki (Wikipedia-mode)
  • 對多種編程語言編輯谈为,如C/C++、Perl踢关、Python伞鲫、Lisp等等
  • 調(diào)試程序,結合GDB签舞,EDebug等秕脓。
  • 玩游戲
  • 計算器
  • 心理咨詢(M-x doctor)
  • 煮咖啡
  • 記筆記、日記(Org-mode)
  • 管理日程瘪菌,Task撒会,待辦事項(ToDo),約會等GTD(Org-mode)
  • 寫作與出版(Org-mode师妙,Muse-mode)
  • 目錄管理(Dired)
  • 文件比較、合并(Ediff)
  • 閱讀info和man文檔(M-x info屹培,woman)
  • 瀏覽網(wǎng)站(M-x eww)
  • 為各種程序(TeX默穴、LaTeX等)提供統(tǒng)一的操作界面

總結

煮不了咖啡的編輯器不是一個好用的瀏覽器 :joy:

回歸正題

vim 是 vi 的拓展,Vim(Vi IMproved) 是一種升級版褪秀,是vi的派生物之一蓄诽,其他還有Elvis ,Vigor。

Vim的第一個版本由布萊姆·米勒在1991年發(fā)布媒吗。最初的簡稱是Vi IMitation仑氛,隨著功能的不斷增加,正式名稱改成了Vi IMproved。現(xiàn)在是在開放源代碼方式下發(fā)行的自由軟件锯岖。

一個現(xiàn)實的開源協(xié)議介袜,

目前,VIM是按照VIM許可證發(fā)布的開源軟件出吹,這個協(xié)議兼容GPL[[4]](https://zh.wikipedia.org/wiki/Vim#cite_note-Vim協(xié)議文本與對GPL的兼容性-4)遇伞。它的協(xié)議中包含一些慈善條款,建議用戶向荷蘭ICCF捐款捶牢,用于幫助烏干達艾滋病患者鸠珠。VIM啟動時會顯示「Help poor children in Uganda!」的字樣,在中文版本中則是「請幫助烏干達的可憐孩童!」[5]秋麸。

vim 開機界面

學習曲線

我一開是接觸這個是從解決git的沖突說起渐排,pull代碼進入這種狀態(tài),非常無厘頭:monkey_face::first_quarter_moon_with_face:灸蟆,各種退出ssh然后處理驯耻。

后來發(fā)現(xiàn) 命令行里竟然藏著一個編輯器。感謝度娘:japanese_ogre:

其實這里面藏著很多東西 次乓,需要我們?nèi)グl(fā)現(xiàn)吓歇。

許多unix系統(tǒng) 執(zhí)行命令vimtutor 或者Windows在vim軟件中看vim教學圖標即可。

可在vim中輸入:help user-manual

試了下那個命令在centos迷你版里都沒有

還是靠搜

vim 是一種模式編輯器 下面簡單羅列一些

  • 普通模式 用戶啟動后的默認模式 一些快捷方法

    • i 票腰、a城看、o 均可進入插入模式
    • esc 插入模式退出到 普通模式
    • cw 刪除一個單詞
    • c$ 從當前焦點 刪除一行到行尾
    • c^ 刪除到行頭
    • dd 刪除一行
    • ...
  • 插入模式

    • 編輯文本時 都處在這個模式
  • 命令行模式

    • 普通模式輸入 : 就可進入命令行模式

    • :w filename 指定文件名保存

    • :wq 保存并退出 :wq! 感嘆號 表示強制操作 q! 表示強制退出 不保存

    • :set number 顯示行號

    • 替換

      • :s/old/new - 用new替換當前行第一個old。
      • :s/old/new/g - 用new替換當前行所有的old杏慰。
      • :n1,n2s/old/new/g - 用new替換文件n1行到n2行所有的old测柠。
      • :%s/old/new/g - 用new替換文件中所有的old。
      • :%s/^/xxx/g - 在每一行的行首插入xxx缘滥,^表示行首轰胁。
      • :%s//xxx/g - 在每一行的行尾插入xxx,表示行尾朝扼。
    • 搜索關鍵詞 例如修改某個配置文件赃阀,

      • :/searchword 在后面的文本找

      • :/searchword 向前查找

      • /pattern/+number: 將光標停在包含pattern的行后面第number行上。

      • /pattern/-number: 將光標停在包含pattern的行前面第number行上擎颖。

      • n: 向后查找下一個榛斯。

      • N: 向前查找下一個。

      • 可以用grep或vimgrep查找一個模式都在哪些地方出現(xiàn)過搂捧,

        其中:grep是調(diào)用外部的grep程序驮俗,而:vimgrep是vim自己的查找算法。

        用法為: :vim[grep]/pattern/[g] [j] files

        g的含義是如果一個模式在一行中多次出現(xiàn)允跑,則這一行也在結果中多次出現(xiàn)王凑。

        j的含義是grep結束后搪柑,結果停在第j項,默認是停在第一項索烹。

        vimgrep前面可以加數(shù)字限定搜索結果的上限工碾,如

        :1vim/pattern/ % 只查找那個模式在本文件中的第一個出現(xiàn)。

  其實vimgrep在讀純文本電子書時特別有用术荤,可以生成導航的目錄倚喂。

  比如電子書中每一節(jié)的標題形式為:n. xxxx。你就可以這樣:

  :vim/^d{1,}./ %

  然后用:cw或:copen查看結果瓣戚,可以用C-w H把quickfix窗口移到左側端圈,

  就更像個目錄了。

可以打開多個文件

vi a.txt b.txt c.txt

  • 使用:next(:n)編輯下一個文件子库。

  • :2n 編輯下2個文件舱权。

  • 使用:previous或:N編輯上一個文件。

  • 使用:wnext仑嗅,保存當前文件宴倍,并編輯下一個文件。

  • 使用:wprevious仓技,保存當前文件鸵贬,并編輯上一個文件。

  • 使用:args 顯示文件列表脖捻。

  • :n filenames或:args filenames 指定新的文件列表阔逼。

  • vi -o filenames 在水平分割的多個窗口中編輯多個文件。

  • vi -O filenames 在垂直分割的多個窗口中編輯多個文件地沮。

  • 文件比較

    可以逐行的對文本文件進行比較嗜浮。Vim可以并排顯示兩個版本的文件,同時以各種各樣的顏色來表示有差別部分摩疑。改變過危融、新增的或者是被刪除的行會以顏色高亮來強調(diào),沒有改變過的部分則會被自動折疊表示雷袋。

    對于已經(jīng)在vim中打開的兩個緩沖區(qū)吉殃,分別使用:diffthis之后將會對這兩個緩沖區(qū)的內(nèi)容進行比較,被比較的緩沖區(qū)可以是一個尚未存盤的內(nèi)存中的緩沖區(qū)楷怒。

    在比較兩個文件的不同之處時寨腔,可以用:diffget和:diffput命令對每一處不同進行雙向的同步,也可以在比較不同時對內(nèi)容進行其它編輯率寡,然后用:diffupdate對最新內(nèi)容重新進行比較。

    在瀏覽兩個文件的不同之處時倚搬,可以用[c和]c兩個Normal模式的命令直接跳轉到上一個和下一個不同之處冶共。

    可以通過diffopt等選項更精細地控制哪些區(qū)別被認為是真正的不同之處,比如可以設置比較時忽略空白字符數(shù)量的不同。

    Unix下可以用vimdiff命令來使用這個功能捅僵。

不足之處

  • 大文件讀取速度很慢(可在vim.org下載并安裝名為LargeFile的Script來優(yōu)化)LargeFile
  • 即使文件不大家卖,如果有非常長的行的話,處理也會變慢(同上)
  • vim自己的腳本語言處理速度不快庙楚,若是安插過多腳本包上荡,引導速度會變慢。
  • 存在類似Ctrl-1等不能被映射的鍵(限于某些字符終端的性能)
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末馒闷,一起剝皮案震驚了整個濱河市酪捡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纳账,老刑警劉巖逛薇,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異疏虫,居然都是意外死亡永罚,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門卧秘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呢袱,“玉大人,你說我怎么就攤上這事翅敌⌒吒#” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵哼御,是天一觀的道長坯临。 經(jīng)常有香客問我,道長恋昼,這世上最難降的妖魔是什么看靠? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮液肌,結果婚禮上挟炬,老公的妹妹穿的比我還像新娘。我一直安慰自己嗦哆,他們只是感情好谤祖,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著老速,像睡著了一般粥喜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上橘券,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天额湘,我揣著相機與錄音卿吐,去河邊找鬼。 笑死锋华,一個胖子當著我的面吹牛嗡官,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播毯焕,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼衍腥,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了纳猫?” 一聲冷哼從身側響起婆咸,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎续担,沒想到半個月后擅耽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡物遇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年乖仇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片询兴。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡乃沙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诗舰,到底是詐尸還是另有隱情警儒,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布眶根,位于F島的核電站蜀铲,受9級特大地震影響,放射性物質發(fā)生泄漏属百。R本人自食惡果不足惜记劝,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望族扰。 院中可真熱鬧厌丑,春花似錦、人聲如沸渔呵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扩氢。三九已至耕驰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間录豺,已是汗流浹背耍属。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工托嚣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人厚骗。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像兢哭,于是被迫代替她去往敵國和親领舰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容