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 08:51
下一篇 2016-09-06 08:51

相关推荐

  • linux —————-目录配配置【FHS】

    linux 目录配配置【FHS】 /根目录的意义与内容 根目录是整个系统最重要的一个目录;根目录与开机、还原、系统修复等操作有关 FHS建议标准: 根目录所在的分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好 FHS定义的目录含义 /bin :系统存放执行文件的目录,但是bin比较特殊【bin放置的是在单用户维护模…

    Linux干货 2017-04-17
  • 22期第十三周课堂练习

    1、建立samba共享,共享目录为/data,要求:(描述完整的过程)   1)共享名为shared,工作组为magedu;   2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;   3)添加s…

    Linux干货 2017-01-09
  • 谷歌三大核心技术(一)The Google File System中文版

    摘要 我们设计并实现了Google GFS文件系统,一个面向大规模数据密集型应用的、可伸缩的分布式文件系统。GFS虽然运行在廉价的普遍硬件设备上,但是它依然了提供灾难冗余的能力,为大量客户机提供了高性能的服务。 虽然GFS的设计目标与许多传统的分布式文件系统有很多相同之处,但是,我们的设计还是以我们对自己的应用的负载情况和技术环境的分析为基础的,不管现在还是…

    Linux干货 2015-04-13
  • 日志分析工具Awstats实战之Apache篇-多站点日志分析

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1318052 前面两篇都在讲述如何去部署nginx下的awstats日志分析工具,现在终于轮到apache。作为老牌的网页服务器,awstats对apache…

    Linux干货 2016-08-15
  • 二、(1)Linux常用文件管理类命令详解

    Linux 文件管理 命令 cp mv rm

    2018-01-08
  • 将两个局域网用openvpn连接起来

    考虑到我们做集群的时候需要用到可能有20台机器,可能我的要求跟别人的不一样的,我需要做20台左右的集群,不仅仅是会,而且需要非常熟练的搭建,最后通过脚步一键自动化部署安装。 目前我有两台电脑,一台可以运行7台,另一台可以运行12台左右,刚好可以满足的我的要求,但是我两台电脑都是设置的nat模式的网络,为什么我非要配置nat模式呢,根据集群架构思想,为了保证架…

    Linux干货 2017-05-01