Linux文本编辑工具vi/vim命令详解

所有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命令详解

精彩评论

5+4=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