vim中执行shell命令,有以下几种形式
1):!command
不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容
例如
:!ls -l
特别的可以运行:!cmd来启动一个cmd shell并执行命令,不需要退出vim
2):r !command
将shell命令command的结果插入到当前行的下一行
例如
3):起始行号,结束行号 !command
将起始行号和结束行号指定的范围中的内容输入到shell命令command处理,并将处理结果替换起始行号和结束行号指定的范围中的内容
例如
当前光标所在行,除可以指定行号外,也可以用.表示,例如:. !tr [a-z] [A-Z],将当前行的小写转为大写
4):起始行号,结束行号 w !command
将起始行号和结束行号所指定的范围的内容作为命令command的输入。不会改变当前编辑的文件的内容
例如
:62,72 w !sort,将62行到72行的内容进行排序,但排序的结果并不会直接输出到当前编辑的文件中,而是显示在vim敲命令的区域
特殊的可以下面这么用
:62 w !bash,将会把第62行的内容作为bash命令来执行并显示结果,而且不会改变当前编辑的文件的内容同样的:. w !bash,将当前行的内容作为bash命令来执行
例如52行内容为ls -l
那么输入:52 w !bash就跟执行!ls -l是一样的效果,如果你用的shell是bash shell
1):!command
不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容
例如
:!ls -l
特别的可以运行:!cmd来启动一个cmd shell并执行命令,不需要退出vim
2):r !command
将shell命令command的结果插入到当前行的下一行
例如
:r !date,读取系统时间并插入到当前行的下一行。
可利用:vs|r !date实现vim内嵌shell的效果。注意其中的|号。
3):起始行号,结束行号 !command
将起始行号和结束行号指定的范围中的内容输入到shell命令command处理,并将处理结果替换起始行号和结束行号指定的范围中的内容
例如
:62,72 !sort,将62行到72行的内容进行排序
:1,$ !sort,将全文内容进行排序
可以只指定起始行,例如:62 !tr [a-z] [A-Z],将62行的小写字母转为大写字母当前光标所在行,除可以指定行号外,也可以用.表示,例如:. !tr [a-z] [A-Z],将当前行的小写转为大写
4):起始行号,结束行号 w !command
将起始行号和结束行号所指定的范围的内容作为命令command的输入。不会改变当前编辑的文件的内容
例如
:62,72 w !sort,将62行到72行的内容进行排序,但排序的结果并不会直接输出到当前编辑的文件中,而是显示在vim敲命令的区域
特殊的可以下面这么用
:62 w !bash,将会把第62行的内容作为bash命令来执行并显示结果,而且不会改变当前编辑的文件的内容同样的:. w !bash,将当前行的内容作为bash命令来执行
例如52行内容为ls -l
那么输入:52 w !bash就跟执行!ls -l是一样的效果,如果你用的shell是bash shell
如果输入的是:52 !bash,那么会把第52行的内容也就是ls -l作为命令执行,同时命令的输出结果会替换第52行的内容,注意其中的区别。
快速模式切换
Ctrl+O 可以暂时从insert mode切换为normal mode,当输入一个命令后又切换回insert mode。
Ctrl+[ 可以将insert mode切换到normal mode。
imap jj将模式切换按键映射到jj。
当前文件:
Ctrl+G显示当前文件名
% 当前文件名
%:h 文件名的头部.例如../path/test.c就会为../path
%:t 文件名的尾部.例如../path/test.c就会为test.c
%:r 无扩展名的文件名.例如../path/test就会成为test
%:e 扩展名
快速文件切换:
Ctrl+O/Ctrl+I 切换到上次光标的位置,特别适合于多文件编辑时进行切换。这个功能不需要ctags。
m[数字/符号/字母] 设置标签。
'/`[标签名] 跳转到标签