神器Vim之命令介紹

前天晚上看casa直播項(xiàng)目的組件化味赃,不僅了解了如何快速對(duì)現(xiàn)有項(xiàng)目進(jìn)行組件化浦辨,以及進(jìn)一步不斷迭代,實(shí)現(xiàn)完全組件化的過程型凳;同時(shí)丈冬,也被casavim技能的熟練程度所震撼。早就聽說(shuō)甘畅,vimunix系統(tǒng)上文本編輯的神器埂蕊,亦有許多牛人用vim編程可以鍵字如飛,效率之高令人望塵莫及疏唾。也許我們成不了牛人蓄氧,但是學(xué)會(huì)vim還是很有必要的,畢竟它確實(shí)能夠提高文本的編輯效率荸实。于是匀们,花了兩天時(shí)間,又重新系統(tǒng)學(xué)習(xí)了vim的各種命令准给,現(xiàn)總結(jié)一下泄朴,方便用時(shí)再查重抖。

一.vim的模式

vim大致有三種模式:

  1. 命令模式:主要用來(lái)瀏覽和修改文本內(nèi)容

    一般情況下,vim打開的都是命令模式(正常模式)祖灰;任何模式下钟沛,按下ESC鍵都可以進(jìn)入命令模式

  2. 插入模式:用來(lái)向文本中添加內(nèi)容

    通過iI局扶、a恨统、As三妈、S等等指令可以進(jìn)入插入模式畜埋,之后就可以修改文本內(nèi)容了

  3. 編輯模式:用于操作文本文件

    通過:命令可以進(jìn)入編輯模式,之后就可以保存文件畴蒲、改變編輯器本身狀態(tài)等等

圖1

其實(shí)悠鞍,vim為了增強(qiáng)功能,還有另外兩種模式:

  1. 可視模式:用于復(fù)制文本

    命令模式下模燥,按v可以進(jìn)入可視模式咖祭,之后就可以移動(dòng)光標(biāo)選擇文本;按ctrl + v可以進(jìn)入視行模式蔫骂,可以進(jìn)行列選中

  2. 替換模式

    命令模式下么翰,按R進(jìn)入替換模式

二.文檔的操作

編輯模式下執(zhí)行該命令

  1. vim filename -> 打開文檔
  2. :e file -> 關(guān)閉當(dāng)前編輯的文件,并打開新的文件
  3. :e! file -> 放棄當(dāng)前對(duì)文件的修改并關(guān)閉辽旋,同時(shí)打開新文件
  4. :e -> 重新加載文檔
  5. :e! -> 放棄改動(dòng)浩嫌,并重新加載文檔
  6. :fctrl + g -> 顯示文檔名、是否修改戴已、光標(biāo)位置等等
  7. :f filename -> 把編輯的文件另存為新的filename固该,需要wq,否則不會(huì)保存新文件
  8. :w -> 保存修改
  9. :n1,n2w filename -> 選擇性保存從n1行到n2行的內(nèi)容
  10. :wq:xZZ -> 保存并退出
  11. :q[uit] -> 退出當(dāng)前窗口
  12. :saveas filename -> 另存為新的filename
  13. :Sex -> 水平分割一個(gè)窗口糖儡,瀏覽文件系統(tǒng)
  14. :Vex -> 垂直分割一個(gè)窗口伐坏,瀏覽文件系統(tǒng)

三.文檔的移動(dòng)

文檔的移動(dòng)都是在命令模式(正常模式)下進(jìn)行的

  1. h退格 -> 左移一個(gè)字符
  2. l空格 -> 右移一個(gè)字符
  3. j -> 下移一行
  4. k -> 上移一行
  5. +enter -> 把光標(biāo)移動(dòng)到下一行非空白字符
  6. w -> 前移一個(gè)單詞,光標(biāo)停在單詞的開頭
  7. W -> 前移一個(gè)單詞握联,光標(biāo)停在單詞的開頭桦沉,但是會(huì)忽略一些標(biāo)點(diǎn)
  8. e -> 前移一個(gè)單詞,光標(biāo)停在單詞的末尾
  9. E -> 前移一個(gè)單詞金闽,光標(biāo)停在單詞的末尾纯露,如果詞尾有標(biāo)點(diǎn),則移動(dòng)到標(biāo)點(diǎn)
  10. b -> 后移一個(gè)單詞代芜,光標(biāo)停在單詞的開頭
  11. B -> 后移一個(gè)單詞埠褪,光標(biāo)停在單詞的開頭,但是會(huì)忽略一些標(biāo)點(diǎn)
  12. ge -> 后移一個(gè)單詞,光標(biāo)停在單詞的末尾
  13. gE -> 后移一個(gè)單詞钞速,光標(biāo)停在單詞的末尾贷掖,如果詞尾有標(biāo)點(diǎn),則移動(dòng)到標(biāo)點(diǎn)
  14. ( -> 前移一句
  15. ) -> 后移一句
  16. { -> 前移一段
  17. } -> 后移一段
  18. fc -> 把光標(biāo)移動(dòng)到同一行的下一個(gè)c字符處
  19. Fc -> 把光標(biāo)移動(dòng)到同一行的上一個(gè)c字符處
  20. tc -> 把光標(biāo)移動(dòng)到同一行的下一個(gè)c字符前
  21. Tc -> 把光標(biāo)移動(dòng)到同一行的上一個(gè)c字符后

上面的操作都可以配合數(shù)字n使用渴语,例如:3h 表示光標(biāo)左移3個(gè)字符苹威。下面是另外一些文檔移動(dòng)的命令:

  1. 0 -> 移動(dòng)到行首
  2. ^ -> 移動(dòng)到本行第一個(gè)非空白字符
  3. $ -> 移動(dòng)到行尾
  4. n| -> 把光標(biāo)移到第n列上
  5. nG -> 把光標(biāo)移到第n行上
  6. H -> 把光標(biāo)移到到屏幕最頂端一行
  7. M -> 把光標(biāo)移到到屏幕中間一行
  8. L -> 把光標(biāo)移到到屏幕最底端一行
  9. gg -> 把光標(biāo)移到到文件頭部
  10. G -> 把光標(biāo)移到到文件尾部

四.翻屏

翻屏命令是在命令模式進(jìn)行的

  1. ctrl + f -> 下翻一屏
  2. ctrl + b -> 上翻一屏
  3. ctrl + d -> 下翻半屏
  4. ctrl + u -> 上翻半屏
  5. ctrl + e -> 向下滾動(dòng)一行
  6. ctrl + y -> 向上滾動(dòng)一行
  7. n% -> 把光標(biāo)移動(dòng)到文件內(nèi)容的n%位置處
  8. zz -> 把當(dāng)前行移動(dòng)到屏幕中央
  9. zt -> 把當(dāng)前行移動(dòng)到屏幕頂端
  10. zb -> 把當(dāng)前行移動(dòng)到屏幕底端

五.插入文本

從命令模式進(jìn)入插入模式,設(shè)置光標(biāo)開始輸入的位置

  1. i -> 在光標(biāo)前插入
  2. I -> 在當(dāng)前行的第一個(gè)非空字符前插入
  3. a -> 在光標(biāo)后插入
  4. A -> 在當(dāng)前行最后插入
  5. o -> 在下面新建一行插入
  6. O -> 在上門新建一行插入
  7. :r filename -> 在當(dāng)前行位置插入另一個(gè)文件的內(nèi)容
  8. :[n]r filename -> 在第n行插入另一個(gè)文件的內(nèi)容
  9. :r !date -> 在當(dāng)前行(空行)插入日期驾凶,或當(dāng)前行非空牙甫,就在下一行插入日期。同理调违,:r !command 可以把shell命令的輸出插入當(dāng)前行

