我的VIM笔记
记录下我的VIM笔记,按自己的记录时间顺序,并未严肃分类。
我不太使用插件,喜欢先熟悉原生的功能。目前使用的插件也只有 NERDTree 和 fcitx 输入法插件了。
Sticker 1
{,} –> 使光标按空行上下跳跃
Ctrl + n –> 自动补全
:%s/{1}/{2}/g –> replace all
:%s/{1}/{2}/p –> replace current line
ga –> show ASCII code
gd/gD –> goto Definition
:! Shell命令 –> 运行Shell命令
<C-e/y> –> View模式下上/下滚屏
<C-o/i> –> 上/下一个Vim历史位置(不仅仅是光标的)
Sticker 2 编辑模式
View-mode == 排版autoindent
cw –> 替换光标所在位置到单词结尾并插入
0 or ^ –> 移动到行首 (还有区分首char和首空格的)
$ –> 移动到行尾
u –> undo
Ctrl + r –> redo
:saveas <pathOfFile> –> 另存为
. –> 重复上一次命令
*N <command> –> 重复N次命令
Sticker 3 光标移动
w –> 下一个单词开头
e –> 下一个单词尾
ge 前一个单词尾
e 前一个单词头
{,} –> 上/下一段
[{,]} –> 区块头/尾
W or E 仅以blank为分隔移动光标
% 括号匹配 [] {} () <>
* or # 搜索当前光标所在单词 下 or 上 一个
(n)f<char> –> 移动到下第n个char的字符处
F 表反方向
Ctrl + f –> 光标移动到最下面一行,并且置于屏幕开端位置

Sticker 4 块操作
块操作 <– Step 1. __Ctrl + v__ ; Step 2. 移动光标 Ctrl + d / 向下 / ,,, ; Step 3. I 插入多行内容 .
替换 <– :s/<原文>/<新文>/ p or g新文>原文>
Sticker 5
:E / :He! –> 在上方分屏打开当前目录浏览文件,可选择一个进行编辑
[附加功能可看最上面提示行]: - –> 上级目录 ; s –> 排序 ; D –> 排序 ; R –> 改名
:He –> 在下方分屏,功能同上
:Ve –> 在左边
:Ve! –> 在右边
:set scb –> 在分屏中输入可以开启当前分屏的同步滚动
Ctrl + w -> + / - / < / > / = –> 调整分屏大小,=为均分
:qa –> 退出全部
:wqa –> 保存并退出全部
连按两下Shift + z == wq
Sticker 6 Tab 分页
<C-h> / :bprevious –> previous file in buffer
<C-l> / :bnext –> next file in buffer
:tabnew –> 新建,可加文件名
:tabm [0~9] –> 摆放tab位置
:Te –> 显示目录数,选择文件在新Tab中打开
gt –> 右边Tab
gT –> 左边Tab
{i}gt –> 可指定跳过Tab数量
:tabs –> 看Tab的情况,类似:ls
tabclose {i} –> 指定关闭某个Tab
vim -p [file1] [file2] ... –> Shell下直接以Tab方式打开文件
:bufdo tab split –> 把buffer下的文件全部展开成Tab显示,buffer即ls命令所显示的当前编辑文件队列
Sticker 7 Session
保存会话,类似chrome退出时保存打开的tabs;下次启动可以继续这些tabs。
:mksession –> 保存到文件 ~/.mysession.vim
加!强制覆盖
下次打开 <– $ vim -S ~/.mysession.vim
:r!data –> 插入日期
Sticker 8 Visual模式下的编辑
I –> 行首插入
A –> 行末插入
C –> 删除直到行末并插入
s –> 删除当前字符并插入
S –> 删除整行并插入
ci" –> 删除”“中所有内容并插入,如果用ci{则要在block里面用
yaB –> 将当前所在代码块{}复制到默认register
gUiw –> 将当前word变为全__大__写
guiw –> 将当前word变为全__小__写
cw –> 从当前位置删除到word末尾并插入
yi" yi( yi< yi{ yi[ –> 复制block里面的内容
Sticker 9 书签
m[a-z] –> 记书签
``[a-z] --> 读书签 <br/>
‘[a-z]` –> 读书签,行首
:marks –> 书签列表
书签的__小写__字母: 用于同一文件内
__大写__字母: 用于编辑中的各个文件之间
'0 –> 回到前1次编辑文档离开前的最后位置
‘` –> 回到前2次编辑文档离开前的最后位置
依次类推,Vim自动记录; *其实是.viminfo的功能
__前次__指前次启动的Vim
Sticker 10 Macro
qa –> 将宏录制于a,并开始
再q –> 结束录制宏
@a –> 调用宏a
10@a –> 连续调用10次宏a
@@ –> 执行上一次宏
di" –> 光标在”“之间,删
yi( –> 光标在()之间,复制
vi[ –> 光标在[]之间,选中
dtx –> 删除直到字符x
ytx –> 复制直到字符x
Sticker 11 fold
set fdm=[mannual, indent, marker, ...] –> 设置fold模式
zc, zC, zo, zO –> 匹配折叠展开 (要预先设置过折叠会自动记录)
zf% –> 手动折叠 (在括号处用zf%,快捷)
mkview –> 保存折叠方案
loadview –> 加载折叠方案
zj, zk –> 根据折叠上下移动
{{{ 和 }}} <– 系统默认折叠标记,可加 # //注释掉
zd, zD –> 删除折叠记录
zE –> 除去所有折叠
Sticker 12 Command
:Search **/<file-name-pattern>.file-type –> 遍历搜索该目录下的文件,需要加上后缀
Reference
1. Git时代的VIM不完全使用教程