Evernote上的笔记丢了, 只有在CSDN博客上找到的这篇未完成品.
operator + text-object的操作方式,ciw剪切一个单词, dip删除一段。
命令计数:数字+命令,重复N次操作,例如:
3k 向上移动3行,
3x
tags移动:JKHL
快速移动,对比terminal快捷键:
移动到上一个单词首 b
移动到下一个单词首 w,移动3个单词 3w
<---- b w---->
w/b是在单词首部移动,在单词尾部移动为ge/e
<---- ge e---->
如果是大写的B,W,gE,E,则只将“空格”作为单词分隔符,例如'gloal.member'被当作一个完整的词。
^ 光标移动到行开头
$ 光标移动到行结尾
fx 光标移动到下一个x处,3fx移动到第三个x处
Fx 光标移动到前面的x处
tx,
Tx类似,移动到x之前
ma 标记当前行, 标签可以是a-z任意字符。
ma 标记当前行, 标签可以是a-z任意字符。
`a
跳转到a标签。
标签跳转 C-]
跳转回 C-O 或 C-T 或 ``
标签跳转 C-]
跳转回 C-O 或 C-T 或 ``
Ctrl + 左/右键
也可以跳转/返回
跳转到匹配的括号
%
移动到文件首 gg
有趣的命令 9999k 作用也是移动到文件首
移动到文件尾 G
跳转到第33行 33G
或者输入 :33 也可以跳转
%液动, 例如移动到文档1/3处 ,直接输入 33%
zz 将当前光标所在的行移到屏幕中间 ,ps大写的 ZZ是保存&退出文档。
zt 当前光标所在的行移到屏幕顶,助记t=top 。
zb 当前光标所在的行移到屏幕底,助记b=bottom 。
H, M, L分别为移动到文档的head, middle, last的位置。
C-F , C-B 向前向后翻页
tags 编辑
移动到文件首 gg
有趣的命令 9999k 作用也是移动到文件首
移动到文件尾 G
跳转到第33行 33G
或者输入 :33 也可以跳转
%液动, 例如移动到文档1/3处 ,直接输入 33%
zz 将当前光标所在的行移到屏幕中间 ,ps大写的 ZZ是保存&退出文档。
zt 当前光标所在的行移到屏幕顶,助记t=top 。
zb 当前光标所在的行移到屏幕底,助记b=bottom 。
H, M, L分别为移动到文档的head, middle, last的位置。
C-F , C-B 向前向后翻页
ctrl+f 向前移动一个字符
ctrl+b 向后移动一个字符
alt+f 向前移动一个单词
alt+b 向后移动一个单词
ctrl+a 移动到当前行首
ctrl+e 移动到当前行尾
|
tags 编辑
c,d和x删除的字符仍然存在寄存器中,用p可以粘贴。
c = 替换(change),删除文本并进入插入模式;
d =删除(delete),一般组合使用;
y =复制(yank),
p = 粘贴(paste);
x = 删除字符;
删除,剪切,复制一行=
cc,dd,yy
删除,剪切,复制多行=
3cc,4dd,5yy
删除,剪切,复制到行尾=
c$,d$,y$
或者大写C, D, Y, 也是到行尾.
删除,剪切,复制到行开头=
c^,d^,y^ 或者
c0,d0,y0
从光标开始, 删除,剪切,复制到单词尾=
cw,dw,yw
删除,剪切,复制整个单词=
caw,daw,yaw
注意区别yw和yaw, 例如光标在"test" 的e位置, yaw复制整个单词, yw只复制est。
删除换行符(两行合并为一行): J
撤销上次操作(还原): u
反撤销(重做): C-R
反撤销(重做): C-R
撤销对一行的所有操作(还原一行): U,第二次按U会撤销上一次U的操作。
只用
u和
C-R即可回到任何一个操作状态。
可视模式下的U/u是大小写转换。
o或O在当前行上或下插入文本
光标前插入 = i
光标后插入 = a
光标前插入 = i
光标后插入 = a
行首插入 = I
行尾插入 = A
在当前行的下面另起一行,并进入插入状态 o
在当前行的前面另起一行,并进入插入状态 O
在当前行的下面另起一行,并进入插入状态 o
在当前行的前面另起一行,并进入插入状态 O
CTRL-T is working with tags stack CTRL-O is working with jumplist Tag stack and jumplist are different list in vim, but they might have same items when you jumping through tags (eg. using CTRL-]) |
tags 外部程序粘贴/剪切/复制
GVIM的
“+号寄存器”可以与外部程序复制/粘贴:
复制 "+y
粘贴 "+p
剪切 "+x
注: 以上快捷键在命令可视模式/模式有效, 先按双引号进入寄存器模式,再按加号,然后按y/p/x
如果在插入模式, 先按ctrl+R进入寄存器模式(会出现"号), 再按对应的寄存器编号,系统共享寄存器编号是+号.
在VIM正常模式下,ctrl+r 是重做。
复制 "+y
粘贴 "+p
剪切 "+x
注: 以上快捷键在命令可视模式/模式有效, 先按双引号进入寄存器模式,再按加号,然后按y/p/x
如果在插入模式, 先按ctrl+R进入寄存器模式(会出现"号), 再按对应的寄存器编号,系统共享寄存器编号是+号.
在VIM正常模式下,ctrl+r 是重做。
tags 多文件buff(缓冲区)操作
:edit filename 编辑文件;
:e main.c 同上;
:ls 列出所有buffer;
:b2 关闭buff=2的文件;
:bn
删除文件缓冲(关闭文件)。
zz,
ZZ与
q!的用法:
zz 将编辑行置于屏幕中间。
ZZ 保存退出。
:q! 不保存退出
:wq 保存退出
tags 搜索和替换
:set ignorecase
:set noignorecase
/include 正向搜索, n下一个, N上一个
?include 反向搜索
设置非循环搜索 :set nowrapscan
/\<the\> 全词匹配搜索单词"the",助记开头 \<,结尾 \>
#向后搜索匹配单词, *向前搜索匹配单词, gd类似*号的功能.
tags 正则搜索
/^the 搜索the开头的行(针对行,而非单词)
/here$ 搜索here结尾的行
点号匹配任何单字符,如果要搜索的内容本身包含点号,则用\.代替,比如:
/the. 搜索"the"匹配的内容
/the\. 搜索"the."匹配的内容
tags 可视模式
shift + v
: 行选择模式
大写V: 同上
所选择区域转换为大写
U,转换为小写
u
x和d在可视模式都是删除
>和<在可视模式为右移,左移
tags 常用组合键
删除光标到行结尾 /开头= d$ d^
复制光标到行结尾 /开头= y$ y^
复制单词= yaw
剪切单词= daw
tags 代码折叠
可以zf进行折叠, 用zo打开折叠,也可以方向键向右打开折叠,zc 关闭折叠.
tags 自定义快捷键
inoremap ii <ESC> 进入insert模式
双击进入insert模式;
insert模式下, 左键进入command模式;
拖拽可视模式;
map <C-c> "+y "加号寄存器-复制
map <C-v> "+p "加号寄存器-复制
map <C-x> "+x "加号寄存器-复制
map <C-s> :w<cr> " 保存
map <C-v> "+p "加号寄存器-复制
map <C-x> "+x "加号寄存器-复制
map <C-s> :w<cr> " 保存
:cs find s xxx
:cs find g xxx 查找函数定义,类似tags的ctrl+]
:cs find t xxx 全局查找字符串
:cs find c xxx 类似egrep
:cs find c xxx 查找函数所有调用处
注, cscope的搜索不能处于visual选择模式