vim命令行模式

166 阅读2分钟

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列出所有的配色方案