Vi技巧小结

初阶篇

1.选择(按行、按列)

v 字符选择,将游标经过的地方反白选择!

V 行选择,将游标经过的地方反白选择!

Ctrl+v 以光标当前位置及当前行首为矩形顶边,移动光标时,如果是左右移动,则改变顶边的宽度,如果是上下移动则是改变侧边的高度

 

2.剪切

dd

剪切当前行

ndd

剪切n

dw

从光标处剪切至一个单子/单词的末尾,包括空格

de

从光标处剪切至一个单子/单词的末尾,不包括空格

d$

从当前光标剪切到行末

d0

从当前光标位置(不包括光标位置)剪切之行首

d3l

从光标位置(包括光标位置)向右剪切3个字符

d5G

将当前行(包括当前行)至第5行(不包括它)剪切

d3B

从当前光标位置(不包括光标位置)反向剪切3个单词

dH

剪切从当前行至所显示屏幕顶行的全部行

dM

剪切从当前行至命令M所指定行的全部行

dL

剪切从当前行至所显示屏幕底的全部行

dG

删除当前行至末尾 

dl

删除当前字符(与x命令功能相同)

d0 

删除到某一行的开始位置

d^ 

删除到某一行的第一个字符位置(不包括空格或TA B字符)

dw 

删除到某个单词的结尾位置

d3w

删除到第三个单词的结尾位置

db

删除到某个单词的开始位置

dw

删除到某个以空格作为分隔符的单词的结尾位置

dW

删除到某个以空格作为分隔符的单词的开始位置

d7B 

删除到前面7个以空格作为分隔符的单词的开始位置

d)

删除到某个语句的结尾位置

d4)

删除到第四个语句的结尾位置

d(

删除到某个语句的开始位置

d} 

删除到某个段落的结尾位置

d{ 

删除到某个段落的开始位置

d7{

删除到当前段落起始位置之前的第7个段落位置

dd

删除当前行

d /text

删除从文本中出现“ t e x t”中所指定字样的位置,一直向前直到下一个该字样所出现的位置(但不包括该字样)之间的内容

d /fc

删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括该字符)之间的内容

d tc

删除当前行直到下一个字符“ c”所出现位置之间的内容

D

删除到某一行的结尾

d $

删除到某一行的结尾

5dd

删除从当前行所开始的5行内容

dL

删除直到屏幕上最后一行的内容

dH

删除直到屏幕上第一行的内容

dG

删除直到工作缓存区结尾的内容

d1G 

删除直到工作缓存区开始的内容


3.修改

cl

更改当前字符

cw 

修改到某个单词的结尾位置

c3w

修改到第三个单词的结尾位置

cb

修改到某个单词的开始位置

cW

修改到某个以空格作为分隔符的单词的结尾位置

cB

修改到某个以空格作为分隔符的单词的开始位置

c7B

修改到前面7个以空格作为分隔符的单词的开始位置

c0

修改到某行的结尾位置

c)

修改到某个语句的结尾位置

c4)

修改到第四个语句的结尾位置

c(

修改到某个语句的开始位置

c}

修改到某个段落的结尾位置

