Linux终端中的编辑器

陈伟堂 2018-09-13

Vim

vi/vim 都是Linux中的文本编辑器,Vim是vi的加强版,支持文本高亮提示之类的功能,在终端中如果编辑文件是无法打开图形化界面的编辑器的,所以我们需要学习一款面向屏幕的文本编辑器。

三种模式

命令模式

使用vim打开后就进入的是命令模式,通过 命令 对文件进行常规的编辑操作,例如:定位,复制,删除,黏贴等

编辑模式

在命令模式下按 i 就能进入编辑模式,按 ESC 可退出编辑模式

末行模式

在命令模式下 按 : 可进入末行模式,这时可以输入命令来执行

Linux终端中的编辑器

以go的helloword为例子

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

这时如果想要在编辑其中输入文字就需要按 i 进入编辑模式,这时候就可以在编辑器中输入文字了,在编辑模式中与其他的普通编辑器没多大的差别

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

编写完后发现,如果能显示行号就好了,这时可以按ESC退出编辑模式回到命令模式,然后在按 :进入末行模式

输入set nu,这样行号就显示了,输入set nonu 就可以取消行号

1 package main
 2 
 3 import "fmt"
 4 
 5 func main() {
 6 fmt.Println("hello world")
 7 }
1
2
3
4
5
6
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 }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

相关推荐