vi 是 linux中最经典的文本编辑器
vi 的核心思想是让程序员的手指始终保持在键盘的 核心区域 就能完成所有操作
vim 是从vi发展出来的文本编辑器,支持代码补全,编译 及 错误跳转 等方便编程的功能特别丰富 在程序员中被广泛使用,被称为编辑器之神.
打开文件/新建文件
vim 文件名
如果文件已存在,会直接打开该文件 如果文件不存在,保持退出时,就会新建一个文件
打开文件并且跳到指定行
vim 文件名 + 行数
如果只带上+ 而不指定行号 会直接定位到文件末尾
: 进入文件末尾
:q! 不保存退出
:w 保存
:wq 保持并退出(末行)
:x 保存并退出(末行)
zz 编辑模式退出
光标上下左右
h 光标向左
j 向下
k 向上
l 向右
行内移动
w 向后移动一个单词
b 向前移动一个单词
0 行首
^ 行首 第一个不是空白字符的位置
$ 行尾
行数移动
gg 文件顶部
G 文件末尾
数字gg 移动到数字对应行
数字G 移动到数字对应行
:数字 移动到数字对应行
屏幕移动
Ctrl + b 向上翻页
Ctrl + f 向下翻页
H 屏幕顶部
M 屏幕中间
L 屏幕底部
vim 中以空行来作为段落分隔
{ 上一段
} 下一段
% 括号匹配及切换{} [] ()
选中文本(可视)
v 从光标位置开始按照正常模式选择文本
V 选中光标经过的完整行
ctrl+v 垂直方向选中文本
可视模式下 可以和 移动命令连用 例如ggVG 可以选中所有的内容
撤销和恢复撤销
u 撤销上次的命令
ctrl + r 恢复撤销的命令
删除文本
x 删除光标所在的字符,或者选中的文字
d 删除移动命令对应的内容
dd 删除光标所在行可以ndd删除多行
D 删除至行尾
提示: 如果使用 可视模式 已经选中了一段文本, 那么无论使用 d 还是 x, 都可以删除选中文本
删除命令可以和移动命令连用, 以下是常见的组合命令:
dw 从光标位置删除到单词末尾
d0 从光标位置删除到一行的起始位置
d} 从光标位置删除到段落末尾
ndd 从光标位置向下连续删除n行
复制和剪切
vi 中提供有一个 被复制文本的缓冲区
-
复制 命令会将选中的文字保存在缓冲区
-
删除 命令删除的文字会被保存在缓冲区
-
在需要的位置, 使用 粘贴 命令可以将缓冲对的文字插入到光标所在的位置
y(复制命令) 复制
yy 复制一行
d(剪切命令) 剪切
dd 剪切一行
p 粘贴
vi中的文本缓冲区只有一个,如果后续做过 复制、剪切操作, 之前缓冲区中的内容会被替换.
-
vi中的 文本缓冲区 和 系统的 剪切板 不是同一个
-
所以在其他软件中使用
Ctrl + C
复制的内容, 不能再vi
中通过p
命令粘贴 -
可以在 编辑模式 下使用 鼠标右键粘贴
替换
r 替换当前字符
R 替换当前行光标后的字符
R
命令可以进入 替换模式, 替换完成后, 按下ESC
, 按下 ESC
可以回到 命令模式
替换命令** 的作用就是不用进入 编辑模式, 对文件进行 轻量级的修改
查找
常规查找
/str
查找到指定内容之后, 使用 Next
查找下一个出现的位置
n:查找下一个
N:查找上一个
单词快速匹配
‘*’ 向后查找当前光标所在的单词
‘’#’’ 向前查找当前光标所在单词
查找并替换
在vi中查找和替换命令需要在 末行模式下执行
:%s///g
全局替换
-
一次向 替换文件中的 所有出现的旧文本
-
命令格式如下
:%s/旧文本/新文本/g
可视区域替换
- 先选中 要替换文字的 范围
- 命令格式如下
:s/旧文本/新文本/g
确认替换
c confirm 确认
-
如果把末尾的
g
改成gc
在替换的时候, 会有提示! 推荐使用 -
命令格式如下
:%s/旧文本/新文本/gc
y
-yes
替换n
-no
不替换a
-all
替换所有q
-quit
退出替换l
-last
最后一个, 并把光标移动到行首^E
向下滚屏^Y
向上滚屏
插入命令
在 vi 中除了常用 i
进入编辑模式 外, 还提供了一下命令同样可以进入编辑模式
i 在当前字符前插入文本
l 在行首插入文本
a 在当前字符后添加文本
A 在行末添加文本
o 在当前行后面插入一空行
O 在当前行前面插入一空行
find 搜索
可以通过find
命令 在特定目录下(包含它的后代目录) 搜索 符合条件的文件
find [路径] -name ‘*.txt’
如果省略路径, 表示在当前文件夹下查找
搜索指定目录下, 文件是 abc.txt的文件
方式一:指定全目录
find /export/ -name 'abc.txt'
# 方式二: 当前目录
find . -name 'abc.txt'
# 方式三: 当前目录 可以 省略 不写
find -name 'abc.txt'
搜索指定目录下, 文件名 包含 1
的文件
find /export/ -name “1”
搜索指定目录下,所有以.txt
为扩展名的文件
find /export/ -name "*.txt"
搜索指定目录下, 以数字1
开头的文件
find /export -name "1*"