vim
Vim can open multiple files, each in its own buffer. Here is how to save all changes and continue working, or save all changes and exit Vim. It is also possible to quit all (discard changes).
操作 | 描述 |
---|---|
:wa | write all changed files (save all changes), and keep working |
:xa | exit all (save all changes and close Vim) |
:qa | quit all (close Vim, but not if there are unsaved changes) |
:qa! | quit all (close Vim without saving—discard any changes) |
The :wa and :xa commands only write a file when its buffer has been changed. By contrast, the :w command always writes the current buffer to its file (use :update to save the current buffer only if it has been changed).
Warning: If you enter :qa!, Vim will discard all changes without asking "are you sure?".
• cc 替换一行,清空一行
• cw 替换一个单词,进入插入模式
• ea 在当前单词最后插入
• zc 折叠与当前缩进相同的行
• zo 打开折叠
• zj 移到下一个折叠处
• zk 移到上一个折叠处
• zm 折叠所有可折叠标记
• zr 展开所有折叠
• [z 到当前打开折叠的开始
• ]z 到当前打开折叠的结束
当光标在( ), [ ],< >, { }, " ", '' 内时,可以用 ci, di, 或 yi,加上(, [, <,{, ", '。这样可以改写/删除/复制( )内,[ ]内,< >内,{ }内," "内,' '内的内容
vi) vi' vi"
ve 选中单词
A: 在本行行尾插入
J:可以去除本行和下一行之间的换行符,也就是将下一行续接到本行尾部
~:光标所在处的字符进行大小写互换
zz: 将当前行放置于页面中间,利于阅读
zt:将当前行放置于页面的最顶端,一般阅读函数定义时,非常非常有用
/^\d+/m 去掉代码序号
i → Insert 模式,按 ESC 回到 Normal 模式.
x → 删当前光标所在的一个字符。
ZZ/:wq → 存盘 + 退出 (:w 存盘, :q 退出) (陈皓注::w 后可以跟文件名)
dd → 删除当前行,并把删除的行存到剪贴板里
p → 粘贴剪贴板
:help → 显示相关命令的帮助
a → 在光标后插入
o → 在当前行后插入一个新行
O → 在当前行前插入一个新行
cw → 替换从光标所在位置后到一个单词结尾的字符
0 → 数字零,到行头
$ → 到本行行尾
^ → 到本行第一个不是 blank 字符的位置(所谓 blank 字符就是空格,tab,换行,回车等)
g_ → 到本行最后一个不是 blank 字符的位置。
/pattern → 搜索 pattern 的字符串(陈皓注:如果搜索出多个匹配,可按 n 键到下一个)
P/p → 粘贴
yy → 拷贝当前行当行于 ddP
u → undo
→ redo
:%s/源字符串/目的字符串/g 全局替换命令为(不带%是行内替换)
删除一行:dd
删除一个单词/光标之后的单词剩余部分:dw
删除当前字符:x
光标之后的该行部分:d
x 或 X 删除一个字符。
dG 删除直到工作缓存区结尾的内容
d1G 删除直到工作缓存区开始的内容
5dd 删除从当前行所开始的 5 行内容
:e <path/to/file> → 打开一个文件
:w → 存盘
:saveas <path/to/file> → 另存为 <path/to/file>
:x, ZZ 或 :wq → 保存并退出 (:x 表示仅在需要时保存,ZZ 不需要输入冒号并回车)
:q! → 退出不保存 :qa! 强行退出所有的正在编辑的文件,就算别的文件有更改。
:bn 和 :bp → 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。(陈皓注:我喜欢使用:n 到下一个文件)
NG/:N → 到第 N 行 (陈皓注:注意命令中的 G 是大写的,另我一般使用 : N 到第 N 行,如 :137 到第 137行)
gg → 到第一行。(陈皓注:相当于 1G,或 :1)
G → 到最后一行。
w → 到下一个单词的开头。
e → 到下一个单词的结尾。
% : 匹配括号移动,包括 (, {, [. (陈皓注:你需要把光标先移到括号上)
< 或 > → 左右缩进
:split → 创建分屏 (:vsplit 创建垂直分屏)
语法为 :[addr]s/源字符串/目的字符串/[option]
全局替换命令为::%s/源字符串/目的字符串/g
如:“1,20” :表示从第 1 行到 20 行;
“%” :表示整个文件,同“1,
[option] : 表示操作类型
如:g 表示全局替换;
c 表示进行确认
p 表示替代结果逐行显示(Ctrl + L 恢复屏幕);
省略 option 时仅对每行第一个匹配串进行替换;
如果在源字符串和目的字符串中出现特殊字符,需要用”\”转义
:%s/ */ /g 将多个空格换成一个空格
y 复制
d 删除
x 剪切
p 粘贴
:n 或 :prev 来跳转到前一个或者后一个文件
还可以通过
:first 或 :last 来跳转到第一个和最后一个文件
如果你只打开一个文件,如 vim file1
然后在使用过程中,通过
:e file2 编辑了第二个文件,这时 , :prev 是不起作用的
可以用
:e# 返回上一个编辑的文件
无论哪两种方式都可以用
:bN 跳转到打开的第 N 个文件
如 :b1 跳转到第一个打开的文件
:r 加载文件