小技巧

  1. 命令模式下窟哺,按數(shù)字n,然后按i技肩,輸入=脏答,最后按ESC,就會(huì)在光標(biāo)處插入n個(gè)=亩鬼,這在做分割線時(shí)非常有用
  2. 視行模式下(ctrl+v),選擇要操作的行阿蝶,按iI)輸入插入內(nèi)容雳锋,之后按兩次ESC,就會(huì)在每行選定的區(qū)域出現(xiàn)插入的內(nèi)容

下面是修改文本的命令羡洁,功能是先刪除文字玷过,然后等待插入文本:

  1. c[n]w[n]cw -> 刪除光標(biāo)后n個(gè)單詞,然后進(jìn)入插入模式
  2. c[n]l[n]cl -> 刪除光標(biāo)后n個(gè)字母筑煮,然后進(jìn)入插入模式
  3. c[n]h[n]ch -> 刪除光標(biāo)前n個(gè)字母辛蚊,然后進(jìn)入插入模式
  4. [n]cc -> 刪除當(dāng)前行及以后的n-1行,然后進(jìn)入插入模式
  5. [n]s -> 刪除光標(biāo)之后的n個(gè)字符真仲,然后進(jìn)入插入模式
  6. [n]S -> 刪除當(dāng)前行及以后的n-1行袋马,然后進(jìn)入插入模式

類似的操作也適用于:dy

六.剪切秸应、復(fù)制和粘貼

在命令模式執(zhí)行該命令

  1. [n]x -> 剪切光標(biāo)右邊n個(gè)字符虑凛,相當(dāng)于d[n]l
  2. [n]X -> 剪切光標(biāo)左邊n個(gè)字符,相當(dāng)于d[n]h
  3. y -> 在可視模式下復(fù)制選中的文本
  4. yyY -> 復(fù)制整行文本
  5. y[n]w -> 復(fù)制n個(gè)詞
  6. y$ -> 復(fù)制從光標(biāo)到行尾的內(nèi)容
  7. y0 -> 復(fù)制從光標(biāo)到行首的內(nèi)容
  8. y^ -> 復(fù)制從光標(biāo)到本行非字符的內(nèi)容
  9. :m,ny -> 復(fù)制m行到n行的內(nèi)容
  10. y1Gygg -> 復(fù)制光標(biāo)以上所有行
  11. yG -> 復(fù)制光標(biāo)以下所有行
  12. d -> 刪除(剪切)在可視模式下選中的文本
  13. [n]dd -> 刪除(剪切)n行
  14. :m,nd -> 刪除(剪切)m行到n行的內(nèi)容
  15. p -> 在光標(biāo)之后粘貼
  16. P -> 在光標(biāo)之前粘貼

文本對(duì)象可以快速的操作一個(gè)詞软啼、一個(gè)句子桑谍、一個(gè)段落等等,大大加快了文本操作的便捷性祸挪。其中锣披,ydc雹仿、v都可以和這些命令配合使用增热,具體如下:

  1. aw -> 一個(gè)詞
  2. as -> 一個(gè)句子
  3. ap -> 一個(gè)段落

七.查找和替換

7.1查找

查找是在命令模式下執(zhí)行的命令,用于快速查找特定的內(nèi)容

  1. /something -> 在光標(biāo)文本后面查找something
  2. ?something -> 在光標(biāo)文本前面查找something
  3. /pattern/[+]n -> 將光標(biāo)停在匹配pattern模式后面第number行
  4. /pattern/[-]n -> 將光標(biāo)停在匹配pattern模式前面第number行
  5. n -> 向后查找下一個(gè)
  6. N -> 向前查找上一個(gè)

7.2替換

