iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 15
2
自我挑戰組

30 天不間斷-資工隨筆大雜燴系列 第 15

[Day 15] 你會用 Vim 嗎? Vim 沒有那麼難!-指令觀念篇

前言

Vim 是一個很強大的文字編輯器,結合了很多快捷指令能夠大幅增加編輯文件的速度,但是很多人因爲指令太多而卻步。

本篇文章有兩個部分

  • 快速入門
  • 基本指令

第一部分給只是想要能夠"用" Vim,完成基本的編輯文件任務的人參考。

而如果想要提升自己的編輯速度,建議參考第二篇,因爲 vim 的指令很多很雜,希望透過座標軸的方式建立指令的方向概念,幫助大家理解。

快速入門

建立檔案

vim file

編輯檔案

i

這樣會進入編輯模式,因此你可以在這個編譯器上面結合方向鍵輸入任何你想輸入的字元。

存檔並退出

按鍵盤左上角的 ESC 退出編輯模式之後會到指令列命令模式,接着輸入 :wq 儲存檔案並退出就可以了。

基礎

你覺得這樣就結束了嗎?

此時只是vim皮一般編輯器骨而已,vim 這個編輯器最強大的特點是編輯速度極快,要能觸發這項特點必須結合許多快捷指令。

模式

一般指令模式

  • 移動游標
  • 複製文字
  • 刪除文字

編輯模式

  • 新增字元
  • 取代字元

指令列模式

  • 讀檔
  • 存檔
  • 大量取代字元

這三種模式可以透過 esc 做切換,不過只有編輯模式還有指令列模式不能相互影響就是了,如下圖所示:

功能

如果你想要像使用滑鼠編輯文件一般上手,可以參考以下功能

一開始先介紹三個指令

  • :! command:暫時離開 vim 編輯器執行 command 結果,之後可以再按 Enter 回到 vim 中。
  • set nu:顯示行號
  • set nonu:取消顯示行號

之後建議顯示行號,會比較好辨認哪一列。

移動游標

首先要先瞭解如何透過鍵盤控制游標的位置,藍色x軸代表現在所在的列,而紅色系的y軸代表檔案中的每一列。

下方座標軸的原點是該列中現在游標所在的位置,如果要讓游標向右三個字元,可以輸入3<space>也就是輸入數字3之後再按空白鍵。

end$ 可以前往這列的末端,home或是0則可以前往該列的首端。

紅色軸代表這個檔案中的操作,因此輸入 1G 代表前往檔案第一列的第一個字元,G則是前往檔案末端的第一個字元。

粉紅色軸代表在目前螢幕中的操作,因此輸入H可以抵達目前螢幕第一列的第一個字元,L則是前往螢幕最末列的第一個字元。

理解了上述文字之後,只要透過座標軸就能知道相應的行爲應該如何輸入指令囉。

複製文字

有了游標移動的觀念之後,就可以應用在接下來的指令了,y 代表複製,因此 y$ 代表在游標移動到該列的最末端時,同時複製文字,同理y0就只是相反方向。

yy 代表複製游標所在該列的文字,nyy代表向下複製 n 列,y1G則是複製到檔案中的第一列,yG則是複製到游標之下的最末列。

貼上文字

p:在游標所在列的上面一行貼上內容
P:在游標所在列的下面一行貼上內容

刪除文字

d控制列,而x控制一行中每個字元。

d 關於方位的操作都跟複製文字的指令非常類似 ,而nx 代表刪除游標之後的 n 個字元 ,nX代表刪除游標之前的 n個字元,複製的指令是不支援的。

尋找與取代文字

如果要找目前游標上面所有列的文字 string,輸入?string,游標下方則是輸入/string

找到所有可能文字之後透過n來依序顯示結果,如果要查看上一個結果可以使用N

如果要用 word1 取代 n1 到 n2 列的文字 word的話,可以輸入:n1,n2s/word1/word2/gc,加上c的話取代前會先詢問你,以免發生悲劇

復原

u:復原上一個動作
ctrl+R:取消復原上一個動作
.:重複執行上一個動作

讀檔、存檔

要執行以下指令,記得按 esc 切換到指令列模式
:w:儲存檔案
:q:離開檔案

如果檔案屬於唯讀檔案,可以加上 !

:wq:存檔並離開

:n1,n2 w file 將 n1 到 n2 的內容儲存成 file 這個檔案


上一篇
[Day 14] Intro to Tensorflow (2)
下一篇
[Day 16] 你會用 Vim 嗎? Vim 沒有那麼難!-實例篇
系列文
30 天不間斷-資工隨筆大雜燴30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
no5110
iT邦新手 5 級 ‧ 2023-07-14 08:25:09
  • 謝謝您的文章及附圖,對新手的我,真的幫助很大。謝謝
  • 謝謝

我要留言

立即登入留言