c{ 

修改到某个段落的开始位置

c7{

修改到当前段落起始位置之前的第7个段落位置

c tc 

修改当前行直到下一个字符c所出现位置之间的内容

C

修改到某一行的结尾

cc

修改当前行

5cc

修改从当前行所开始的5行内容

重复上一次修改!


4.复制

yy

复制当前行

nyy

n表示大于1的数字,复制n

yw

从光标处复制至一个单子/单词的末尾,包括空格

ye

从光标处复制至一个单子/单词的末尾,不包括空格

y$

从当前光标复制到行末

y0

从当前光标位置(不包括光标位置)复制之行首

y3l

从光标位置(包括光标位置)向右复制3个字符

y5G

将当前行(包括当前行)至第5行(不包括它)复制

y3B

从当前光标位置(不包括光标位置)反向复制3个单词

J

当前行与下一行合并 


5.缩进

:n1,n2<

n1,n2之间代码左缩进1TAB位置

:n1,n2<<

n1,n2之间代码左缩进2TAB位置

:n1,n2<<<

n1,n2之间代码左缩进3TAB位置

==

对当前行自动缩进

n==

从当前行起的下面n自动缩进

gg=G

对整篇代码自动缩进


6.查找替换

:%s/source/dist[/g]或者:1,$ s/source/dist[/g]

全文字眼替换,/g为替换所有

:s/vivian/sky/

替换当前行第一个 vivian 为 sky

:s/vivian/sky/g

替换当前行所有 vivian 为 sky

:n,$s/vivian/sky/

替换第 行开始到最后一行(第一个)

:n,$s/vivian/sky/g

替换第 行开始到最后一行(所有)

:.,$s/vivian/sky/g

从当前行开始到最后一行

:%s/vivian/sky/(等同于 :g/vivian/s//sky/)

替换每一行的第一个 vivian 为 sky

:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g)

替换每一行中所有 vivian 为 sky

:s#vivian/#sky/#

替换当前行第一个 vivian/ 为 sky/

:%s+/oradata/apras/+/user01/apras1+ 

/oradata/apras/替换成/user01/apras1/

中阶篇

1. 删除文本中的^M

:%s/\r//g

其他方案:

cat filename1 | tr -d ^V^M” > newfile

sed -e s/^V^M//” filename > outputfilename

%s/^V^M//

%s/^M$//g

tr -d "/r" < src >dest

tr -d "/015" dest

strings A>B

dos2unix filename filename2/unix2dos filename filename2

$s/^M//g 


2.交换两个字符位置

xp(x剪切当前字符,X是剪切当前字符前一个字符,p是粘贴,默认是在当前字符右边,P是默认粘贴在当前字符左边,所以xP就保持不变),这个主要告诉我们要灵活使用vi的命令。

 

3.把文件内容反转(按行翻转)

:g/^/m0/

 

4.定义你当前 键盘命令

:map keys new_seq 

  

5.光标控制

H,j,k,l

Nh,nj,nk,nl

 

6.

在当前屏幕中

跳到第一行

跳到中间一行

跳到最后一行   

 

7.如何在“unix命令行”下将一个文件的某字符串用另一个串换掉

 sed 's/string1/string2/gp' file1 >; file2

 

高阶篇

1.寄存器相关

如果只是想使用系统粘贴板的话直接在输入模式按Shift+Inset就可以了,vim帮助文档里与粘贴板有关的内容如下:

vim12个粘贴板,分别是012...9a、“、+;用:reg命令可以查看各个粘贴板里的内容。在vim中简单用y只是复制到“(双引号)粘贴板里,同样用p粘贴的也是这个粘贴板里的内容;

要将vim的内容复制到某个粘贴板,需要退出编辑模式,进入正常模式后,选择要复制的内容,然后按"Ny完成复制,其中N为粘贴板号(注意是按一下双引号然后按粘贴板号最后按y),例如要把内容复制到粘贴板a,选中内容后按"ay就可以了,有两点需要说明一下:

“号粘贴板(临时粘贴板)比较特殊,直接按y就复制到这个粘贴板中了,直接按p就粘贴这个粘贴板中的内容;

+号粘贴板是系统粘贴板,用"+y将内容复制到该粘贴板后可以使用CtrlV将其粘贴到其他文档(如firefoxgedit)中,同理,要把在其他地方用CtrlC或右键复制的内容复制到vim中,需要在正常模式下按"+p

要将vim某个粘贴板里的内容粘贴进来,需要退出编辑模式,在正常模式按"Np,其中N为粘贴板号,如上所述,可以按"5p5号粘贴板里的内容粘贴进来,也可以按"+p将系统全局粘贴板里的内容粘贴进来。

 

2.分屏

ctrl+w,v

同一个文件左右分屏

:vs filename

多个文件左右分屏

ctrl+w,w/ctrl+w,h/ctrl+w,l

多个屏之间切换

ctrl+w,o

关闭所有只保留当前文件

 

3.保存退出

常规::wq,快捷键:ZZ

如果用到ctrl+z,这个是挂起命令,之后可以用jobs查看任务,然后用fg number调出之前挂起的任务继续进行。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值