替換是在編輯模式下執(zhí)行的命令盅粪,用于替換特定的內(nèi)容

  1. :s/old/new -> 用new替換當(dāng)前行的第一個(gè)old
  2. :s/old/new/g -> 用new替換當(dāng)前行所有的old
  3. :n1,n2/old/new/g -> 用new替換n1行到n2行的所有old
  4. :%s/old/new/g -> 用new替換文件中的所有old
  5. :%s/^/xxx/g -> 在每一行的行首插入xxx
  6. :%s/$/xxx/g -> 在每一行的行尾插入xxx

八.排版

vim可以進(jìn)行簡(jiǎn)單的快速的排版钓葫,下面的排版是在命令模式下執(zhí)行

  1. [n]<< -> 向左縮進(jìn)一個(gè)n個(gè)shiftwidth
  2. [n]>> -> 向右縮進(jìn)一個(gè)n個(gè)shiftwidth
  3. J -> 拼接當(dāng)前行和下一行
  4. gJ -> 拼接后不留空格

下面的排版是在編輯模式執(zhí)行的命令

  1. :le(ft) -> 本行文字靠左
  2. :ce(nter) -> 本行文字居中
  3. :ri(ght) -> 本行文字靠右

vim還可以統(tǒng)計(jì)本行或者整個(gè)文本的字?jǐn)?shù),行數(shù)等等信息

  1. ctrl + g 統(tǒng)計(jì)文檔的字符數(shù)票顾、行數(shù)础浮、文件名等信息

九.編輯文件

vim可以一次編輯多個(gè)文件,如:vim a.txt b.txt c.txt

  1. :next:n -> 編輯下一個(gè)文件
  2. :2n -> 編輯下2個(gè)文件
  3. :previous:N -> 編輯上一個(gè)文件
  4. :wnext -> 保存當(dāng)前文件奠骄,并編輯下一個(gè)文件
  5. :wprevious -> 保存當(dāng)前文件豆同,并編輯上一個(gè)文件
  6. :args -> 顯示文件列表
  7. vim -o filenames -> 在水平分割多個(gè)窗口中編輯多個(gè)文件
  8. vim -O filenames -> 在垂直分割多個(gè)窗口中編輯多個(gè)文件
  9. :split:sp -> 把當(dāng)前窗口水平分割成兩個(gè)窗口
  10. :vsplit:vsp -> 把當(dāng)前窗口垂直分割成兩個(gè)窗口
  11. :qall -> 關(guān)閉所有窗口
  12. :wall -> 保存所有修改過的窗口
  13. :only -> 只保留當(dāng)前窗口,關(guān)閉其它窗口
  14. :close -> 關(guān)閉當(dāng)前窗口
  15. [n]u -> 取消n個(gè)改動(dòng)
  16. U -> 取消當(dāng)前所有的改動(dòng)

vim窗口分屏后,在多個(gè)編輯窗口直接切換編輯的命令如下:

  1. ctrl+w ctrl+w -> 切換下一個(gè)窗口
  2. ctrl+w p -> 切換到前一個(gè)窗口
  3. ctrl+w h(l,j,k) -> 切換到左 (右饲宛、下娃磺、上)的窗口
  4. ctrl+w H(L,J,K) -> 切換窗口到最左(右、下鸭廷、上)的窗口

進(jìn)入替換模式,就可以快速替換當(dāng)前的文本熔吗,在命令模式才可以進(jìn)入替換模式

  1. r -> 替換光標(biāo)出的一個(gè)字符
  2. R -> 進(jìn)入替換模式辆床,可以進(jìn)行多次替換,按esc回到命令模式

