Vim编辑器使用详解

  • Vim编辑器使用详解

  • vim介绍

  • 为什么要学习vim

  • vim三种模式

  • vim工作模式(图解)

  • vim如何打开文件

  • vim关闭文件

  • 命令模式光标跳转

    • 字符间跳转:

    • 单词间跳转:

    • 行首行尾跳转:

    • 行间移动:

  • VIM的命令模式下的命令:

    • 字符编辑:

    • 替换命令(r, replace)

    • 删除命令:

    • 复制命令

    • 粘贴命令(p, paste): :

    • 其他相关的编辑操作:

    • 翻屏操作:

    • 查找操作:

  • VIM末行模式的操作:

    • 地址定界

    • 查找和替换

    • 练习:

  • 多文件模式:

  • 窗口分隔模式:

  • 定制vim的工作特性:

Vim编辑器使用详解

vim介绍

在Linux系统中配置应用服务,实际上就是在修改它的配置文件(配置文件可能有多 
个,其中包含不同的参数),而且日常工作中也一定免不了编写文档的事情吧,这 
些都是要通过文本编辑器来完成的。在热门Linux操作系统中都会默认安装一款超好用的文本编辑器——名字叫“vim”,vim是vi编辑器的升级版。

为什么要学习vim

Vim能够得到这么多厂商与用户的认可,原因就是在Vim编辑器中有三种模式——命 
令模式、末行模式和编辑模式,分别又有多种不同的命令快捷键组合,很大的提高 
了工作效率,用习惯后会觉得非常的顺手。要想在文本操作时更加高效率,我们必 
需先搞清Vim编辑器的三种模式的操作不同与切换方法。

vim三种模式

命令模式:控制光标移动,可对文本进行删除、复制、粘贴等工作。 
输入模式:在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母之后才会进入编辑模式。注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现『INSERT 或 REPLACE 』的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下『Esc』这个按键即可退出编辑模式。

1.png

末行模式:在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等等的动作则是在此模式中达成的!

vim工作模式(图解)

2.png

记住每次运行vim编辑器后都默认是“命令模式”,需要先进入到“输入模式”后再进行编写文档的工作,而每次编辑完成需先返回到“命令模式”后再进入“末行模式”对文本的保存或退出操作。

vim如何打开文件

格式:vim [OPTION]… [FILE]…

[root@localhost ~]# vim +2 /etc/passwd //直接打开file, 光标在第二行
[root@localhost ~]# cp /etc/passwd passwd
[root@localhost ~]# echo "zabbix" >>passwd
[root@localhost ~]# vim -d /etc/passwd passwd //比较两个文件

3.png

vim关闭文件

末行模式中: 
:q 退出 
:q! 强制退出,丢弃做出的修改 
:wq 保存退出 
:x 保存退出 
命令模式 
ZZ: 保存退出 
ZQ :不保存退出

4.png

命令模式光标跳转

字符间跳转:

h: 左 l: 右 j: 下 k: 上

单词间跳转:

w :下一个单词的词首 
e :当前或下一单词的词尾 
b :当前或前一个单词的词首

行首行尾跳转:

^: 跳转至行首的第一个非空白字符; 
0: 跳转至行首 
$: 跳转至行尾

行间移动:

G:最后一行 
1G, gg: 第一行

VIM的命令模式下的命令:

字符编辑:

x: 删除光标处的字符; 
#x: 删除光标处起始的# 个字符 
xp: 交换光标所在处的字符及其后面字符的位置

替换命令(r, replace)

r: 替换光标所在处的字符

:s/root/admin/g 

删除命令:

d:删除命令, 可结合光标跳转命令使用,来实现范围删除 
例如:dw删除一个单词, dG删除当前光标所在行到最后一行 
d$: 删除到行尾 
d0:删除到行首 
dd: 删除光标所在的行 
#dd :多行删除

复制命令

y:复制, 工作命令相似d命令 
例如:yw复制一个单词 
yy:复制整行

粘贴命令(p, paste): :

p:粘贴当前缓存区的内容, 如果缓存区中内容为整行内容,则内容粘贴在当前行的正下方, 否则粘贴至光标的后面 
P:粘贴当前缓存区的内容, 如果缓存区中内容为整行内容,则内容粘贴在当前行的正上方, 否则粘贴至光标的后面

其他相关的编辑操作:

v:按字符选定 
V:按行选定 
选定后结合编辑命令使用 
u:撤销之前的编辑 
Ctrl+r:撤销之前的撤销

翻屏操作:

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

查找操作:

/PATTERN:在全文搜索指定模式匹配的字符, 从光标的位置至文件尾部的顺序 
?PATTERN:在全文搜索指定模式匹配的字符, 从光标的位置至文件首部的顺序 
n:与当前命令同方向, /PATTERN为往后翻 
N:与当前命令反方向

VIM末行模式的操作:

地址定界

注释:以下命令不加:, 使用前须输入:进入末行模式 
start,end 
#:具体第#行, 例如2表示第2行 
#,#:表示第#行到第#行, 例如2,10表示第2行到第10行

