Linux的神之助攻——Vim

16 篇文章 0 订阅
1 篇文章 0 订阅

前言

【vi 与vim】

vi(Visual Interface)是所有Unix与Linux系统下的编辑器,Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。

(科普一下~~)Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是Vi IMitation,随着功能的不断增加,正式名称改成了Vi IMproved。现在是在开放源代码方式下发行的自由软件。(以上科普来自维基百科)`


vim是一个分工明确的编辑器,它分为三种模式,三种模式有着不同的功能,可以满足于你不同的需求。
打开一个文件:vim filename
如果该文件已经存在,则直接打开并编辑:若该文件不存在,则创建这个文件并打开它。
选项注释
-m只读方式打开文件
-b二进制打开文件
-d file1 file比较两个文件
-d 的效果如下:

[root@localhost app]# vim -d issue profile

这里写图片描述


【vim的三种模式】

这里写图片描述

❉❉命令模式

一般使用vim打开文件以后自动进入命令模式,在该模式下可以使用光标或键盘h、j、k、l 来移动光标,可以复制,粘贴、删除数据来处理文件内容。

❉❉编辑模式

也称插入模式。
在命令模式下按【a、i、o】进入编辑模式,在屏幕左下方或出现【– INSERT – 】字样则表示你已经进入了该模式。在该模式下,可以插入文本文档,如需回到命令模式,按下【Esc】键。

❉❉扩展模式

扩展模式下可以对文件内容进行查找,删除,替换以及保存/退出文档。注意~在编辑模式下是无法进入扩展模式的,需要从编辑模式先返回到命令模式,在命令模式下按【/ : ?】均可以进入扩展模式,而从扩展模式回到命令模式,也只需按下【Esc】键。
首先介绍关于命令模式的一些小选项:
接下来介绍命令模式转入到插入模式下,一些讨巧的键~~
命令模式→→插入模式
i(insert)在光标所在处输入
I在当前光标所在行的行首输入
a(append)在光标所在处后面输入
A在当前光标所在行的行尾输入
o在当前光标所在行的下方打开一个新行
O在当前光标所在行的上方打开一个新行

在命令模式下有一些选项操作,下面来简单介绍一下:

字符间跳转:h: 左 l: 右 j: 下 k: 上
单词间跳转

选项注释
w下一个单词的词首
e当前或下一单词的词尾
b当前或前一个单词的词首
当前页跳转

H:页首 M:页中间行 L:页底

行首尾跳转:
选项注释
^跳转至行首的第一个非空白字符
0跳转至行首
$跳转至行尾
行间跳转:
选项注释
G、扩展模式:跳转至由#指定行
G最后一行
1G/gg第一行
翻屏操作:

Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏

字符编辑:
选项注释
x删除光标处的字符
x删除光标处起始的#个字符
xp交换光标所在处的字符及其后面字符的位置
~转换大小写
J删除当前行后的换行符
删除命令:
选项注释
d删除命令,可结合光标跳转字符,实现范围删除(v可以实现选中范围删除)
d$删除到行尾
d^删除到非空行首
d0删除到行首
dw从光标所在处删除到单词尾
de从光标所在处删除到单词尾
db从光标所在处删除到单词首
复制命令

y: 复制,行为相似于d命令
其余选项与删除命令选项相同,在这里不做一一介绍啦。

粘贴命令

p(大写):缓冲区存的如果为整行,则粘贴当前光标所在行的下
方;否则,则粘贴至当前光标所在处的后面
P(小写):缓冲区存的如果为整行,则粘贴当前光标所在行的上
方;否则,则粘贴至当前光标所在处的前面

撤销命令

在有时候我们在vim模式下编辑一个文件,不小心误操作了一步,这时候不要慌不要忙,撤销命令来帮你忙~

选项注释
u撤销最近的更改
u撤销之前多次更改
U撤消光标落在这行后所有此行的更改
.重复前一个操作
n.重复前一个操作n次
e!在修改文件后,没有退出的状态下回到进入文件的原始状态
此外,命令模式下还有一种方法可以切到编辑模式下,它就是“c”命令。
“c”命令的工作原理是在命令模式下使用“c”命令执行一个修改操作以后在切入编辑模式,和 之前说的“a、i ”都不同哟~~(在某些功能上来说,有点相相似于d命令)
切换命令注释
c$将光标所在处及其到行尾的内容删除后切换到编辑模式
c^(c0)将光标所在处及其到行首的内容删除后切换到编辑模式
cb删到单词首后切换到编辑模式
ce (cw)删到单词尾后切换到编辑模式
cc删除#行并输入新内容
C同 c$ 的用法

扩展模式相关用法

①地址界定
在命令模式下使用“:”进入扩展模式。在扩展模式下,我们可以通过界定一个地址范围来匹配你所需要的相关字符。
命令注释
#具体第#行,例如4表示第4行;
#,#从左侧#表示起始行,到右侧#表示结尾行eg 2,3 则表示2到3行
$表示最后一行
%表示全局,全文
i忽略大小写
②查找替换
查找替换命令可以与地址定界一起使用,组合起来查找你想查找的字符串或者替换它。
命令注释
/字符串从当前光标所在处向文件尾部查找
?字符串从当前光标所在处向文件首部查找
n与命令同方向
N与命令反方向
i忽略大小写
s在扩展模式下完成查找替换操作
g全局替换;默认情况下,每一行只替换第一次出现
gc全局替换,每次替换前询问

eg:

:/\<root\>/rooter/gi
解题:以“/”为间隔符从文中查找root单词,将它全局替换成rooter,并且忽略大小写。
★★需要注意的是★★

①在查找替换的过程中,“/”并不是指定的分隔符,原则上我们可以使用任意的符号作为分隔符,只需在前后保持一致即可。
②在替换查找的时候,vim可以使用基本正则表达式进行字符匹配(扩展正则不支持哟~)

既然说了那么多,不做几个练习怎么对的起我码了这么多字~~(呆滞脸~)

1、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符
:%s/^[[:blank:]]\+//g
解题:这里使用“/”作为分隔符,% 表示全文,s 表示搜索查找。使用了正则表达^[[:blank:]]\+来表示文件中位于行首的空白字符,//g中两个“//”中间什么都没有意味着删除了空白字符,g 表示全局替换。
2、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首添加一个#号。
%s/^\([[:space:]]\)/#\1/g
%s/^[[:space:]]/#&/
解题:正则表达式同上题相同,其中"\1" 是指后向引用,这点要注意,在vim里还可以使用"&" 引用前面查找时查找到的整个内容。
3、复制/etc/rc.d/init.d/functions文件至/tmp目录,替换/tmp/functions文件中的/etc/sysconfig/init为/var/log
    :%s@/etc/sysconfig/init@/var/log@gi
解题:这里使用了”@”符号作为分隔符,gi 表示全局替换且忽略大小写。

多窗口功能

使用vim编辑器可以同时对多个文件进行查看,而界面将会被分割成多个部分,语法格式如下:

vim -o| -O FILE1 FILE2
-o: 水平分割
-O: 垂直分割

有图有真相~~~~
水平分割图:

水平分割

垂直分割图:

垂直分割

既然可以对多个文件进行分割查看,那单个文件可不可以呢?答案是当然的啦~~
老规矩,先来格式在上图:
命令注释
Ctrl+w,s水平分割
Ctrl+w,v垂直分割
ctrl+w,q取消相邻窗口
ctrl+w,o取消全部窗口
:wqall退出
想要分几块咱就分几块~~~

单文件分割

关于vim还有很多强大功能,本篇小结也只是介绍了一些基本的功能,其他的更强大的功能就由你和本编在未来慢慢发现喽~~
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值