命令行模式
命令列表,一般格式:[range] action [register/range]
命令 | 功能 |
---|
:[range]delete/yank [x] | 删除/拷贝指定范围的行到寄存器x |
:[line]pub [x] | 在指定行后粘贴寄存器x的内容 |
:[range]copy/t/co [line] | 拷贝指定范围的行到行line后 |
:[range]move/m [line] | 移动指定范围的行到line后 |
:[range]join | 连接指定范围的行 |
:[range]normal {cmd} | 对指定范围的行执行normal命令,在执行命令之前vim会把光标移到行首 |
:[range]substitute | 对指定范围的匹配的行执行替换命令 |
:[range]global | 对指定范围的匹配的行执行ex命令 |
地址及范围符号
符号 | 功能 |
---|
0,1,$, . | 0行,1行,最后1行,当前行 |
‘m ‘< ‘> % | 包含位置标记m的行, 高亮度起始行,高亮度结束行,整个文件 |
命令行与插入模式通用的命令
ctrl-w ctrl-u ctrl-v ctrl-k ctrl-r{register}等参考插入模式的功能
其他命令
命令 | 功能 |
---|
ctrl-o | 跳转到上次的地方 |
<ctrl-r><ctrl-w> | 将光标所在的单词插入到命令行 |
<ctrl-r><ctrl-a> | 将光标所在的字符串插入到命令行 |
q/ | 打开查找命令历史的命令行窗口 |
q: | 打开ex命令历史的命令行窗口 |
ctrl-f | 从命令行模式切换到命令行窗口 |
!{cmd} | 运行外部命令 |
tab 、ctrl+n、 right方向键 | 正向遍历补全列表 |
@: | 重复上次的ex命令 |
@@ | 运行过一次@:后,用此命令重复上次的ex命令 |
ctrl-d | 可以先输入部分ex命令,然后通过此命令输入列出补全列表 |
定义补全行为
set wildmode=longest,list
帮助:h wildmode
在vi和shell间切换
命令 | 功能 |
---|
:!{cmd} | 在shell中执行cmd |
:shell | 启动一个shell,exit后回到vi |
ctrl-z | 挂起vim所属进程 |
jobs | 查看当前的作业列表 |
fg | 唤醒挂起的作业, man bash 看job control了解更多 |
把缓冲区当作标准输入输出
命令 | 功能 |
---|
:read !{cmd} | 在shell中执行cmd,并把标准输出插入到光标下行 |
:[range]write !{cmd} | 在shell中执行cmd,并把[range]的内容作为其标准输入 |
:[range]!{filter} | 使用外部程序对指定范围的行进行过滤 |