vi 初级+高级 使用
--------------->写在前面:
--->前后用linux 的centos也有一段时间了。接触vi 也有一段时间了,当我们在整真正的开始用这个软件之后,刚开始的却体会不到他的可用之处,包括到现在也只能说勉强能用吧。
--->为了以后查阅,所以今天也参考了一些资料,做一个小总结吧。可以给自己做复习希望可以帮到一些人;
『说明』:1.大家阅读的时候一定要注意大小写哦;
        2.命令的"n"是代表使用时具体的数字哦;
--------------->初级应用:
*******************************************************
a //在文本的后面添加文本
i //在文本的左边添加文本
A //在当前行的末端添加文本
I //在当前行的首端添加文本
O //在当前行的上面添加文本
o //在当前行的下面添加文本
R //替换当前及之后的文本
J //合并光标及下一行为一行
*******************************************************
]p //有缩进的粘贴
x //删除光标所在字符
nx //删除之后的n个字符
dd //删除当前行
ndd //删除之后的n行
d]] //删除至文档末
dw //删除到光标所在词词尾部( dW ? db ? de ?)
d) //删除到语句的末尾(d( ?  d{ ? d} ?)
d fc 删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括该字符)之间的内容
d tc 删除当前行直到下一个字符“ c”所出现位置之间的内容
D 删除到某一行的结尾
dL 删除直到屏幕上最后一行的内容(dM ? dH ?)
u //撤销对前一步的操作
U //撤销对当前行的所有操作
cc //删除当前行并进入编辑模式
cw //........字.....
c$ //删除到行末的字符,进入编辑模式
s //删除当前字符、进入编辑模式
S //删除当前行,并进入编辑模式
*******************************************************
/str //向下搜索str
?str //向上搜索str
n //向下搜索前一个搜索动作
N //向上...
*******************************************************
w //跳到下一个词首
W //跳到下一个词首、长跳
e //跳到下一个词尾
E //跳到下一个词尾、长跳
b //跳到上一个词
B //跳到上一个词、长跳
0 //跳到第一个字符(不管缩进)
^ //跳到行首的第一个字符
0 //跳到行首(这是真正的行首哦)
$ //跳到行尾
gg //跳到第一行
n+ //向下跳n行
n- //向上...
nG //跳到第n行
*******************************************************
H //移动光标到屏幕第一行
M //移动光标到屏幕的中间
L //................最后一行
*******************************************************
set nu //显示行号
set nonu //取消显示行号
*******************************************************
yy //复制当前
yG //拷贝至文档末(那"ygg"呢?"y]]"? 动手测试一下吧)
ayy //将当前行复制到a缓冲区(a只是一个标识哦)
nyy //将当前行及向下n行复制到缓冲区
anyy //同上
yw //复制从光标开始到词尾
nyw //复制n个词缓存
y^ //复制从光标到行首的字符
y$ //复制从光标到行末的字符
p //将剪切板的内容复制到光标后
P //将剪切板的内容复制到光标前
ap //粘贴a缓存的内容到光标后
aP //粘贴a缓存的内容到光标前
*******************************************************
:s/old/new/ //替换当前行的第一个"old"为"new"
:s/old/new/g //替换当前行的所有"old"为"new"
:n,m s/old/new/g //替换n-m行的所有"old"为"new"
:%s/old/new/g //替换所有的"old"为"new"
*******************************************************
:e otherfilename //编辑其他文件的文件名
*******************************************************
:tabe fn //在新的table中编辑fn文件
gt //切换到上一标签
gT //切换到下一标签
:tabr //切换到第一个标签
:tabl //切换到最后一个标签
*******************************************************
ctrl+w s(:sp) //水平切分窗
ctrl+w v(:vsp) //垂直切分
ctrl+w w //切换窗口
ctrl+w q //退出当前窗口
:(vertical) res num //把当前窗口调整为num(列)行
:(vertical) res +(-)num 把当前窗口调整+(-)num(列)行
*******************************************************
ctrl+f //想上翻一页
ctrl+b //向下翻一页
*******************************************************
% //跳到与当前括号匹配的括号 //如当前在{, 则跳到}
******************************************************
ZZ  //命令模式下,保存并退出
ctrl p //最近的输入
:r!command //将命令command的输出放到当前行
:ls //展示打开的文档
:n //在打开的多个文件之间切换到下一个文件(比如我们可以用vi file1
       file2,这时切换的时候就要用:n了)
:N //在打开的多个文件之间切换到上一个文件
:new //打开新的窗口进行编辑
:n //跳至下一个文件(:n filename)
******************************************************
:n1,n2 co n3 //将n1-n2的内容复制到n3之下
:n1,n2 m n3 //将n1-n2的内容移动n3之下
:n1,n2 d //将n1-n2的内容删除
*** 如果不指定n1,n2则对整个文档操作
******************************************************
:Ex 开启目录浏览器
:ls 显示当前buffer的情况
:sh 从vi->shell (从shell 返回时用exit);
表示直接跳至filename)

--------------->高级应用:
------>到这里应该可以上手了,关键还是需要多多练习:)
------>在这里给大家提醒一点(大家在使用的时候一定要注意思考,因为很多东西都是相似的,只要知道一点,很多东西都解决了.就想前面看视频有一位老师说过“触类旁通")
******************************************************
:m,ns/^/add_str/g //给m-n的行后添加字符串(那"m,ns/$/add_str/g"?
:g/^/m0/  //将文档的所有行倒顺( 那"m,ng/^/m0" ?  "m,ng/$/m0" ?)
:ab string strings  //用string 表示strings
k:上移 nk 上移n行
j:下移 nj 下移n行
在当前屏幕中
   H 跳到第一行
   M 跳到中间一行
   L 跳到最后一行
******************************************************
:g/s1/s/s2/s3/g //第一个g表示对每一个包括s1的行都进行替换,第二个g表示对每一行包括s1的行所有的s2都用s3替换
               s表示替换,s2是要被替换的字符串,他可以和s1相同(如果相同的话用//代替),s3是替换字符串
******************************************************
cat filename |tr -d '\015' >newfile
:$s/^M//g
在sed 's/string1/string2/gp' file1 > file2 //“unix命令行”下将一个文件的某字符串用另一个串换掉
******************************************************
最后,大家应该听说vi常用于配置文件和code,为了把能更好的使用vi,把配置文件写个大家吧
set tabstop=4 //设置tab为四个字符
set softtabstop=4
set shiftwidth=4
set autoindent //设置子同对齐
set cindent    //设置c语言的对齐
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
set nu
set hlsearch   //高亮查找
syntax on