本文摘录自 Linux 命令行
1. vim 基础
在可视化编辑流行的时代为什么要学习 vi 呢?1. 如果没有图形化界面,vi 就派上了用场;2. vi 轻量级且执行快,相比启动图形文本编辑器,再等待其数倍兆字节的数据加载而言,vi 太容易了。3. 一名熟练的 vi 用户无需使用鼠标就可完成编辑
-
启动和退出:vi 文件 :启动;:q :退出,但是 vi 并没有真正退出,比如我们对文件做了修改但没有保存的时候就会阻止其真正退出。而给命令加上感叹号就可以真正退出::q! -
编辑
-
localhost:2020-01 chappyzhao$ rm -f foo.txt
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 -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}
vi foo.txt ls-output.txt
2. 打开另一个文件并编辑
vi foo.txt
:e ls-output.txt
:buffers
3. 跨文件复制粘贴:当我们编辑多个文件时,经常需要将一个文件的内容复制到另一个文件中,通过前面我们学过 y(yank拉)和 p 命令就可以完成。
- 保存工作:像 vim 中的其他操作一样,我们已经知道 :w 可以保存,但还有其他方法。如:在命令模式下,输入 ZZ 就可以保存并退出。
|