分屏显示
:split filename
->打开文件filename,分屏显示
Ctrl+w
->切换窗口
:q!
->强制退出没有保存
在文件中移动
hjkl
->左下上右
b
->指定行的单词开头
e
->指定行的单词末尾
G
->文件末尾
gg
->文件开头
L
->当前页末尾
0
->当前行头 or ^
->当前行头
$
->当前行尾
:n
->跳到第n行
n|
->跳到指定行的第n列
光标选择
V
->进入行可视化模式(可以配合hjkl
,甚至跨行88j
)
o
->光标位置切换
剪切、复制和粘贴
yy
->复制当前行
y$
->复制当前位置到行末
x
->删除当前光标下的字符
dw
->删除光标之后的单词剩余部分
d$
->删除光标之后的该行剩余部分
dd
->删除当前行
D
->删除当前位置到行末
大小写
Vu
->指定行转小写
VU
->指定行转大写
g~~
->指定行切换大小写
ggguG
->整个文本转小写
gggUG
->整个文本转大写
删除空白行
:g/^\s*$/d
:g 代表在全文档范围内
^代表行的开始
\s*代表空白字符
&代表行的结束
d代表删除
去除重复行
先sort排序,再去重
:sort
->/直接排序
:g/^\(.*\)$\n\1$/d
->去除重复行
查找指令:
/关键词
往下查找
?关键词
往上查找
n
下一个关键词
:set hls
打开高亮
:set nohls
关闭高亮
简单替换表达式
helloworld
hello
kangkanghello
:%s/hello/1/g
匹配所有带hello替换
:%s/\<hello/1/g
匹配XXXhello替换
:%s/hello\>/1/g
匹配helloXXX替换
:%s/hello/1/gc
每次替换都给提示确认(常用)
“%”范围前缀表示在所有行中执行替换。最后的”g”标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作,那么只要去掉”%”即可.
删除每行后面多余的空格
:%s/\s\+$//
“%”的作用域是整个文件,”substitute” 命令的匹配模式是
“\s\+$”。($)表示行末,(+)表示前面一项可以被匹配一次或多次,(\s)空格。替换命令的 “to”部分是空的:”//”
匹配重复性模式
“+” 表示前面一项可以被匹配一次或多次
“*” 表示前面一项可以被匹配零次或多次
/a*
->可匹配”a”、”aa”、”aaa”…或者””
/\(ab\)*
->可匹配”ab”、”abab”、”ababab”…或者””
/ab\+
->可避免空字符串,可匹配”ab”、”abb”、”abbb”
/abc\=
->匹配一个可选项”\=”,可匹配”ab”、”abc”
指定重复次数
匹配某一项的次数重复,使用”\{n,m}”
/ab\{3,5}
->可匹配 “abbb”、”abbbb”、”abbbbb”
模式 | 匹配次数 |
---|---|
\{,4} | 0,1,2,3 或 4 |
\{3,} | 3,4,5,无穷大 |
\{0,1} | 0 或 1,同 \= |
\{0,} | 0 或 更多,同 * |
\{1,} | 1 或 更多,同 \+ |
\{3} | 3 |
多选一匹配
或的运算符是”\|”
/when\(if\|while\|for\)
->可匹配”whenif”,”whenwhile”,”whenfor”
读写文件
:1,10 w outfile
->把1到10行的内容写入outfile文件
:1,10 w >> outfile
->把1到10行的内容追加到outfile文件
:r infile
->把infle文件的内容插入当前行以下
参考:
http://www.oschina.net/news/43167/130-essential-vim-commands
http://www.runoob.com/regexp/regexp-syntax.html
http://blog.chinaunix.net/uid-20732478-id-763411.html
作者: @nanphonfy
Email: nanphonfy (Nfzone) gmail.com 请将(Nfzone)换成@