1. 程式人生 > >Linux終端中的編輯器

Linux終端中的編輯器

上一篇中提到設定ssh連線的別名時雖然是在本地的機器設定,但是當遠端連線的機器上有檔案更改時該怎麼做呢?

Vim

vi/vim 都是Linux中的文字編輯器,Vim是vi的加強版,支援文字高亮提示之類的功能,在終端中如果編輯檔案是無法開啟圖形化介面的編輯器的,所以我們需要學習一款面向螢幕的文字編輯器。

三種模式

命令模式

使用vim開啟後就進入的是命令模式,通過 命令 對檔案進行常規的編輯操作,例如:定位,複製,刪除,黏貼等

編輯模式

在命令模式下按 i 就能進入編輯模式,按 ESC 可退出編輯模式

末行模式

在命令模式下 按 可進入末行模式,這時可以輸入命令來執行

vi的模式

以go的helloword為例子

在終端中可以使用 vim helloword.go 進入命令模式

這時如果想要在編輯其中輸入文字就需要按 i 進入編輯模式,這時候就可以在編輯器中輸入文字了,在編輯模式中與其他的普通編輯器沒多大的差別

package main

import "fmt"

func main() {
    fmt.Println("hello world")
}

編寫完後發現,如果能顯示行號就好了,這時可以按ESC退出編輯模式回到命令模式,然後在按 :進入末行模式

輸入set nu,這樣行號就顯示了,輸入set nonu 就可以取消行號

  1
package main 2 3 import "fmt" 4 5 func main() { 6 fmt.Println("hello world") 7 }

如果需要快速定位行號呢?

  • 6gg 快速定位到第六行
  • gg 快速定位到行首
  • shift + gg 快速定位到行尾

這時如果又想講hello world 多列印幾遍呢?

  1. 6gg 定位到第六行
  2. yy 複製一行
  3. p 黏貼一行
  4. 10p 黏貼十行
  1 package main
  2 
  3 import "fmt"
  4 
  5 func main() {
  6     fmt.Println("hello world"
) 7 fmt.Println("hello world") 8 fmt.Println("hello world") 9 fmt.Println("hello world") 10 fmt.Println("hello world") 11 fmt.Println("hello world") 12 fmt.Println("hello world") 13 fmt.Println("hello world") 14 fmt.Println("hello world") 15 fmt.Println("hello world") 16 fmt.Println("hello world") 17 fmt.Println("hello world") 18 }

把第六行的hello world 刪除改成 hello go,

  1. 先進入尾行模式
  2. 輸入:/hello world 搜尋定位到第一個 hello world處 ,下一個的話按n

  3. 輸入 di“ 刪除了hello world

  4. 再按i進入編輯模式輸入 hello go 即可

最後在末行模式下輸入 w 或者 wq 即可儲存然後就可以執行檔案了,無go環境可忽略執行只做示例

  • :w 儲存不退出
  • :wq 儲存退出
  • :!q 強制退出
lixingdeMacBook-Pro:~ lixing$ go run helloword.go 
hello go
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world

更多可參考: