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

相关推荐

  • 用shell脚本实现每天定时收集全网日志到一台服务器

    需求 现在公司有这样一个需求,需要收集每天全网运行业务的设备上的某个特定目录底下的日志到一台服务器(这台服务器我们简称logserver),这并在这台logserver上生成以日期为名字的目录 解决思路: 在logserver的crontab里设置两个脚本,在当日晚上23:30执行脚本1收集当日即将被删除的全网脚本;在并在早上8:30执行脚本2,收集昨日全网…

    Linux干货 2015-07-27
  • 学习新技术的10个建议

    我们生活在一个振奋人心的时代。我们可以越来越方便廉价地获得大量学习资源。这些资源的传播载体由最初的教室被变成了博客,技术论坛等。坐拥如此众多的学习资源,我们没有任何理由不去好好利用。随之而来的问题便是如何在这知识的海洋中选择自己的前进方向。在这篇文章中,我将简要概括一些技术学习的建议,希望可以给你带来一些启发。 尽管我的建议主要涉及的是软件开发方面,但是这些…

    Linux干货 2015-03-20
  • PXE自动化安装Centos7

    一、PXE介绍     PXE: Preboot Excution Environment,由Intel公司研发,可以使没有任何操作系统的主机能够基于网络完成系统的安装工作,实现服务器的自动化安装系统 二、PXE工作原理 Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合…

    2017-07-24
  • rpm与yum的简单命令

                                  …

    Linux干货 2017-04-18
  • HTTP响应连接介绍

    HTTP即超文本传输协议,web站点的实现就是基于HTTP协议得以实现。本文将详细讨论HTTP。 1. HTTP协议版本: HTTP从诞生到现在一共有如下几个版本: HTTP 0.9:是最早的版本,为HTTP的原型版本,其功能非常简陋; HTTP 1.0:此版本增加了很多新特性,如cache,method,MIME等,MIME的出现让网页不再是单纯的纯文本界…

    2017-05-31
  • M20 – 1- 第二周博客(2):Linux的文件系统与结构

    Linux系统对于一个初学者来说,其实并不那么容易.所以了解其系统的结构,及其表示的含义是非常重要的.否则安装好系统后,都无从下手.也不知道怎么办。下面介绍一下Linux 的目录结构.及每个目录表示的含义.方便初学者学习和使用Linux系统。 从上图可以看出Linux的目录结构属于树状型的,是否已经对Linux的结构有个大概的认识了呢,接下来讲的是这些目录中…

    Linux干货 2016-08-02