致谢
本文章参考了王利涛的《嵌入式C语言自我修养——从芯片、编译器到操作系统》。
一、文件的操作
用Vim打开文件a.txt
的命令为:
vim a.txt
Vim支持以下几种模式进行操作:
- 普通模式:打开文件时的默认模式,在其他模式下按
Esc
键都可返回到该模式。 - 插入模式:在普通模式下按
i
/a
/o
键进入该模式,进行文本编辑操作,不同之处在于插入字符的位置在光标之前还是之后。 - 命令行模式:在普通模式下输入
:
后会进入该模式,在该模式下输入命令,如输入:set number
或:set nu
可以显示行号,敲回车执行命令。 - 可视化模式:在普通模式下按
v
键会进入可视化模式,在该模式下移动光标可以选中一块文本。按Shift
+v
可选中整行。然后可以进行复制y
、剪切x
、删除d
、粘贴p
、与上一行对齐=
等文本操作。 - 替换模式:在普通模式下通过光标选中一个字符,然后按
r
键,再输入一个字符,你会发现你输入的字符替换掉了原来那个被选中的字符。在该模式下进行文本替换很方便,省去了先删除再插入这种常规操作。
1. 光标逐字符移动
k
或↑
:光标向上移动一个字符。j
或↓
:光标向下移动一个字符。h
或←
:光标向左移动一个字符。l
或→
:光标向右移动一个字符。
2. 光标逐单词移动
w
:光标移动到下一个单词的开头。b
:光标移动到上一个单词的开头。e
:光标移动到下一个单词的词尾。E
:光标移动到下一个单词的词尾(忽略标点符号)。ge
:光标移动到上一个单词的词尾。2w
:指定光标移动2次,移动到下下个单词的开头。
3. 光标逐行移动
$
:光标移动到当前行的行尾。0
:光标移动到当前行的行首。^
:光标移动到当前行的第一个非空字符。2|
:光标移动到当前行的第2列。fx
:光标移动到当前行的第1个字符x
上。3fx
:光标移动到当前行的第3个字符x
上。%
:符号间的移动,在()
/[]
/{}
之间跳跃。
4. 屏幕移动
5G
:光标跳转到第5行。gg
:光标移动到文件的开头。G
:光标移动到文件的末尾。L
:光标移动到当前屏幕的末尾。M
:光标移动到当前屏幕的中间。Ctrl
+g
:查看光标的位置状态。Ctrl
+u
:光标向上半屏滚动。Ctrl
+d
:光标向下半屏滚动。Ctrl
+f
:光标向前全屏滚动。Ctrl
+b
:光标向后全屏滚动。
5. 文本的基本操作
i
:在光标前面插入字符。a
:在光标后面追加字符。I
:在当前行的行首插入字符。A
:在当前行的行尾追加字符。o
:在光标的下一行插入字符。x
:剪切光标所在处的字符。X
:剪切光标左边的字符。dw
:删除当前单词。dd
:删除当前行。2dd
:删除当前行和下一行。yw
:复制当前单词,使用时应确保光标位于单词开头,注意复制的内容只在Vim中有效。yy
:复制当前行。p
:粘贴,注意是粘贴到光标后面。J
:删除一个分行符,将当前行与下一行合并。#
:高亮显示光标处的单词。
6. 文本的查找与替换
:/string
:在普通模式下输入/string
并回车,即可正向往下查找字符串string
,敲击n
浏览下一个。:?string
:输入?string
并回车,即可反向往上查找字符串string
,敲击n
浏览下一个。:set hls
:高亮显示光标处的单词,敲击n
浏览下一个。:s/old/new
:将当前行的第一个字符串old
替换为new
。:s/old/new/g
:将当前行的所有字符串old
替换为new
。:%s/old/new/g
:将文件中所有字符串old
替换为new
。:%s/^old/new/g
:将文件中所有以old
开头的字符串替换为new
。
7. 文件的保存与退出
u
:撤销上一步操作。:q
:若文件没有修改,则直接退出。:q!
:若文件已修改,则放弃修改,退出。:wq
:若文件已修改,则保存修改,退出。:e!
:若文件已修改,则放弃修改,恢复文件打开时的状态。:w !sudo tee %
:在普通用户模式下保存root读写权限的文件。
二、目录的操作
用Vim打开当前目录的命令为:
vim .
进入目录后,通过↑
、↓
浏览,敲回车进入子目录或打开文件。当编辑完文件想返回至目录浏览状态时,有以下几种情况:
- 未对文件做修改,则直接输入
:b#
。 - 对文件有改动且需要保存,则先输入
:w
,然后输入:b#
。 - 对文件有改动但不需要保存,则先输入
:e!
,然后输入:b#
。
输入:q
退出目录。
三、多屏幕操作
在浏览文件或目录时,可以输入:sp .
以当前路径创建另一个屏幕。多屏幕的常用操作:
- 光标移动至下一个屏幕:
Ctrl
+w
+w
。 - 退出单个屏:
:q
、:wq
、:q!
——分别对应未改动时退出、保存改动并退出、忽略改动并退出。 - 退出多个屏:
:qa
、:wqa
、:qa!
——分别对应未改动时退出、保存改动并退出、忽略改动并退出。