"*yy
:将当前行的内容复制到剪贴板
"*p
:将剪贴板的内容粘贴到当前光标所在位置
:jumps
查看可以跳转的位置,
ctrl+O
:跳转到上一次位置,
Tab或ctrl+I
:下向跳转
注:重点在于a与i的不同
dw
:删除一个单词,从光标所在位置到单词的结尾
daw
:删除一个单词文本,只要光标在单词上,就会删除这个单词;delete a word,向前会删除到前一个单词的结尾处,向后会删除到这个下一下单词的开始处;
diw
:删除一个单词文本,只删除一个单词,不包含其它字符
3daw
:执行3次删除一个单词
d3aw
:删除3个单词
dis
:删除一个句子,直接到句子结尾
das
:删除一个句子,直接到下一个句子的开头
vis或vas
:可以很好的查看到效果
~
:将一个字符变成大写
:edit other.file
:打开其它文件
:next
:下一个文件
:next!
:不保存当前文件,强制进入下一个文件
:wnext
:保存当前文件并打开下一个文件
:args
:显示当前编辑的文件名
:args file1 file2
:重新定义顺序
:previous
:前一个文件
:last
:最后一个文件
:first
:第一个文件
vim -R 文件名
:以只读的方式打开一个文件
:saveas 文件名
:另存为一个文件
:split
:水平切割窗口
:new
:水平新建窗口
:colse
:关闭当前窗口
:only
:只保留当前窗口,关闭其它窗口
:3split 文件名
:水平切割文件并显示3行内容
ctrl+w +
:调整窗口大小(增加一行)
ctrl+w -
:调整窗口大小(减小一行)
{height} ctrl+w _
:设置窗口大小为height
:vsplit
:垂直切割窗口
:vertical new
:垂直新建窗口
ctrl+W H
:移动窗口到左边
ctrl+w J
:移动窗口到底部
ctrl+w L
:移动窗口到右边
ctrl+ K
:移动窗口到上面
:qall
:退出所有窗口
:wall
:保存所有窗口中的内容
:wqall
:保存所有窗口中的内容并退出
:qall!
:强制退出窗口
使用
q{register}
命令来开始记录命令,注册器为a-z;然后输入命令,以q
来进行结束记录;使用@{register}
来调用命令;如:
qa ^ i#include " <ESC> $" <ESC> j q 3@a
.
:重复先前的更改(repeat the preceding change ),最后一次更改
@@
:重复上一次执行的记录命令。
q{upper reister}
:追加到某个寄存器中,寄存器大写为追加命令
格式::[rangs]substitute/ffrom/to/[flags]
注: substitute命令可以简写为s
%
:所有的行
:s
:当前行
范围取值(flags):
g
匹配所有c
是否进行确认p
打印{number}, {number}
,如:1,5s/this/that/g
:54s/Persident/Fool
:.writer otherfile
将当前行写一个文件中:.,$s/yes/no
%
相当于:1,$
使用匹配模式作为范围
:?^Chapter?,/^Chapter/s=grey=gray=g
:以当前行为准向后查找?^Chapter?
,到向前查询/^Chapter/
的范围进行替换将grey
替换为gray
。其中=
为替换的分隔符添加和减少范围
/Chapter/-1
:使用搜索模式,对匹配行的上一行进行更改/Chapter/+2
:使用搜索模式,对匹配行的下两行进行更改.+3,$-5
:从当前行的下3行开始,到最后的前5行结束使用标记
使用
mt
来标记产行,使用mb
来标记底部
:'t, 'b
**使用视图和范围(Visual mode and ranges) **
使用视图进行文本的选择,然后输入
:
,然后你就会看到:'<,'>
,你就可以在这个范围进行替换了,其中'>
标记了视图的起始位置,'<
标记了视图的结尾处,
多行(a number of lines)
:.,+4
:当前行向下4行,一共五行的内容进行匹配格式:
[range]global/{pattern}{command}
其中global
可以简写为g
;与:s
不同的是:g
是在没有范围的一行上工作。(This is different from ":s", which works on one line without a range. )
:g+//+s/foobar/barfoo/g
:全部替换,将以//开头的行中的foobar替换为barfooctrl+V
:进行视图模式
插入文本
I
:在当前字母前进行插入
A
:在当前字母后进行插入
更改文本
c
:删除一个字符然后进行插入模式
C
:从当前光标删除到结尾,然后进行插入模式
~
:转换大小写
U
:转换为大写
u
:转换为小写
替换字符
r
:替换单个字符
缩进
>
:向左缩进
<
:向右缩进
合并行
J
:合并行
读取部分到文件中
:read file1
:读取file1的内容到当前文件中,
:$r file1
:将file1中的最后一行读取到当前文件中
:n,nr file1
:范围的读取file1到当前文件中
写入部分到文件中
:.,$write file2
:从光标当前行到最结尾写到file2中
:.,$write! file2
:强制写入到file2中,如果file2文件存在的话
追加到某个文件中
:.write >> file3
:将当前行追加到file3文件中
:set textwidth=72
设置文本宽度为72
gqap
:格式化一个段落,gq
为操作符,ap
为一段落
gqG
:从当前行到结尾进行格式化
gUw
:将一个单词转换为大写
guw
:将一个单词转换为小写
g~
:将大写转换为小写,小写转换为大写
gugu或guu
:将当前行转换为小写
gUgU或gUU
:将当前行转换为大写
g~~
:将当前中的大写转换为小写,小写转换为大写
格式::!{motion}{program}
,其中!
是告诉vim启动过滤操作,{motion}
:文本的范围,{program}
:需要执行的外部命令
!5Gsort
:对光标所在行到光标以下4行进行排序操作
!!date
:将当前的内容替换为date
命令执行的结果
读取命令输出
:r!ls
: 读取ls内容,写到第当前行
:0r date -u
:将date -u
的内容写入到第1行
写出一个命令的结果
:w !wc
重绘屏幕
ctrl+L