Stay weird. Stay different.

0%

vim备忘

vim备忘

第一讲

hjkl:移动 hjkl

vim 文件名:打开文件,如果此文件不存在则会新建文件

:q!:退出编辑不保存

:wq:保存并退出

x:删除当前光标下的字

X:删除当前光标前的字

i:光标前插入

I:行首插入

a:光标后插入

A:行尾插入

第二讲

dw:从光标处删除至下个单词的开头 例入光标在isiit is my life->it my life

de:从光标处删除至本单词的末尾 例入光标在isiit is my life->it my life,my前有两个空格

d$:从光标处删除至行尾 例入光标在isiit is my life->it

其中d是操作符w,e,$是动作

d:删除操作

w:从光标到下个单词的开头

e:从光标到本单词的末尾

$:从光标到行尾

可以在动作前加入数组表示重复次数

d2w:从光标处删除至第三个单词的开头 例入光标在isiit is my life->it life

dd:删除当前行

2dd:删除当前行和下一行

u:撤销

U:整行操作撤销

CTRL-R:撤销撤销,还原之前的操作

dap:删除一个段落

di(:删除括号内的内容,可以是(,[,{

da(:删除括号及内部的内容,可以是(,[,{

dit:清除标签内部的内容

dat:清除整个标签

df字母或符号:向后清除到字母或者符号的内容

dF字母或符号:向前清除到字母或者符号的内容

dt字母或符号:向后清除到字母或符号之前的内容

dT字母或符号:向前清除到字母或符号之后的内容

第三讲

p:将删除的内容置入光标之后,如果是行的话置入下一行

r:替换光标当前字符,先输入r然后输入替换内容

ce:修改直到单词末尾并进入编辑状态 例入光标在isiit 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:替换oldnew,只会替换第一个匹配的结果

:s/old/new/g:替换oldnew,圈行匹配替换

:#,#s/old/new/g:指定行匹配替换,其中#,#为起始行号和结束行号

%s/old/new/g:全文匹配替换

%s/old/new/gc:全文匹配替换,并且提示是否替换

第五讲

:!:可以在:!后面接外部命令,例如:!ls与在shellls的效果一致

: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
7
c:继续执行
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class OneRing(object):             -----------------------------+
--------------------+ |
def __init__(self): | |
print("One ring to ...") | |
| |
def rule_them_all(self): | |
self.find_them() | |
| |
def find_them(self): ------------+ | |
a = [3, 7, 9, 1] ----+ | | |
self.bring_them(a) |- `if` |- `af` |- `ic` | - `ac`
self.bind_them("darkness") ----+ | | |
------------+ | |
def bring_them_all(self, a): | |
self.bind_them(a, "#000") | |
| |
def bind_them(self, a, c): | |
print("shadows lie.") --------------------+ |
-----------------------------+

]]:移动到下个类的开端

][:移动到当前类的结尾

[[:移动到当前类的开端

[]:移动到上个类的结尾

]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:跳转到注释

cheat sheet