1. ex模式
vim中,按:触发的命令行模式,称为 ex模式,具体命令参见如下笔记:
2. ex命令格式
行号 命令
组成。如:
2 p 表示打印出第二行(显示到命令行上方)
2,20 d 表示删除第二行到第20行
3. 默认行号
ex命令中,没有给到行号,则默认是当前行
如:
d
表示删除当前行
4. ex常见命令
d 删除 :10 d 表示删除第10行
m 移动 :10, 20 m 25 表示把10到20行移动到25行之后
t 复制 :10, 20 t $ 表示把10到20行移动到文末
5. ex行号
没有给出行号,则是默认行号
$ 表示文末
% 表示全文
6. vim搜索
:\word
输入:\字符串,搜索相应的字符,检索出结果后,通过按键n向下,N向上来查找下一个或者上一个,注意:\是向后搜索,如果只有当前行前面有匹配,会提示没有找到,需要按n来继续找到下一个
7. vim替换
:[范围]s/目标模式/替换内容/[标志]
在ex命令下,使用s命令,标志有:
常用标志:
g
:替换行内所有匹配项(不加则仅替换第一个)。c
:每次替换前确认(Confirm)。i
:忽略大小写(:set ignorecase
可全局设置)。I
:区分大小写(覆盖全局设置)。
范围 | 示例 | 说明 |
---|---|---|
当前行 | :s/old/new/g |
替换当前行所有 old 为 new |
全文 | :%s/old/new/g |
替换整个文件 |
行号区间 | :10,20s/old/new/g |
替换第 10 到 20 行 |
可视模式 | 选中文本后 :'<,'>s/old/new/g |
替换选中区域 |
相对行号 | :.,+5s/old/new/g |
从当前行到后 5 行 |
8. vim的寄存器
所谓的寄存器是指vim编辑时,复制的内容,或者曾经执行过的命令。
vim 有10个数字寄存器,存放着最近10次拷贝的内容,使用的格式为:
bash
"1
如:粘贴第3个寄存器中的内容到当前行,则使用如下命令:
bash
"3p
可以通过reg命令查看各个寄存器中的内容。
具体的寄存器名称及作用如下:
寄存器名 | 用途 |
---|---|
"" (无名) |
默认寄存器,直接使用 y (复制)、d (剪切)、p (粘贴)时会用到。 |
"0-9" |
数字寄存器,0 存储最近一次复制的内容,1-9 存储历史删除/剪切内容。 |
"a-"z" |
命名寄存器,可手动指定存储内容(如 "ayy 复制当前行到寄存器 a )。 |
"+ 和 "*" |
系统剪贴板寄存器(Linux 中 "+ 对应 Ctrl+C/Ctrl+V ,"* 对应鼠标中键)。 |
": |
存储最近执行的命令(如 :echo "hello" 后,":p 会粘贴这个命令)。 |
注意:+的特殊性,这个+寄存器其实是,系统复制的内容地址,要想打通系统和vim将的复制,必须使用这个+寄存器,具体命令如下:
复制内容到系统(等一下可以使用ctrl+v粘贴到不是vim的地方)
bash
"+y
注意:不要少了引号
粘贴系统内容到vim
bash
"+p
同样注意,不要少了双引号
9. vim-gtk
如果命令,"+p无法起作用,那么,应该是装的vim的版本不对,需要按照vim-gtk版本,而不是vim
附录:常见的 Ex 命令分类及示例
一、基础操作命令
命令 | 功能 | 示例 |
---|---|---|
:q |
退出 Vim | :q |
:q! |
强制退出(不保存修改) | :q! |
:w |
保存文件 | :w |
:wq |
保存并退出 | :wq |
:e <文件路径> |
打开新文件 | :e ~/new.txt |
:e! |
重新加载当前文件(放弃修改) | :e! |
二、文本编辑命令
命令 | 功能 | 示例 |
---|---|---|
:s/old/new/ |
替换当前行第一个 old 为 new |
:s/foo/bar/ |
:s/old/new/g |
替换当前行所有 old 为 new |
:s/foo/bar/g |
:%s/old/new/g |
全文替换 old 为 new |
:%s/foo/bar/g |
:m <行号> |
移动当前行到指定行 | :m 5 (将当前行移到第 5 行后) |
:t <行号> |
复制当前行到指定行 | :t 3 (复制当前行到第 3 行后) |
:d |
删除当前行 | :d |
:d <范围> |
删除指定范围的行 | :3,5d (删除 3-5 行) |
三、范围操作与全局命令
命令 | 功能 | 示例 |
---|---|---|
:1,10s/old/new/g |
替换 1-10 行的 old 为 new |
:1,10s/foo/bar/g |
:g/pattern/命令 |
对匹配 pattern 的行执行命令 |
:g/error/d (删除所有含 error 的行) |
:v/pattern/命令 |
对不匹配 pattern 的行执行命令 |
:v/error/d (删除所有不含 error 的行) |
:norm 命令 |
在指定范围执行普通模式命令 | :%norm A; (所有行末尾添加 ; ) |
四、缓冲区与窗口管理
命令 | 功能 | 示例 |
---|---|---|
:ls |
列出所有缓冲区 | :ls |
:b <编号/名称> |
切换到指定缓冲区 | :b2 (切换到缓冲区 2) |
:bd |
删除当前缓冲区 | :bd |
:sp <文件名> |
水平分割窗口并打开文件 | :sp new.txt |
:vsp <文件名> |
垂直分割窗口并打开文件 | :vsp new.txt |
五、设置与配置
命令 | 功能 | 示例 |
---|---|---|
:set <选项> |
临时设置选项 | :set number (显示行号) |
:set <选项>=值 |
设置选项值 | :set tabstop=4 (Tab 显示为 4 空格) |
:syntax on/off |
启用/禁用语法高亮 | :syntax on |
:colorscheme <主题> |
切换颜色主题 | :colorscheme desert |
六、执行外部命令
命令 | 功能 | 示例 |
---|---|---|
:! <系统命令> |
执行 Shell 命令 | :! ls -l |
:r !<系统命令> |
将命令输出插入当前光标位置 | :r !date (插入当前日期) |
:w !sudo tee % |
以 sudo 权限保存文件 | (用于无写权限时的强制保存) |
七、参数列表与文件批量操作
命令 | 功能 | 示例 |
---|---|---|
:args <文件列表> |
设置参数列表(多文件操作) | :args *.txt |
:argdo <命令> |
对所有参数列表中的文件执行命令 | `:argdo %s/foo/bar/g |
八、宏与脚本
命令 | 功能 | 示例 |
---|---|---|
:@<寄存器> |
执行寄存器中的宏 | :@a (执行寄存器 a 的宏) |
:source <文件> |
加载并执行 Vim 脚本 | :source ~/.vimrc |
九、帮助与调试
命令 | 功能 | 示例 |
---|---|---|
:help <主题> |
查看帮助文档 | :help :s (查看替换命令帮助) |
:messages |
查看 Vim 的消息历史 | :messages |
总结
- Ex 模式的核心逻辑:通过范围(行号、模式匹配)和命令组合,实现精准的文本操作。
- 高效操作技巧 :
- 结合正则表达式(如
:%s/\v(\d+)/\1/g
使用"非常魔法模式")。 - 使用
:g
和:v
全局过滤行。 - 利用
:argdo
或:bufdo
批量处理文件/缓冲区。
- 结合正则表达式(如