宏(macro)
qa - 将之后的所有键盘操作录制下来,直到再次在命令模式按下q,并存储在a中
@a - 执行刚刚记录在a里面的键盘操作
@@ - 执行上一次的macro操作
保存会话
会话代表当前的Vim状态,即你的工作环境,包括窗口、标签页等等。
:mksession ~/.mysession.vim
如果文件重复,Vim默认会报错,如果你想强行写入,可以使用mksession!
:
:mksession! ~/.mysession.vim
重新打开这个会话:
vim -S ~/.mysession.vim
执行外部命令
可以在 vim 中输入 :!cmd
执行外部命令 cmd
,比如:
:!python % - 运行当前编写的python程序(%会展开为__file__)
:w !cmd
可以使用文件内容作为命令的输入:
:w !cmd - 将整个文件作为命令的输入
:n1, n2 w !cmd - 将文件中n1至n2行内容作为cmd的输入并执行
:r !cmd
可以执行 cmd
并把其标准输出打印的下一行,比如:
:r !date - 把当前时间输出到文件
:r !pwd - 输入当前路径
:r !cal - 运行“cal”,在下一行插入日历
:% !cmd
可以执行 cmd
,并以文件内容作为 cmd
的输入,以 cmd
的输出替换当前文件,比如:
:% !python -m json.tool - 格式化当前 json 文件
这里 %
相当于选择整个文件内容,同样可以选择部分内容进行替换
在任何格式的文本中,想插入一些数据,只需要写一小段代码,然后选中这段代码,执行!python
for i in range(10, 0, -1):
print(i)
选中代码,并输入:'<,'>!python
, 以下为输出:
10
9
8
7
6
5
4
3
2
1
vim剪贴板(寄存器)
vim有多个剪贴板(寄存器):
0~9
是历史剪贴板"
为上一次剪切的内容+
为系统剪贴板*
为拷贝粘贴/
为上一次搜索的内容:
为上一次的命令.
为上一次进行的操作,包括写的内容=
这个寄存器比较特殊,使用它Vim会让你输入一个表达式,它返回表达式的结果(:help quote=
)
当进行宏录制后,还可以看到寄存器中宏录制的内容。
:reg - 查看剪贴板内容
对任何剪贴板,可以使用以下命令进行拷贝和粘贴(+
可以替换为任何剪贴板)
"+y
"+p
"+d
在插入模式下或者Ex命令模式下,使用<c-r>
加寄存器名
可以输入寄存器里的内容
vim参数
$ vim -b 用二进制打开
$ vim -p file1 file2 用tab页打开文件
$ vimdiff a.txt b.txt 比对文件
$ vi -t tag 如果已用ctags生成tags文件,打开后直接到tag定义
使用+
可以在打开Vim后执行命令:
$ vim +number 打开并定位到底nunber行,相当与打开Vim后输入 :number
$ vim +PlugInstall +qall 打开Vim下载插件
vim帮助
- 查找选项:
:help 'textwidth'
- 查找VimL函数:
:help reverse()
- 查找命令:
:help :echo
- 查找不同模式下的按键映射:
- insert:
:help i_^n
- command:
:help c_^n
- insert:
- 查看映射:
:nmap <leader>
未分类
:%TOhtml - 转换为HTML文件
J - 合并下一行与当前行
gf - 打开光标处的文件(这个命令在打到#include头文件时挺好用的,当然,仅限于有路径的)
K - 在linux系统函数上用K跳转到man page查询页面查询系统函数(unix、linux),
g<c-g> 字节统计
insert模式下:
ctrl-w - 在insert模式下删除一个词
ctrl-u - 删除到行首
ctrl-[ - 实现ESC功能
ctrl-y - 重复当前光标上一行的字符
ctrl-o - 可以立即执行一个normal 命令,然后返回insert模式
底部命令栏
<c-r><c-w> - 拷贝光标下的词
<c-r><c-a> - 拷贝光标所在行
与shell切换:
<c-z> - 挂起vim任务
jobs - 查看任务
fg [n] - 返回vim
- older
- Newer