`
luckyclouds
  • 浏览: 109308 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

vi随笔

阅读更多
vi是unix/linux用的比较多了命令,现摘录一些常用操作记录如下
1.进入vi命令
vi filename --打开或新建文件,并将光标置于第一行首
vi +n filename --打开文件,并将光标置于第n行首
vi + filename --打开文件,并将光标置于最后一行首
vi -r filename --在上次用vi编辑时系统发生崩溃,恢复filename


2.移动光标命令

k      --上移一行(命令前可以加数字,比如5k,光标上移5行)
j      --下移一行
h      --左移一个字符
l      --右移一个字符
注:k,j,h,l这四个键刚好是右手放键盘的四个键,非常顺手方便。

ctrl+p --上移一行
ctrl+n --下移一行
enter  --下移一行
space  --右移一个字符

w或者W  --右移一个字至字首
e或者E  --右移一个字至字尾
b或者B  --左移一个字至字首
注:w,e,b这三个键也刚好是左放键盘的三个键,顺手方便的。

(   --移到句首
)   --移到句尾

{   --移到段落开头
}   --移到段落结尾

0   --移到当前行首
^   --移到当前行首
$   --移到当前行尾
nG  --移到第n行首
G   --移到最后行首
n+  --下移n行
n-  --上移n行
n$  --移至第n行尾
H   --移至屏幕顶行
M   --移至屏幕中间行
L   --移至屏幕最后行

ctrl+u  --向文件首翻半屏
ctrl+d  --向文件尾翻半屏
ctrl+b  --向文件首翻一屏
ctrl+f  --向文件尾翻一屏

3.vi编辑命令

i  --在光标前
I  --在当前行首
a  --光标后
A  --在当前行尾
o  --在当前行之下新开一行
O  --在当前行之上新开一行
r  --替换当前字符
R  --替换当前字符及其后的字符,直至按ESC键
s  --从当前光标位置处开始,以输入的文本替代指定数目的字符
S  --删除指定数目的行,并以所输入文本代替之
J  --把下一行的数据连接到本行之后
ncw或nCW或者cnw  --修改指定数目的字
nCC --修改指定数目的行 删除命令
ndw或ndW  --删除光标处开始及其后的n-1个字
d0  --删至行首
d$  --删至行尾
ndd --删除当前行及其后n-1行
d tc --删除当前行直到下一个字符“ c”所出现位置之间的内容
d fc --删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括
该字符)之间的内容
d /t e x t --删除从文本中出现“ t e x t”中所指定字样的位置,一直向前直到下一个该字样所出现的
位置(但不包括该字样)之间的内容
d L --删除直到屏幕上最后一行的内容
d H --删除直到屏幕上第一行的内容
d G --删除直到工作缓存区结尾的内容
d 1 G --删除直到工作缓存区开始的内容

x或X  --删除一个字符,x删除光标后的,而X删除光标前的
xp   --交换两个字符的位置
ddp  --交换两行
u  --取消操作
/string、?string  --从光标所在处向后或向前查找相应的字符串的命令
行命令方式
:n1,n2 co n3  --将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 mo n3  --将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d      --将n1行到n2行之间的内容删除
:s/s1/s2/g    --将当前行所有s1替换为s2
:%s/s1/s2/g   --将整个文件中的s1替换为s2
:n1,n2s/p1/p2/g      --将第n1至n2行中所有p1均用p2替代
:!command  --暂时退出vi并执行shell指令,执行完毕后再回到vi
:n1,n2 w!command  --将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n
1,n2,则表示将整个文件内容作为command的输入
:wq或者(:x/:zz)   --保存当前文件并退出
:sh   --暂时退出vi到系统下,结束时按Ctrl + d则回到vi
:set all  --显示所有vi选项
:set nu   --显示行号
:set nonu --不显示行号
:set ts=4 --设置tab键为4个空格长度
寄存器操作
"?nyy  --将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyw  --将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyl  --将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
"?p    --取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
ndd    --将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中

:%g/^$/d 删除空行
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics