您的位置:首页 > 运维架构 > Linux

【Linux VI】 个人小结

2014-04-10 21:06 267 查看
1. Vi简介
a) Vi存在三种模式:指令模式和插入模式,底行模式
  1) 命令模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者到 底行模式。ESC:退回到指令模式。
  2) 插入模式:只有在插入模式下,才可以做文字编辑,按「ESC」键回到命令模式。
  3) 底行模式:将文件保存或退出vi,也可设置编辑环境,如寻找字符串、列出行号。
b) 打开文件
1) vi filename :打开或新建文件,并将光标置于第一行首
2) vi +n filename :打开文件,并将光标置于第n行首
3) vi + filename :打开文件,并将光标置于最后一行首
4) vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
5) vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
6) vi filename....filename :打开多个文件,依次进行编辑

2. 指令模式:
  a) 进入插入模式
1) 输入a:在当前位置之后插入字符
2) 输入A:在光标所在列最后面的地方开始新增资料
3) 输入i:在当前位置之前插入字符 insert
4) 输入I:从光标所在列的最前面非空白字前开始插入
5) 输入o:在光标所在列下一列插入行并进入插入模式 open
6) 输入O:在光标所在列上一列插入行并进入插入模式
b) 移动光标操作
  1) 方向键:
h:左移 (或backspace)
j:下移 (或Enter)
k:上移
l:右移 (或space)
# + (上面四个键或者键盘上的方向键):向对应方向移动#个字符或者段落
H:移动到视图的第一列 head
M:移动到视图的中间列 middle
L:移动到视图的最后列 last
2) 字间移动
b或B:移动到上一个字的第一个字母 before
w或W:移动到下一个字的第一个字母 walk
e或E:移动到下一个字的最后一个字母 end
3) 行,段落间移动
  0:移动到光标所在列的列首
^:移动到本行第一个不是blank字符的位置
$:移动到光标所在列的列尾
g_
:移动到本行最后一个不是blank字符的位置
#-:移动到一个#列前的第一个非空字符前
#+:移动到一个#列后的第一个非空字符前
gg:移动到文档首行
G:移动到文档末尾(或者双击“]”键,反之回到文章开头双击”[”)
#G:移动到第#列
#(:移到#个句子句首
#):移到#个句子句尾
#{:移到#个段落开头
#}:移到#个段落结尾
4) 翻页
Ctrl+ d:向下半页 down
Ctrl+ f:向下一页 forward
Ctrl+ u:向上半页 up
Ctrl+ b:向上一页 backward
c) 删除
1) x:删除光标所在一个字符,从左往右
2) X:删除光标所在的前面一个字符,从右往左
3) dw:删除当前光标后的一个单词
4) dd:删除光标所在的列(#dd:删除光标所在行开始的#行);d#G:删除第几行
5) s:删除光标所在资源,并进入输入模式
6) S:删除光标所在的列的内容,并进入输入模式
d) 修改
1) cw:更改光标所在处的字到字尾处(c#w:更改#个字);,c^删除一行到行首;c$删除一行到行尾
2) cc:删除光标所在的列的内容,并进入输入模式
3) r:修改光标所在资源,按下r后,接着修改对应的字符,只能进行一次。
4) R:进入取替换状态,新增文字会覆盖原先文字,知道按下ESC回到指令模式为止
5) ~:改变字符的大小状态。
6) backspace:替换光标所在处之前的字符,点击n次,替换光标之前的字符
7)  J:将光标所在行与下一行的数据结合成一行
  e) 复制
yw:复制光标所在之处到字尾的字符 yank
yy:复制光标所在行
f) 粘贴
  P:放置复制内容 put
g) 恢复操作
1) u:恢复刚才操作
2) Ctrl + r:恢复undo -> redo
h) 其他
1) Ctrl+ g:列出光标所在行的行号
2) .(小数的):重复上一次命令

3 底行模式,命令模式下输入:进入
a) 存盘退出相关
1) :q:直接退出,文件有新的变化,vi会提示保存文件
2) :q!:不想保存改变后的文件,强制退出。
3) :wq:存盘退出 (后面可接文件名)
4) :x:存盘退出
5) :w:保存文件 (后面可接文件名,列:20,59w /tmp/newfile = :saveas + file)
b) 显示信息
:set nu/nonu:列出文件中每行的行号
c) :#:跳到文件的第#行
d) :?关键字:从光标位置往前查想要的关键字,按n会重复同方向查找,N反方向重复查找
e) :/关键字:从光标位置往后查想要的关键字,按n会重复同方向查找,N反方向重复查找
f) 替换&拷贝
:n1,n2 s/p1/p2/g:将第n1至n2行(%为所有)中所有p1均用p2贴换 (不指定行号为当前行;g->global,不指定,为第一个。而p1为^,指行首;p1为$,指行尾。)
: g/p1/s//p2/g:将文件中所有p1均用p2替换
:n1, n2 co n3:将n1行到n2行之间的内容复制到第n3行下
:n1, n2 m n3:将n1行到n2行之间的内容剪切至n3行下
“:%s#/usr/bin#/bin#g”:可以把文件中所有路径/usr/bin换成/bin。也可以使用命令”:%s//usr/bin//bin/g”实现,其中””是转义字符,表明其后的“/”字符是具有实际意义的字符,不是分隔符。
g) 同时打开多个文件 (1.txt 2.txt 3.txt)
:args:显示多文件信息(会在末行提示当前打开了哪些档) are globals
:next:切换到下一个文件
:prev:切换到上一个文件
:first:定位首文件
:last:定位尾文件
Ctrl + ^:快速切换到编辑器中切换前的文件
:e:在当前窗口打开新的文件
:bn
/
:bp:在打开的文件中切换

h)  其他
: !command:执行shell命令command
: n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入
: r!command:将命令command的输出结果放到当前行
:r [filename]:在编辑的数据中,读入另一个论据的数据,亦即将filename这个文件内容加到光标所在行的后面。

补充:
#+命令:一次实现#次名利,如#x:删除光标所在后面的#个字符。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: