我的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 –> 光标移动到最下面一行,并且置于屏幕开端位置

vim命令图解

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不完全使用教程
点击查看评论