vim命令行
在命令模式和插入模式通用的命令
ctrl+w : 删除到上个单词开头
ctrl+u :删除到行首
crtl+v / ctrl+k : 在插入键盘上找不到的字符
在连续的多行执行命令
vim 中的范围是 {start},{end}
其中start/end 可以是数字,可以是标签
此外可以使用+num来指定偏移量,比如 .,.+3 指的是当前行到之后的3行
Ex命令可以在某一范围上执行命令
| 命令 | 效果 |
|---|---|
| 跳转类 | ---- |
| :num | 跳转到num行 |
| :$ | 跳转到行尾 |
| 打印类 | ---- |
| :print / :p | 打印光标所在行 |
| :3p | 打印第三行 |
| :3,7p | 打印3到7行 |
| :.,$p | 打印当前行到最后1行 |
| 删除类 | ---- |
| :delete/ :d | 删除光标所在行,这和 :1,$p 是等效的 |
| :3d | 删除第三行 |
| :3,7d | 删除3到7行 |
| 替换 | ---- |
| :%s/old/new/ | old替换为new |
符号. 代表当前行的位置
符号% 代表当前文本的所有行
符号'm 代表包含位置标记m的行
符号'< 代表高亮区域的起始行
符号'> 代表高亮区域的结束行
符号0 第0行是虚拟行,主要是结合:t等命令使用
对高亮区域进行编辑
当我们选中高亮区域时,使用:进入命令模式,会自动填充:'<,'> 此时后面跟的命令会在每个高亮行上执行
对非连续的多行执行命令
copy
:copy (简写为:t) 可以一行或多行复制到文本的另一部分
:[range]copy{address}
将range范围的内容复制到address行的下方
例如 :19,22t25
将19到23行复制到25行的下方
:'<,'>t0 是一个特殊用法,是将高亮区域复制文件的开头
move
:mova 可以一行或多行移动到另一部分
[range]move{address}
将range范围行移动到address行之后
例如 :'<,'>move$
将高亮行移动到文件末尾
在指定范围上执行普通命令
normal
:[range]normal{command}
例如 :1,30 normal A;
在1到30行最后插入;
:% normal I#
在所有行前加#
:'<,'> normal .
在高亮行重复上一次的操作
自动补全
ctrl+d 可以在vim命令行列出自动补全命令
tab键盘可以自动补全
shift+tab 反向补全
把当前单词插入到命令行
在命令行输入 ctrl+r ctrl+w 会直接复制当前单词到命令行
将多行命令拼接为一行命令执行
%normal I // | %normal A;
在所有行前面加// 并在所有行后面加;
我们可以只有q:或者ctrl+f进入命令的历史文本,然后像编辑正常文本一样编辑历史文本,把需要拼接的命令拼到一起执行
运行shell
启动一个shell窗口执行命令,执行结束后exit或者ctrl+d退出,返回vim
:shell
执行shell命令
:!shell-command
在shell中执行命令,并将结果的标准输出插入到光标的下方
:read !{cmd}
vim 修改配色方案
在命令模式 :colorscheme 配色方案
可以使用ctrl+d列出所有的配色方案