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

更多可参考:

vim中文文档

参考链接(菜鸟教程)

猜你喜欢

转载自blog.csdn.net/AshinLi/article/details/82669844