其他命令
<c-L> 重绘屏幕
<c-z> 挂起vim回到shell,想继续vim只需要输入 fg
<c-x-f> 文件路径提示
<c-N> 当前文件中的关键字提示
<C-X><C-O> 语义上的补全
J 于下一行文本合并
% 在括号间跳转,配合v可以选中代码块
~ 光标下的字符转化为大写
:66,70s/^/\/\/ 66-70行添加 //注释
:66,70s/^\/\// 取消多行注释
:read index.html 读入文件的内容放在当前行的后面
:! <bash 命令> 执行bash命令行
字符查找
fa 查找当前行光标后的 a 字符, ";"分号重复查找命令,","与";"相反
Fa 查找光标签前的a
3fa 查找当前行光标后的第3个a文本
还有 ta ,2ta,移动到a的前面
/word + 回车 从当前的行向下查找 n向下切, N向上切
N * 向前查找光标下的标识符(完全匹配)
N # 向后查找光标下的标识符(完全匹配)
g* 类似 *(模糊匹配)
g# 类似 #(模糊匹配)
gd 转到本地声明
gD 转到global声明
块级光标移动
w 跳到下一个word开头
e 跳到当前word结尾
b 跳到上一个word开头
ge 跳到上一个word结尾 ctrl+ <
行级光标移动
G 整个文档的最后一行
gg 整个文档的第一行行
3G 跳转到3行, G意为Go
N zh 屏幕右滚 N 个字符
N zl 屏幕左滚 N 个字符
N zH 屏幕右滚半个屏宽
N zL 屏幕左滚半个屏宽
删除文本
被删除的文本都可以用p取回来, put
x 删除当前光标下的字符("dl"的快捷命令)
X 删除当前光标之前的字符("dh"的快捷命令)
D 删除自当前光标至行尾的内容("d$"的快捷命令)
dw 删除自当前光标至下一个 word 的开头
db 删除自当前光标至前一个 word 的开始
diw 删除当前光标所在的 word(不包括空白字符)
daw 删除当前光标所在的 word(包括空白字符)
dG 删除当前行至文件尾的内容
dgg 删除当前行至文件头的内容
上面的d命令都可以用 c,y代替
4x 删除4个文字
cw 删除word并进入插入模式
dd 删除一行,
d$ 删除到行尾的内容, d^
cc 改变整行
. 重复上一次的删除命令
替换
R 输入的文字会替换光标下的文字
<Insert>键可以再 i 和 R 模式之间切换
<BS> 退格键可以撤销替换
ra 把光标下的文字替换为a
4ra 把四个替换为a
r<Enter> 替换为一个换行符
:%s/name/ajanuw/g 默认执行全部name替换为ajanuw
:%s/name/ajanuw/gc 每执行一次都需要同意,还是跳过
:1,5s/this/that/g 第 1 到第 5 行的文本执行替换操作,包括第 1 行和第 5行
复制粘贴
yy 复制当前行
yw 复制一个word
p 粘贴到光标后
P 粘贴到光标前
"*yy 复制
"*p 粘贴
"ay复制 "ap 粘贴,寄存器的名字为[a-z]
撤销
N u 撤销最近的 N 此改动
N CTRL-R 重做最近的 N 个被撤销的改动
U 恢复最近被改动的行
缩进,对齐,折叠
gg=G 是一个自动缩进的命令
== 整理当行
= 整理选中的行
:>> 设置缩进 http://vim.wikia.com/wiki/Shifting_blocks_visually
:<<
zf} 折叠代码 Docs: https://www.2cto.com/os/201203/122133.html
zc 开合折叠 https://vim.fandom.com/wiki/Folding
zo 打开光标下的折叠
zO 打开光标下的所有折叠
zR 打开所有折叠
编辑另一个文件
:f {name} 设置当前文件名为name
:e ! 重载当前文件
:e foo.txt 关闭当前文件,打开指定文件,当前文件未保存会出现错误信息
:e! foo.txt 强制打开指定文件
错误有对应的 ID 号, :help E37 查看错误帮助
文件标记
m m{a-zA-Z} 用标记 {a-zA-Z} 记录当前位置
`a `{a-z} 至当前文件中的标记 {a-z}
'' `` 到最近一次跳转之前的位置
'" `" 最后退出当前缓冲区时到光标位置。默认为第一行的第一个字符
'. `. 到最后一次更改的位置
保存一份原始文件
:set patchmode=.orign
分页
简写 sp
:split 上下分页
:split index.html
:vsplit 左右分页
<c-w> 点击w在分屏中移动
// 移动窗口
CTRL-W H 到左边的窗口
CTRL-W J 到下面的窗口
CTRL-W K 到上面的窗口
CTRL-W L 到右边的窗口
<c-w 10 >> 增加当前屏幕的宽度 < 向右放大, > 向左放大,10代表次数
CTRL-W + 增加当前窗口高度
CTRL-W - 减小
:q 关闭当前文件
:close 关闭当前窗口,阻止你关闭最后一个窗口
:only 关闭除当前窗口以外的窗口
:wa 保存所有窗口打开的文件
:qa 退出所有文件,有未保存的文件无法退出
:wqa 保存并退出所有窗口。
目录 和 Tab导航
vim . 打开当前目录
:Ve 在左侧边栏打开当前文件的目录
enter 在当前窗口打开文件
o 打开一个水平分隔的窗口显示文件
v 打开一个垂直分隔的窗口显示文件
t 在一个新标签页中打开文件
:cd dirtory 切换到dirtory目录
:pwd 显示当前工作目录
:tabnew file.txt 在新选项卡中打开 file.txt
:tabs 显示所有 tabs
{count}gt 转到标签页 {count}。 第一个标签页为数字 1
:tabclose 关闭当前标签
gt
:tabn[ext] 转到下一个选项卡
gT
:tabp[revious] 转到上一个选项卡
屏幕移动
<ctrl+y> 将屏幕上移一行
<ctrl+e> 将屏幕下移一行
<ctrl+u> 将屏幕上移半页
<ctrl+d> 将屏幕下移半页
<Page UP> 将屏幕上移一页
<ctrl+b> 和上面一样
<Page Down> 将屏幕下移一页
<ctrl+f> 和上面一样
zz 将当前行移到屏幕中间
zt 将当前行移到屏幕顶部
zb 将当前行移到屏幕底部