:2,10s/root/admin/g 

#,+#:表示左侧的#表示起始, 加上右边#表示的行数

:2,+9s/admin/root/g  

.:表示当前行 
$:表示最后一行 
.,$-1:表示当前行到倒数第2行 
%:表示全文, 相当于1,$

:%s/admin/root/g

/pat1/,/pat2/:从第一个被匹配的pat1行开始,到第一个被匹配的pat2的行结束

:/admin/,/ftp/s/admin/root/g

使用方法:

后跟一个编辑命令 
d:删除 
y:复制 
w /path/to/somewhere:将范围内的行另存到指定文件 
r /path/to/somewhere:在指定位置插入指定文件的所有内容

查找和替换

地址定界s/要查找的内容/替换的内容/修饰符 
例如:替换全文的abc为123 %s/abc/123/gi 
要查找的内容:可使用模式匹配 
替换为的内容:不可使用模式, 但可以使用\1,\2等后向引用, 还可以使用&符号引用在前面找到的内容

修饰符: 
i:忽略大小写 
g:全局替换 
查找替换的分隔符可替换为其他字符

例如::s/abc/123/g可替换成 :s@abc@123@g

练习:

1、复制/etc/grub2.cfg 至/tmp目录, 用查找替换命令删除/tmp/grub2.cfg文件中的行首的空白字符

%s/^[[:space:]]//

2、复制 /etc/rc.d/init.d/functions文件至/tmp目录, 用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首添加一个#号

%s/^[[:space:]]/#&/

多文件模式:

vim FILE1 FILE2 FILE3...

在末行模式下输入以下命令: 
:n 切换到下一个文件 
:N 切换到上一个文件 
wall保存所有文件 
qall 退出所有

窗口分隔模式:

vim -o|-O FILE1 FILE2...

-o:水平分隔 
-O:垂直分隔 
在窗口间切换:Ctrl+w+上下左右 
单文件窗口分隔: 
Ctrl+w,s split 水平分隔 
Ctrl+w,v vertical 垂直分隔 
如下垂直分隔

5.png

定制vim的工作特性:

配置文件:

全局 /etc/vimrc 
个人 ~/.vimrc 
末行模式下的配置只对当前vim进程有效

(1) 行号

显示:set number, 简写为set nu 
取消显示:set nonumber, 简写为set nonu

(2) 括号匹配

匹配:set showmatch, 简写为set sm 
取消:set nosm

(3) 自动缩进

启用:set ai 
禁用:set noai

(4) 高亮显示

启用:set hlsearch 
禁用:set nohlsearch 简写 set noh

(5) 语法高亮

启用:syntax on 
禁用:syntax off

(6) 忽略字符大小写

启用:set ic 
禁用:set noic

(7) 获取帮助:

:help 
:help subject

原创文章,作者:M20_he,如若转载,请注明出处:http://www.178linux.com/43674

(0)
M20_heM20_he
上一篇 2016-09-06
下一篇 2016-09-06

相关推荐

  • 第十四周 N21 总有刁民想害朕

    系统的INPUT和OUTPUT默认策略为DROP; 1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响应报文离开本机;  iptables -A  INPUT -p tcp –dpor…

    Linux干货 2016-10-17
  • Codis集群3.03安装配置基础

    Codis基础 01.codis是一个分布式的Redis解决方案,对于上层的应用来说,连接Codis Proxy和连接原生的Redis Server没有明显的区别。 codis底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面客户端来说是透明的,可以简单的认为后边连接是一个内存无限大的Redis服务。 codis架构图如下: 02.c…

    Linux干货 2016-09-26
  • 获取linux命令帮助的方法

    1.help command 适用于内建命令。 2.command -hlep 适用于外部命令。 3.info command 适用于外部命令。 4.man command 适用外部命令和内建命令。     man帮助命令分章节             centos7:man 1…

    Linux干货 2017-08-19
  • 逻辑卷LVM

    逻辑卷LVM 简介     在实际生产应用中,磁盘的分区的容量是固定不变的,当出现分区容量不足的情况,除了新加磁盘,还有没有其他方法呢?    逻辑卷(LVM)的概念就出现了,全称叫Logical Volume Manager。它的作用是允许对卷进行方便操作的抽象层,包括重新设定…

    Linux干货 2017-08-12
  • grep是个什么鬼

    正则表达式   一个正则表达式是一个描述了一个字符串集合的模式。正则表达式的构造类似于算术表达式,使用各种各样的操作符来将更小的表达式连在一起。 Grep能理解两种不同版本的正则表达式语法:“basic”和“extended”。在GNU grep中,两种语法可以实现的功能是没有区别的。在其他实现中,基本(basic)正则表达式表达能力要弱一点。下面…

    Linux干货 2017-04-17
  • 有关磁盘管理与文件系统

    硬盘物理结构      扇区  磁头  磁道   柱面   磁道数      扇区*一个磁道上的扇区个数*磁头数=柱面      柱面*磁道数=硬盘大小      一个扇区512字节   &…

    2017-08-19