VI VIM详解

VI VIM详解

vi 三种模式

Command(命令)模式,用于输入命令;
Insert(插入)模式,用于插入文本;
Visual(可视)模式,用于视化的的高亮并选定正文;

vi
enter
i 等
Esc
v或者V或Crtl v
Esc
:q!或:wq或 :x 等
command模式
insert模式
Visual模式
vi file_name
退出编辑

command模式

文件操作

:q! 不保存退出


:wq 保存退出(无论内容是否修改,都会修改文件修改信息),同ZZ (shift + z :按住shift + 2次 z)


:wq! 强制保存退出(无论内容是否修改,都会修改文件修改信息)


:x 保存退出(只在文件被修改是,修改文件被修改信息)


:w !sudo tee % 以管理员权限保存文件(用于在权限不足时保存文件方式)

设置行号

有时我们配置一个程序运行时,会出现配置文件X行出现错误 。这时我们要用到行号相关的操作;

为所有内容添加行号

按ESC键,然后输入:

:set number

光标所处位置

在屏幕的右下角,有类似如下的;

     57,8     27%

在这之中,57表示第57行,8表示第8个字符;

光标操作

移动光标

当我们按ESC进入Command模式后,我们可以用下面的一些键位来移动光标;

j 向下移动一行;
k 向上移动一行;
h 向左移动一个字符;
l 向右移动一个字符;


ctrl+b 向上移动一屏;
ctrl+f 向下移动一屏;


向上箭头 向上移动;
向下箭头 向下移动;
向左箭头 向左移动;
向右箭头 向右移动;

我们编辑一个文件时,对于 j、k、l和h键,还能在这些动作命令的前面加上数字,比如 3j,表示向下移动3行。

文件内容操作

删除内容

x 一个字符;

#x 删除几个字符,#表示数字,比如3x;

dw 删除一个单词;

#dw 删除几个单词,#用数字表示,比如3dw表示删除三个单词;

dd 删除一行;

#dd 删除多个行,#代表数字,比如3dd 表示删除光标行及光标的下两行;

d$ 删除光标到行尾的内容;

J 清除光标所处的行与上一行之间的空格,把光标行和上一行接在一起;

撤销

u 撤消修改或删除操作;

按ESC键返回Command(命令)模式,然后按u键来撤消删除以前的删除或修改;如果您想撤消多个以前的修改或删除操作,请按多按几次u。这和Word的撤消操作没有太大的区别;

复制和粘帖的操作

其实删除也带有剪切的意思,当我们删除文字时,可以把光标移动到某处,然后按shift+p键就把内容贴在原处,然后再移动光标到某处,然后再按p或shift+p又能贴上;

p 在光标之后粘帖;shift+p 在光标之前粘帖

来举一例:

比如我们想把一个文档的第三行复制下来,然后帖到第五行的后面,我们应该怎么做呢?

有两种方法

第一种方法:

先把第三行删除,把光标移动到第三行处,然后用dd动作,接着再按一下shift+p键。这样就把刚才删除的第三行帖在原处了。

接着我们再用k键移动光标到第五行,然后再按一下p键,这样就把第三行的内容又帖到第五行的后面了;

第二种方法;

进入可视模式,按ESC键,然后按v键。移动鼠标指针,选中第三行的内容,然后按y键复制;再移动指针到第五行,最后按p键;

所以复制和粘贴操作,是命令模式、插入模式及可视模式的综合运用;我们要学会各种模式之间的切换,要常用ESC键;更为重要的学会在命令模式下移动光标;

查找和替换功能
查找

首先,我们要进入ESC键,进入命令模式;我们输入/或?就进入查找模式了

/SEARCH 注:正向查找,按n键把光标移动到下一个符合条件的地方;


?SEARCH 注:反向查找,按shift+n 键,把光标移动到下一个符合条件的

**举一例:**比如我想在一个文件中找到swap单词,我应该如下做

首先按ESC键,进入命令模式,然后输入

/swap

?swap

替换

按ESC键进入命令模式

: s /SEARCH/REPLACE/g 注:把当前光标所处的行中的SEARCH单词,替换成REPLACE,并把所有SEARCH高亮显示;
(上面: s 要把中间的空格去掉,csdn bug会转为表情)


:%s /SEARCH/REPLACE 注:把文档中所有SEARCH替换成REPLACE;


:#,# s /SEARCH/REPLACE/g 注:#号表示数字,表示从多少行到多少行,把SEARCH替换成REPLACE;

注:在这之中,g表示全局查找;我们注意到,就是没有替换的地方,也会把SEARCH高亮显示;

举例说明:

比如我们有一篇文档要修改;

我们把光标所在的行,把所有单词the,替换成THE,应该是:

:s /the/THE/g

我们把整篇文档的所有的the都替换成THE,应该是:

:%s /the/THE 

我们仅仅是把第1行到第10行中的the,替换成THE,应该是

:1,10 s /the/THE/g

visual模式

command 模式下


按 v 进入visual 模式;


按 V 进入 visual line 模式,此时行 是最小的操作单位,dy 等动作的最小单位都是行;


按 ctrl + v 进入 visual block 模式,此时选中的区域是一个矩形;

在最新的Linux发行版本中,vi提供了可视模式,因为这个功能是vim才有的。如果您用的vi没有这个功能,就换成vim就有了。打开可视模式,按ESC键,然后按v就进入可视模式;

可视模式为我们提供了极为友好的选取文本范围,以高亮显示;在屏幕的最下方显示有;

-- 可视 --  
或
--VISUAL--

进入可视模式,我们就可以用前面所说的命令行模式中的光标移动指令,可以进行文本范围的选取。

选取文本范围有何用?

我们可以对某部份删除作业,按d键就删除了我们选中的内容。
选中内容后,我们按y就表示复制;按d表示删除;

值得一提是的删除的同时,也表示复制。我们返回到命令模式,然后移动光标到某个位置,然后按shift+p键,就把刚才删除的内容贴上了。我们先在这里提一句,在后文,我们还得详细说说。

退出可视模式,还是用ESC键;

insert 模式

i 在光标之前插入;
a 在光标之后插入;


I 在光标所在行的行首插入;
A 在光标所在行的行末插入;


o 在光标所在的行的上面插入一行;
O 在光标所在的行的下面插入一行;


s 删除光标后的一个字符,然后进入插入模式;
S 删除光标所在的行,然后进入插入模式;

通过在i,I,a,A命令中增加数字前缀,可以批量插入内容,以避免重复输入。例如:输入50i*命令,然后点击Esc键,将一次性插入50个星号;使用25a*-Esc命令,则将一次性插入25个星号和短线的组合。

通过在小写s命令中增加数字前缀,可以替换多个字符。例如:希望将"www.baidu.com”更改为其它网址,可以首先将光标移动到字符“v”处,然后执行3s命令,删除3个字符并进入插入模式输入其它域名。

通过在大写S命令中增加数字前缀,可以替换多行内容。例如:执行3S命令,将删除2行文本,并将第3行文本清空,然后进入插入模式。

退出可视模式,还是用ESC键;

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值