总结一下自己经常用vim的一些技巧和操作,很基本的就不写了,很高深的还有待以后补充:
:%s/abc/abcc/gc
c表示询问
:$s/abc/abcc/ge
e表示即使整个文件没找到一个匹配的目标也不要报错
:.,$s/yes/no
.表示当前行,$表示最后一行。总体的语句表示从当前行到最后一样进行匹配
:s+one/two+one
or two+g
用+替换/
:s/good\|nice/handsome/g
把good或nice替换成handsome
:s/aaa/bbb/g4
只替换4行
:4,9s/\d\+/\=submatch(0)+1/
第4到9行的数字加一
:%s/^\w/\=toupper(submatch(0))/g
首字母大写
:%s/^/\=line(".").".
"/g
加行号
/^abc
转到以abc开始的行
ctrl+-> / ctrl + <-
一次移动一个单词
30+ / 30-
向前/向后移动30行
ctrl+o / ctrl_i
跳到更老的位置/跳到更新的位置
{
跳到上一段
} 跳到下一段
‘“
跳到上次关闭文件时,在NOMAL模式下的光标所在行
’^
跳到上次关闭文件时,在INSERT模式下的光标所在行
qa
开始记录宏(这里的a可以用任意一个字母代替)
q
结束宏记录
@a
执行名字为a的宏
ma
标记此行为a
‘a
移到标记为a的行
mA/'A
可以跨文件进行标记
Insert模式下,ctrl+n / ctrl+p
补全
ctrl+a
重复上次在Insert模式下的动作
Insert模式下,ctrl+y / ctrl+e
重复上一行/下一行光标处的字符
:iab
xl xulei
当键入xl(空格)时,会被替换成xulei
ctrl+x ctrl+n
在文件中补全以前出现过的单词
ctrl+x
ctrl+p
在文件中补全以前出现过的单词
ctrl+x ctrl+l
在文件中补全以前出现过的一行
ctrl+x
ctrl+f
补全文件名
ctrl+x ctrl+k
单词补全
ctrl+x ctrl+t
同义词补全
用v选中多行, 然后 !sort
可以实现排序
g ctrl+G(先按g然后按ctrl+G)
统计字数(或先用v选中部分需要统计的文字)
将光标移到一个函数上,K(大写)
将自动man此函数
在一个vim文件中:grep abc *
将匹配到所有包好abc的文件 :cn下一个 :cp上一个
:cl文件列表
vim `grep -l abc *`
打开包含abc的所有文件
ctrl+c=esc
:history
命令记录
q:
打开命令行历史窗口
q/
打开查找历史窗口
:w filename
另存为
:1,3w filename
1-3行另存为
Insert模式下,ctrl+w
删除前一个单词
Insert模式下,ctrl+u
删除此行光标前所有单词
:set showmatch
当键入if(i>0)的)的时候,光标会跳到(处停留1/10秒,再回来
:set cindent shiftwidth=4
设置缩进
=a{
调整{}之间的缩进格式
gu
变小写
gU
变大写
光标定位在数字上ctrl+a
增1