本文摘录自 Linux 命令行
1. vim 基础
在可视化编辑流行的时代为什么要学习 vi 呢?1. 如果没有图形化界面,vi 就派上了用场;2. vi 轻量级且执行快,相比启动图形文本编辑器,再等待其数倍兆字节的数据加载而言,vi 太容易了。3. 一名熟练的 vi 用户无需使用鼠标就可完成编辑
-
启动和退出:
vi 文件
:启动;:q
:退出,但是 vi 并没有真正退出,比如我们对文件做了修改但没有保存的时候就会阻止其真正退出。而给命令加上感叹号就可以真正退出::q!
-
编辑
-
# 确保没有要操作的文件 localhost:2020-01 chappyzhao$ rm -f foo.txt # vi 创建新文件的方法 localhost:2020-01 chappyzhao$ vi foo.txt
- 插入模式:
i
摁下 i 键即实现了 insert 功能,退出编辑模式重新进入命令模式,摁下esc
即可。 - 保存:
:w
:将修改写入磁盘、 - vim 中移动光标:
按键 光标移动 0(零按键) 移动到当前行的行首 ^ 移动到当前行的第一个非空字符 $ 移动到当前行的末尾 w 移动到下一个单词或标点符号的开头 W 移动到下一个单词的开头,忽略标点符号 Ctrl+f 向下翻一页 Ctrl+b 向上翻一页 numberG 移动到第 number 行。如:1G 移动到文件的第一行 G 移动到文件末尾 -
2. 进阶编辑:使用 u 可以撤销上次编辑
- 追加文本:vim 有几种进入编辑模式的方法。
A
可以将光标直接定位到行尾并进入编辑模式。 - 打开一行:小写 o :当前行的下方另起一行;大写 O:当前行的上方另起一行。
- 删除文本
命令 | 删除的文本 |
---|---|
x | 当前字符 |
dd | 当前行 |
d$ | 当前位置到当前行尾 |
d0 | 当前位置到当前行首 |
dG | 当前行到文件的末尾 |
- 剪切、复制和粘贴文本
- 剪切:d 命令不仅删除文本,它同时也剪切文本。当我们使用 d 命令的时候,删除的部分被复制到一个粘贴缓冲区中(看作剪切板),粘贴时使用小 p 可以把剪切板中的文本粘贴到光标位置之后,或者大 P 粘贴到光标之前。
- 复制:y 命令用来复制文本,和 d 剪切的方式差不多。
命令 复制内容 yy 整行文本 5yy 本行和下面的四行 y$ 从光标到本行的结尾 yG 从当前行到文本末尾 y20G 从当前行到文件的第20行 - 粘贴:p
- 查找和替换:vim 能把光标移到搜索到的匹配项上,它可以在单行搜索,也可以进行全文搜索。也可以在用户确认与否的情况下进行文本替换。
- 搜索单行:f 命令可以搜索一特定行,并将光标移动到下一个匹配的字符上。如:fa 命令会把光标定位到同一行中下一个出现 ‘a’ 的位置,且在进行一次搜索后,输入分号就能重复这次搜索。大前提,搜索从头开始才能匹配。
- 查找整个文件:使用 / 命令,会移动光标到下一个出现的单词或短语上。当你输入 / 后,屏幕底部就可以输入查找内容。通过n命令重复先前的查找。
- 全局查找和替换:vim 使用 ex 命令来执行查找和替换操作。如:将文件中的“line” 替换为“Line”:
:%s/line/Line/g
:冒号后面运行一个 ex 命令;% 指定要操作的行数,%代表从第一行到最后一行。1,5 代表1-5行;s 指定操作-替换;/ine/INE 查找和替换类型;g 全局global的意思,省略 g,则只替换每个文本行的第一个匹配的字符串,gc 则表示替换会需要用户确认。
- 编辑多个文件:同时能够编辑多个文件是很有用的。你可能需要更改多个文件或从一个文件复制内容到另一个文件。通过 vim 我们可以打开多个文件进行编辑:
vi file1 file2...
# 获取 ls 的输出到一个文件中,同时也是创建这个文件。
ls -l /usr/bin > ls-output.txt
# 查询
localhost:2020-01 chappyzhao$ ls
1 5 8 ls-output.txt
2 6 9 two words.txt
3 7 foo.txt {4}
# 同时编辑多个文件,回车后会显示第一个文件内容,按键 :n 可以显示下一个;:N 显示上一个;查看正在编辑的文件列表 :buffers ;选择第 n 个文件 :buffer n
vi foo.txt ls-output.txt
2. 打开另一个文件并编辑
vi foo.txt
# 要加入第二个文件,输入
:e ls-output.txt
# 此刻查看所有文件。使用了 e 就不能用 n/N 来切换文件了,只能用 :buffer ➕ 文件缓冲区号
:buffers
3. 跨文件复制粘贴:当我们编辑多个文件时,经常需要将一个文件的内容复制到另一个文件中,通过前面我们学过 y(yank拉)和 p 命令就可以完成。
- 保存工作:像 vim 中的其他操作一样,我们已经知道 :w 可以保存,但还有其他方法。如:在命令模式下,输入 ZZ 就可以保存并退出。