vim备忘
第一讲
hjkl:移动 h左 j下 k上 l右
vim 文件名:打开文件,如果此文件不存在则会新建文件
:q!:退出编辑不保存
:wq:保存并退出
x:删除当前光标下的字
X:删除当前光标前的字
i:光标前插入
I:行首插入
a:光标后插入
A:行尾插入
第二讲
dw:从光标处删除至下个单词的开头 例入光标在is的i上 it is my life->it my life
de:从光标处删除至本单词的末尾 例入光标在is的i上 it is my life->it my life,my前有两个空格
d$:从光标处删除至行尾 例入光标在is的i上 it is my life->it
其中d是操作符w,e,$是动作
d:删除操作
w:从光标到下个单词的开头
e:从光标到本单词的末尾
$:从光标到行尾
可以在动作前加入数组表示重复次数
d2w:从光标处删除至第三个单词的开头 例入光标在is的i上 it is my life->it life
dd:删除当前行
2dd:删除当前行和下一行
u:撤销
U:整行操作撤销
CTRL-R:撤销撤销,还原之前的操作
dap:删除一个段落
di(:删除括号内的内容,可以是(,[,{
da(:删除括号及内部的内容,可以是(,[,{
dit:清除标签内部的内容
dat:清除整个标签
df字母或符号:向后清除到字母或者符号的内容
dF字母或符号:向前清除到字母或者符号的内容
dt字母或符号:向后清除到字母或符号之前的内容
dT字母或符号:向前清除到字母或符号之后的内容
第三讲
p:将删除的内容置入光标之后,如果是行的话置入下一行
r:替换光标当前字符,先输入r然后输入替换内容
ce:修改直到单词末尾并进入编辑状态 例入光标在is的i上 it is my life->it my life,my前有两个空格
更改类命令c和删除类命令d的区别是c会在更改完之后进入编辑模式
第四讲
CTRL-G:显示当前文件信息,及当前所在行的位置
G:跳转到文件的最后一行
gg:跳转的文件的第一行
输入停留的行号,然后输入G,可以跳转到按CTRL-G时所在行
/:查找
?:逆向查找
n:下一项查找匹配结果
N:上一项查找匹配结果
CTRL-o:回到之前的位置
CTRL-i:跳转到较新的位置
%:查找配对的(,[,{
:s/old/new:替换old为new,只会替换第一个匹配的结果
:s/old/new/g:替换old为new,圈行匹配替换
:#,#s/old/new/g:指定行匹配替换,其中#,#为起始行号和结束行号
%s/old/new/g:全文匹配替换
%s/old/new/gc:全文匹配替换,并且提示是否替换
第五讲
:!:可以在:!后面接外部命令,例如:!ls与在shell中ls的效果一致
:w:可以在:w后面接文件名,对当前文件进行另存为操作
wa:保存所有文件
v:进入可视化模式进行选取,可以在可是模式下移动光标进行选取,然后按:对选取的区域进行操作,例如:'<,'>w test.txt可以对选中的区域进行另存为操作
:r:当前行插入其他文件内容或外部指令结果,例如:r text.txt,:r !ls
第六讲
o:在当前光标行下方插入一行并进入编辑模式
O:在当前光标行上方插入一行并进入编辑模式
R:替换,是在原有文字的基础上进行的替换
y:复制命令,可以结合v使用,复制指定范围,也可以通过其他的动作,如w使用,复制一个单词
p:粘贴
:set ic:查找是忽略大小写
:set noic:禁用忽略大小写
:set is:查找短语时显示部分匹配
:set hls:高亮显示所有的匹配项
第七讲
:help:帮助,可以获取指定命令的帮助,如:help w
CTRL-W:vim窗口切换
其他
b:向左移动直到单词开头
CTRL-d:向下滚动半页
CTRL-u:向上滚动半页
CTRL-f:向下滚动一页
CTRL-b:向上滚动一页
SHIFT-h:光标移动到顶部
SHIFT-m:光标移动到中部
SHIFT-l:光标移动到底部
zz:当前位置为屏幕中央
zt:当前位置为屏幕顶端
zb:当前位子为屏幕底端
gf:打开光标所在文件
:e <filename>:打开指定文件,如果没有则新建文件
:Ex:打开目录数,回车打开对应文件-返回上一级
*:向后查找光标当前所在单词
#:向前查找光标当前所在单词
fa:查找下一个为a的单词处,F方向相反
ta:查找下一个为a的单词前,T方向相反
;:继续查找
dta:删除所有内容直到遇到a
yy:拷贝当前行,与0y$效果一样
P:粘贴到当前位置之前
100iabc:插入abc100次
.:重复上次命令
3.:重复三次上次命令
:ls:打开缓存区,:buffers也有同样的效果
:b<N>:打开缓存的第n个文件
:bd<N>:删除要关闭的缓存区
J:将当前行与下一行合并
>>:向右缩进
<<:向左缩进
==:自动排版当前行
gg=G:当前文档全文自动排版
sp,CTRL-w s:上下分屏
vs,CTRL-w v:左右分屏
:diffs filename<>:diff模式打开一个分屏
CTRL-w w:激活下个窗口
CTRL-w j:激活下方窗口
CTRL-w k:激活上方窗口
CTRL-w h:激活左侧窗口
CTRL-w l:激活右侧窗口
CTRL-w =:平均窗口尺寸
CTRL-w +:增加高度
CTRL-w -:缩减高度
CTRL-w _:最大高度
CTRL-w >:增加宽度
CTRL-w <:缩减宽度
CTRL-w |:最大宽度
:tabe:打开新标签页,后面可以跟<空格><文件名>打开指定文件
CTRL-w gf:在新标签中打开当前光标所在位置的文件名
gt,:tabn:下一个标签页
gT,:tabp:上一个标签页
gn:下一个buffer
gp:上一个buffer
:tabr:到第一个标签页
:tabl:到最后一个标签页
:tabc:关闭当前标签栏
:-tabc:关闭上一个标签页
:+tabc:关闭下一个标签页
:tabo:关闭其他标签页
CTRL-v:块操作,例如注释n行,可以进入块模式选取n行,shift+i,输入#,ESC
,cc:注释
,cu:取消注释
zc:折叠
zo:打开折叠
zM:关闭所有折叠
zR:打开所有折叠
zj:移动到下个折叠
zk:移动到上个折叠
:!ctags 文件名:生成tags
ctrl + ]:跳转到函数声明
ctrl + t:返回
7gg4<<:7到10行整体左移
[[:到函数头
[{:到块开始的位置
ctrl + o:跳转到上一个位置
ctrl + i:跳转到下一个位置
NerdTree
o:在已有窗口中打开文件、目录或书签,并跳到该窗口
go:在已有窗口中打开文件、目录或书签,但不跳到该窗口
t:在新Tab中打开选中文件/书签,并跳到新Tab
T:在新Tab中打开选中文件/书签,但不跳到新Tab
i:split一个新窗口中打开选中文件,并跳转到该窗口
gi:split一个新窗口中打开选中文件,但不跳到该窗口
s:vsplit一个新窗口中打开选中文件,并跳到该窗口
gs:vsplit一个新窗口中打开选中文件,但不跳到该窗口
x:收起当前打开目录
X:收起所有打开目录
e:以文件管理方式打开
p:跳转到当前根目录
P:跳转到上一级根目录
K:跳转到第一个子路径
J:跳转到最后一个子路径
<C-j> <C-k>:在同级目录中移动
u:设置上级目录问根目录
r:刷新光标所在目录
R:刷新当前根目录
f:打开/关闭文件过滤器
m a:新建文件
vim-easymotion
,,fa:查找包含字母a的位置
ctrlp
,f:模糊搜索最近打开的文件
,p:模糊搜索当前目录及子目录下所有文件
ctrl + j/k:上下选择
ctrl + x:在当前文件水平分屏打开文件
crtl + v:垂直分屏打开文件
ctrl + t:在tab中打开文件
,fu:搜索当前文件函数
,fU:搜索当前光标下单词对应的函数
tabular
:Tabularize /,:以,为基准对齐
vim-bookmarks
mm:添加删除mark
mi:添加删除mark,并添加备注
mn:下个mark
mp:上个mark
ma:显示所有的mark
mc:清除当前buffer的所有mark
mx:清除所有buffer的所有mark
python-mode
[[:跳转到前面的函数或类
]]:跳转到下一个函数或类
[m:跳转到前面的方法或类
]m:跳转到下一个方法或类
aC:选择一个类
iC:选择一个类的内部
aM:选择一个方法
iM:选择一个方法的内部
leader-r:运行
leader-b:插入断点1
2
3
4
5
6
7c:继续执行
l:查看当前行代码段
s:进入函数
r:执行代码直到从当前函数返回
q:退出
n:执行下一行
pp:打印变量名
tagbar
,tt:打开tagbar
ctrl+]:跳转到定义
ctrl+t:跳回上一层
vim-multiple-cursors
ctrl-n:开始并选中匹配项
ctrl-n:选中下一个匹配项
ctrl-x:跳过匹配项
ctrl-p:取消选中
alt-n:选择所有匹配项
vim-apathy
gf:跳转到光标下的头文件
[i,]i:显示光标下在文件或者引用文件中位置的第一行
[I,]I:与上个命令类似,不过会显示所有的匹配项
<C-W>i:与上个命令类似,不过会进行跳转
jedi-vim
<leader>g:跳转到方法
<leader>d:跳转到定义
scratch
gs: 打开scratch
vim-pythonsense
1 | class OneRing(object): -----------------------------+ |
]]:移动到下个类的开端
][:移动到当前类的结尾
[[:移动到当前类的开端
[]:移动到上个类的结尾
]m:移动到下个方法的开端
]M:移动到当前方法的结尾
[m:移动到当前方法的开端
[M:移动到上个方法的结尾
vim-choosewin
--:切换到另一个buffer
-1:切换到1号buffer
vim-move
alt hjkl:移动代码
vim-tradewinds
<c-w>gh: soft move left
<c-w>gj: soft move down
<c-w>gk: soft move up
<c-w>gl: soft move right
vimux
<leader>vp:运行指定语句在tmux pane中
<leader>vl:运行上一个命令
vimux-cargo
<leader>rc:cargo run
<leader>ra:cargo test all
<leader>rb:cargo test current file
<leader>rf:cargo test focus
vim in VS Code
gcc:注释一行
gc2j:注释两行
gd:跳转到注释