所有Linux操作系统都会内置vi文本编辑器,vim是自vi发展出来的文本编辑器,它提供了丰富的更有利于编程的功能,因此程序员更喜欢用vim,甚至vim官网都宣称vim是程序开发工具,而不是文本处理工具。
命令模式
命令 | 说明 |
i | 从当前位置开始编辑 |
I | 从当前行的第一个非空格字符处开始编辑 |
a | 从当前位置的下一个字符处开始编辑 |
A | 从当前行的末尾处开始输入 |
[n]c | 重复删除n个数据并开始编辑 【10ck】 |
G | 跳转到文档最后一行 |
[n]G | 跳转到文档的第n行 【20G】 |
J | 将当前行与下一行合并成一行 |
o / O | 在当前位置的{下/上}面插入新的一行 |
p / P | 在当前位置的{下/上}一行粘贴 |
r / R | 进入取代模式,{取代1次/直到按Esc} |
u / U | 撤销上一个动作 / 恢复撤消 |
x / X | 从当前位置向{后/前}删除1个字符 |
[n]{x / X} | 从当前位置向{后/前}删除{n}个字符 【5x】 |
h | <←> | 光标向左移动 |
j | <↓> | 光标向下移动 |
k | <↑> | 光标向上移动 |
l | <→> | 光标向右移动 |
0 | <Home> | <Shift>+6 | 光标移到行首 |
$ | <End> | <Shift>+4 | 光标移到行末 |
H / M / L | 跳转到屏幕的最{上面/中间/下面}那行的行首 |
dd | 删除当前行 |
[n]dd | [n]cj | 从当前位置开始向下删除n行 【10dd】 |
[n1],[n2]d | 删除从n1至n2的行 【5,8d】 |
d0 | 删除当前行从当前位置到行首的字符 |
D | d$ | 删除当前行从当前位置到行末的字符 |
d1G / dG | 删除当前行至文档{头部/末尾}的所有字符 |
gg | 跳到文档头部 |
yy | 复制当前行 |
[n]yy | 从当时位置开始向下复制n行 【3yy】 |
y0 | 复制当前行从当前位置到行首的字符 |
y$ | 复制当前行从当前位置到行末的字符 |
y1G | 复制从当前行至文档头部的数据 |
yG | 复制从当前行至文档尾部的数据 |
ZZ | 保存并退出 |
<Ctrl>+b | <Page Up> | 屏幕向上移动一页 |
<Ctrl>+f | <Page Down> | 屏幕向下移动一页 |
<Ctrl>+u | 屏幕向上移动半页 |
<Ctrl>+d | 屏幕向下移动半页 |
<Ctrl>+r | 重复上一个动作 |
[n]<Space> | 光标从当前位置向后跳n个字符 |
[n]<Enter> | 光标从当前位置向下跳n行 |
底线命令模式
命令 | 说明 |
:w | 保存文件 |
:wq | 保存并退出 |
:wq! | 强制保存并退出 |
:q! | 强制退出 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |
:set fo-=r | 关闭自动注释 (永久生效需修改vimrc文件) |
:set fo=r | 恢复自动注释 |
:set noautoindent | 关闭自动缩进 (永久生效需修改vimrc文件) |
:set autoindent | 恢复自动缩进 |
:w [filename] | 另存为文件filename 【:w /tmp/test.txt】 |
:[n1],[n2] w [filename] | 复制n1至n2行的内容并另存到文件filename 【:5,8 w /tmp/test.txt】 |
:r [filename] | 读取另一个文档filename,从下行开始追加内容 【:r /tmp/testr.txt】 |
/[string] | 从当前位置向下查找字符串string 【/andy】 |
?[string] | 从当前位置向上查找字符串string 【?andy】 |
:[n1],[n2]s/[s1]/[s2]/g | 在第n1与n2行之间寻找字符串s1,用s2替换 【:8,80s/src/dest/g】 |
:[n],$s/[s1]/[s2]/g | 从第n行至末行查找字符串s1,用s2替代 【:88,$s/src/dest/g】 |
:[n],$s/[s1]/[s2]/gc | 从第n行至末行查找字符串s1,提示用户是否用s2替代 |
:%s/^#.*$// | 删除所有注释 |
:g/^$/d | 删除所有空行 |
:g/^.#.*$/d | 删除所有注释行 |
输入模式
与常见编辑器的操作相同,本文略……
原创文章禁止转载:技术学堂 » Linux文本编辑工具vi/vim命令详解