十.編程輔助技能

  1. g; -> 上一個(gè)修改過的地方
  2. g, -> 下一個(gè)修改過的地方
  3. [[ -> 跳轉(zhuǎn)到上一行函數(shù)塊開始的位置桅狠,需要有單獨(dú)一行的{
  4. ]] -> 跳轉(zhuǎn)到下一行函數(shù)塊開始的位置讼载,需要有單獨(dú)一行的{
  5. [] -> 跳轉(zhuǎn)到上一行函數(shù)塊結(jié)束的位置,需要有單獨(dú)一行的}
  6. ][ -> 跳轉(zhuǎn)到下一行函數(shù)塊結(jié)束的位置中跌,需要有單獨(dú)一行的}
  7. % -> 移動(dòng)到匹配()咨堤、{}、[]的另一個(gè)符號(hào)上
  8. 可視模式下漩符,選擇代碼塊一喘,然后按=,代碼會(huì)進(jìn)行自動(dòng)縮排

下面的符號(hào)匹配能夠高效的處理文本嗜暴,可以把c津滞、dy'灼伤、"触徐、([狐赡、{撞鹉、<結(jié)合起來(lái)使用,可以加快編程速度,下面以c為例:

  1. ci' -> 修改鸟雏、剪切或復(fù)制'之間的內(nèi)容享郊,不包含'本身
  2. ca' -> 修改、剪切或復(fù)制'之間的內(nèi)容孝鹊,包含'本身

十一.命令行

下面的命令是在編輯模式下執(zhí)行

  1. :! cmd -> 執(zhí)行外部命令
  2. :r !cmd -> 將命令的返回結(jié)果插入文件當(dāng)前的位置
  3. :pwd -> 顯示vim的工作目錄
  4. :ver -> 顯示版本信息

十二.Mac Terminal快捷鍵

  1. ctrl+u -> 刪除整行
  2. ctrl+l -> 清屏

十三.移動(dòng)當(dāng)前行

  1. m+1 -> 向下移動(dòng)1行
  2. m-2 -> 向上移動(dòng)2行

vim的命令大致有這么多炊琉,還有一些不是太常用的沒有列舉出,如有需要又活,請(qǐng)查看相關(guān)手冊(cè)苔咪。如果你想用vim高效的編輯文本,還是要多練習(xí)柳骄,畢竟這么多命令团赏,無(wú)法一下子全部記住。最后耐薯,附上一張vim的指法引導(dǎo)圖舔清,可以參考一下。(本文所有圖片來(lái)自互聯(lián)網(wǎng)曲初,版權(quán)歸源作者所有)

圖2

參考資料

http://blog.csdn.net/scaleqiao/article/details/45153379

http://www.cnblogs.com/xiaowant/articles/1992923.html

http://www.cnblogs.com/yangjig/p/6014198.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末体谒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子臼婆,更是在濱河造成了極大的恐慌营密,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件目锭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡纷捞,警方通過查閱死者的電腦和手機(jī)痢虹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)主儡,“玉大人奖唯,你說(shuō)我怎么就攤上這事∶又担” “怎么了丰捷?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)寂汇。 經(jīng)常有香客問我病往,道長(zhǎng),這世上最難降的妖魔是什么骄瓣? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任停巷,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘畔勤。我一直安慰自己蕾各,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布庆揪。 她就那樣靜靜地躺著式曲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缸榛。 梳的紋絲不亂的頭發(fā)上吝羞,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音仔掸,去河邊找鬼脆贵。 笑死,一個(gè)胖子當(dāng)著我的面吹牛起暮,可吹牛的內(nèi)容都是我干的卖氨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼负懦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼筒捺!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起纸厉,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤系吭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后颗品,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肯尺,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年躯枢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了则吟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锄蹂,死狀恐怖氓仲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情得糜,我是刑警寧澤敬扛,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站朝抖,受9級(jí)特大地震影響啥箭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜治宣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一捉蚤、第九天 我趴在偏房一處隱蔽的房頂上張望抬驴。 院中可真熱鬧,春花似錦缆巧、人聲如沸布持。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)题暖。三九已至,卻和暖如春捉超,著一層夾襖步出監(jiān)牢的瞬間胧卤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工拼岳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留枝誊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓惜纸,卻偏偏與公主長(zhǎng)得像叶撒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子耐版,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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