摘要:本文介绍版本的一般用法是功能强大的文本编辑器,是的增强版。这样的命令执行后将打开编辑器,显示文件的内容。暂时离开并执行命令。正则表达式和之前介绍的通配符基础命令介绍二有一些相似的地方,但要注意区分两者的不同。匹配非英文字符,等同于。
本文介绍vim(版本7.4)的一般用法
vim是功能强大的文本编辑器,是vi的增强版。
vim [options] [file ..]
使用vim编辑一个文件的最常用命令就是:
vim file
其中file可以是一个新文件,也可以是原有文件。这样的命令执行后将打开编辑器,显示文件file的内容。如图所示:
如果是一个新文件,底部左边会显示"file" [新文件]的字样,右边显示0,0-1表示当前光标所在行数和字符数。如果打开的是一个老文件,底部左边显示"file" 3L, 66C字样,表示文件名,当前光标所处行号,文件总字节数。文件中没有字符的地方会以字符~开头。
现在还不能进行编辑,vim编辑文件有几种模式,当前所处模式是普通模式,可以移动光标、执行复制粘贴等命令;另外还有两种常用模式:插入模式和底行模式。
开始进入的一般都是普通模式,按如下键将进入插入模式:
a 在光标所在位置下一个字符开始输入 A 在光标所在行尾开始输入 i 在光标所在位置开始输入 I 在光标所在行首开始输入 o 在光标所在行下新增一行,并在新增行行首开始输入 O 在光标所在行上新增一行,并在新增行行首开始输入
进入插入模式后,底部会出现-- 插入 --字样;这时就可以在光标位置进行输入了。从插入模式退回到普通模式按ESC键。
在普通模式按如下键将进入底行模式:
: 执行命令 / 正向搜索 ? 反向搜索
从底行模式退回到普通模式需按两次ESC键
底行模式执行:q(quit)表示退出编辑器,如果对文件内容进行过更改,需要执行:wq(write quit)来保存退出;如果不保存退出则需要执行:q!强制退出;强制保存退出为:wq!。
下面列出一些在普通模式下可以执行的命令及它们的作用:
文本修改: . 重复上一个命令 x 删除光标位置的字符 d 从光标处开始剪切 dd 剪切光标所在位置的整行(保存在临时缓冲区) ndd n为数字,表示从当前行开始,从上到下剪切n行 p 将缓冲区中的内容放到当前行之下 np n是数字,相当于执行n次p命令 P 将缓冲区中的内容放到当前行之上 y 从光标处开始复制 yy 复制当前行(保存在临时缓冲区) nyy n为数字,表示从当前行开始,从上到下复制n行 r 替换光标所在位置的一个字符 R 从光标位置开始替换,并进入文本输入模式(ESC退出) u 撤销上一次操作 ZZ 保存退出 移动光标: h或左箭头键 光标向左移动一格 l或右箭头键 光标向右移动一格 j或下箭头键 光标向下移动一格 k或上箭头键 光标向上移动一格 0 光标移动到当前行开头 ^ 光标移动到当前行非空白字符(如空格、tab键等)的开头 $ 光标移动到当前行结尾 g_ 光标移动到当前行非空白字符的结尾 w 光标移动到下一个单词的开头 e 光标移动到下一个单词的结尾 * 匹配光标所在单词,移动到下一个相同的单词 # 匹配光标所在单词,移动到上一个相同的单词 f{ 光标移动到当前行的下一个字符{处,{可以换成其他字符 F} 光标移动到当前行的上一个字符}处 t, 光标移动到当前行的下一个逗号之前一个字符处 T, 光标移动到当前行的上一个逗号之后一个字符处 % 移动到成对括号的另一半括号处,包括() {} [].需要先将光标移动到括号上。 gg 光标移动到文件第一行行首 G 光标移动到文件最后一行行首 回车键 光标移动到下一行行首
这里只列出一部分,初学者也许会觉得太多,记不住。其实只要记住其中几个,就完全可以使用了;其他的作用大多是使你的操作更简便快捷。
vim中的各种命令,大多可以组合使用:
比如要删除光标当前所在位置一直到行尾,可以执行d$;
比如要在当前位置插入50个‘word’,只需执行50iword ESC按完ESC键之后这50个单词就被插入了;
比如要粘贴被复制的内容,但希望粘贴5次,则执行5p;
比如要再次执行上一次命令5次,则执行5.;
熟练使用这些命令将极大提高编写文件的速度。
在插入模式下(普通模式按a、i、o等),输入一个单词的开头,然后按CTRL-P或CTRL-N就会自动补齐。
底行模式共三个开始字符(:、/、?),其中/和?用来匹配模式搜索:
如搜索文件内字符串centos:
/centos
输入这个字符串之后按回车,vim就会将所有匹配的字符串高亮显示,按下n键,光标就会跳到下一个匹配字符串处,按N键,光标就会跳到上一个匹配处。(想想man查询)
使用?和/的作用相同,不过是方向相反。
:可以执行许多命令,如前面介绍过的保存退出命令:wq。下面介绍部分底行模式命令:
:set nu 显示行号 :set nonu 隐藏行号 :r file 读取文件file内容并写入当前编辑的文件中,内容从光标当前位置下一行开始插入。 :w file 将当前编辑的内容写入一个新文件file中。 :s /pattern/string/ 将匹配pattern的字符串替换成string :x 作用和:wq相同,保存并退出。 :! command 暂时离开vim并执行shell命令command。 :help 查看帮助 :.= 显示当前行号 := 显示总行数 :n 移动光标到第n行行首
这些命令也可以组合
如执行shell命令并将结果写入当前行的下一行:
:r!ls -l
还能组合其他模式下的命令
如替换当前行所有匹配模式的字符串:
:s/pattern/string/g # g表示全局
如替换本文件中所有匹配模式的字符串:
:%s/pattern/string/g # %表示所有行
如替换指定行的匹配字符串:
:n,ms/pattern/string/g
这里n和m都是数字,代表行号。可以用点号.代表当前行
如删除当前行到第五行的内容:
:.,5d
当当前行处于第五行以下时,会有反向删除的提示。
正则表达式使用/pattern和:s/pattern/string时,pattern是一个正则表达式,用来匹配一个字符串的模式。
正则表达式和之前介绍的通配符(基础命令介绍二)有一些相似的地方,但要注意区分两者的不同。
通配符主要是用于对文件名的匹配,正则表达式不仅可以用于匹配文件名,事实上,它可以进行任何字符串的匹配。它要比通配符更通用,大多数编程语言和一些工具中(如vim、grep、awk、sed)都有对正则表达式的直接支持。
下面介绍一部分将要用到的正则表达式的概念和用法:
匹配位置: ^ 表示行开头 $ 表示行结尾 < 表示单词开头 > 表示单词结尾 匹配字符: . 表示匹配任意单个字符(相当于通配符中的?) [...] 表示匹配括号内任意单个字符 [^...] 表示匹配任意一个非列出字符 #参照通配符描述 a 匹配英文字符,等同于[a-zA-Z]或[[:alpha:]]。 A 匹配非英文字符,等同于[^a-zA-Z]。 d 匹配数字,等同于[0-9]或[[:digit:]]。 D 匹配非数字,等同于[^0-9]。 x 匹配十六进制数字,等同于[0-9A-Fa-f]或[[:xdigit:]]。 X 匹配非十六进制数字,等同于[^0-9A-Fa-f]。 w 匹配单词,等同于[0-9A-Za-z_]。 W 匹配非单词,等同于[^0-9A-Za-z_]。 匹配TAB字符。 s 匹配空白字符,等同于[ ]或[[:blank:]]。 S 匹配非空白字符,等同于[^ ]。 u 匹配大写字母,等同于[A-Z]或[[:upper:]]。 U 匹配非大写字母。 匹配换行 匹配回车 (...) 匹配并捕获,用1 2 3 ...来引用被捕获的字符串。 | 表示逻辑或 匹配数量: * 表示匹配前一个字符零到任意多次,相当于{0,}。 + 表示匹配前一个字符一到任意多次,相当于{1,}。 ? 表示匹配前一个字符零到一次,相当于{0,1}。#注意和通配符?的区别 {n,m} 表示匹配前一个字符n到m次。
在使用正则表达式时,有时需要在特殊字符之前加上转义字符""来使特殊字符表示它的字面意思而不是它的特殊意义,在特定的工具中使用正则时,也需要这样做来避免特殊字符被工具本身解释。
vim在使用如下正则表达式时需要将特殊字符转义:<...>、{n,m}、(...)、?、+、|
下面结合正则举例说明vim中模式匹配及部分命令用法
匹配字符串world并使光标停留在匹配行后第三行行首:
/world/+3
将第三行到第八行行首添加注释符号//:
:3,8s/^////
注意这里的行首符^和转义符""的用法
如:
:%g/^sxyz/normal dd
此命令作用是全局匹配以空白后接xyz开头的行,并执行普通模式下的命令dd
如匹配6个以上的小写字母:
/a{6,}
如交换冒号:两侧的字符串:
:s/(.*):(.*)/2:1/ #注意这里是如何引用之前匹配的分组的
如将所有tag、tog和tug分别改为hat、hot和hut
:%s/t([aou])g/h1t/g
如匹配hello或world两个单词:
/|
这里只列出部分vim用到的正则表达式,关于正则的更多内容,以后的文章中还会有描述和举例。
vim编辑器是很强大的,这里只描述了部分初级使用方法。vim还能使用视图模式,编辑多文本,设置键盘映射,多剪贴板,录制宏,使用插件等等。完全可以用vim作为IDE来使用。但相对来说,vim的学习曲线比较陡峭,不同的应用场景,需要记忆的命令和方法数量也是完全不同的。建议在学习中,每次只熟悉几个命令,一段时间后,就能流畅快捷的编辑文本了。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/24901.html
摘要:前言只有光头才能变强这个学期开了的课程了,授课的老师也是比较负责任的一位。开源,可被定制,开放,多用户的网络操作系统。三常用的命令上面说了一堆的基础概念,这是给我们敲命令之前打了一点基础,在敲命令的同时也会遇到一些比较重要的知识点的。 前言 只有光头才能变强 这个学期开了Linux的课程了,授课的老师也是比较负责任的一位。总的来说也算是比较系统地学习了一下Linux了~~~ 本文章主要...
阅读 1737·2021-11-24 09:39
阅读 1668·2021-11-22 15:22
阅读 984·2021-09-27 13:36
阅读 3097·2021-09-24 10:34
阅读 3308·2021-07-26 23:38
阅读 2618·2019-08-29 16:44
阅读 957·2019-08-29 16:39
阅读 1080·2019-08-29 16:20