没有用过VIM的程序员不是好程序员
Buffer/缓冲区
查看缓冲区:
:ls
或者:buffers
%a 代表当前缓冲区;# 代表上一个缓冲区
打开某个文件到缓冲区:
:e[dit] <path_to_file>
安全退出缓冲区(需要先保存缓冲区内容):
:bd[elete] <id>
强制性退出缓冲区:
:bd[elete]! <id>
缓冲区跳转:
- 快捷键:
ctrl + ^
- 命令
- 跳转到指定编号的缓冲区:
b <id, filename, expression>
- 上一个缓冲区:
bn[ext]
- 下一个缓冲区:
bp[revious]
- 跳转到文件名最匹配给定字符串的缓冲区(模糊匹配并打开):
:b task
- 跳转到指定编号的缓冲区:
- 快捷键:
Window/屏幕/窗口
分屏/退出
水平分屏:
:sp[lit]
- 水平分屏并打开多个文件:
vim -O path/to/file1 path/to/file2 ...
- 水平分屏并以只读方式打开:
sv[iew] path/to/file
- 水平分屏并打开多个文件:
新建窗口/垂直分屏:
:new
或:sb
或vs[plit]
- 垂直分屏并打开指定编号的缓冲区:
:sb 1
或:vertical sb 1
- 垂直分屏并打开多个文件:
vim -o path/to/file1 path/to/file2 ...
- 右下垂直分屏并打开指定文件:
:vertical rightbelow sfind path/to/file
- 垂直分屏并打开指定编号的缓冲区:
安全退出窗口:
:q[uit]
或者:clo[se]
快捷键
1 | # 打开关闭 |
Tab/标签
打开关闭
VIM 外:
vim -p path/to/file1 path/to/file2 ...
VIM 内:
1 | :tabe[dit] {file} edit specified file in a new tab |
移动
1 | :tabs list all tabs including their displayed window |
跳转
- 命令模式下:
1 | :tabn go to next tab |
- 正常模式下使用快捷键:
1 | gt go to next tab |
其他
命令帮助:
:h <command>
文件跳转
- 设置工作路径为当前
VIM
打开路径::set path=$PWD/**
- 文件名大小写区分查找并跳转:
:sfind filename
- 设置工作路径为当前
调用外部命令:
:call system('date')
重载文件
- 放弃当前修改,强制重新载入:
:e!
- 重新载入所有打开的文件:
:bufdo e
或:bufdo :e!
:bufdo
命令表示把后面的命令应用到所有buffer
中的文件
- 放弃当前修改,强制重新载入: