0

0

linux基础命令——文本编辑vim

王林

王林

发布时间:2024-02-11 10:39:32

|

776人浏览过

|

来源于良许Linux教程网

转载

本文介绍vim(版本7.4)的一般用法,****vim是功能强大的文本编辑器,是vi的增强版。

使用vim编辑一个文件的最常用命令就是:

vim file 是一个新文件,也可以是原有文件。这样的命令执行后将打开编辑器,显示文件file的内容。如图所示:

linux基础命令——文本编辑vim

如果是一个新文件,底部左边会显示”file” [新文件]的字样,右边显示0,0-1表示当前光标所在行数和字符数。如果打开的是一个老文件,底部左边显示”file” 3L, 66C字样,表示文件名,当前光标所处行号,文件总字节数。文件中没有字符的地方会以字符~开头。

现在还不能进行编辑,vim编辑文件有几种模式,当前所处模式是普通模式,可以移动光标、执行复制粘贴等命令;另外还有两种常用模式:插入模式和底行模式。

开始进入的一般都是普通模式,按如下键将进入插入模式:

1. a 在光标所在位置下一个字符开始输入
2. A 在光标所在行尾开始输入
2. i 在光标所在位置开始输入
4. I 在光标所在行首开始输入
5. o 在光标所在行下新增一行,并在新增行行首开始输入
6. O 在光标所在行上新增一行,并在新增行行首开始输入

进入插入模式后,底部会出现– 插入 –字样;这时就可以在光标位置进行输入了。从插入模式退回到普通模式按ESC键。

在普通模式按如下键将进入底行模式:

1. : 执行命令
2. / 正向搜索
3. ? 反向搜索

从底行模式退回到普通模式需按两次ESC键

底行模式执行:q(quit)表示退出编辑器,如果对文件内容进行过更改,需要执行:wq(write quit)来保存退出;如果不保存退出则需要执行:q!强制退出;强制保存退出为:wq!。

linux基础命令——文本编辑vim

下面列出一些在普通模式下可以执行的命令及它们的作用:

文本本修改:

1. dd  剪切光标所在位置的整行(保存在临时缓冲区)
2. ndd n为数字,表示从当前行开始,从上到下剪切n行
3. p   将缓冲区中的内容放到当前行之下
4. np  n是数字,相当于执行n次p命令
5. P   将缓冲区中的内容放到当前行之上
6. y   从光标处开始复制
6. yy  复制当前行(保存在临时缓冲区)
7. nyy n为数字,表示从当前行开始,从上到下复制n行
8. r   替换光标所在位置的一个字符
9. R   从光标位置开始替换,并进入文本输入模式(ESC退出)
10. u   撤销上一次操作
11. ZZ  保存退出
12. 移动光标:
13. h或左箭头键 光标向左移动一格
14. l或右箭头键 光标向右移动一格
15. j或下箭头键 光标向下移动一格
16. k或上箭头键 光标向上移动一格
17. 0 光标移动到当前行开头
18. ^ 光标移动到当前行非空白字符(如空格、tab键等)的开头
19. $ 光标移动到当前行结尾
20. g_ 光标移动到当前行非空白字符的结尾
21. w  光标移动到下一个单词的开头
22. e  光标移动到下一个单词的结尾
23. *  匹配光标所在单词,移动到下一个相同的单词
24. #  匹配光标所在单词,移动到上一个相同的单词
25. f{ 光标移动到当前行的下一个字符{处,{可以换成其他字符
26. F} 光标移动到当前行的上一个字符}处
27. t, 光标移动到当前行的下一个逗号之前一个字符处
28. T, 光标移动到当前行的上一个逗号之后一个字符处
29. %  移动到成对括号的另一半括号处,包括() {} [].需要先将光标移动到括号上。
30. gg 光标移动到文件第一行行首
31. G  光标移动到文件最后一行行首
32. 回车键 光标移动到下一行行首

这里只列出一部分,初学者也许会觉得太多,记不住。其实只要记住其中几个,就完全可以使用了;其他的作用大多是使你的操作更简便快捷。

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。

下面介绍部分底行模式命令:

1 :set nu   显示行号
2 :set nonu 隐藏行号
3 :r file   读取文件file内容并写入当前编辑的文件中,内容从光标当前位置下一行开始插入。
4 :w file   将当前编辑的内容写入一个新文件file中。
5 :s /pattern/string/ 将匹配pattern的字符串替换成string
6 :x        作用和:wq相同,保存并退出。
7 :! command 暂时离开vim并执行shell命令command。
8 :help     查看帮助
9 :.=       显示当前行号
10 :=        显示总行数
11 :n        移动光标到第n行行首

这些命令也可以组合如执行shell命令并将结果写入当前行的下一行:

r!ls -l

还能组合其他模式下的命令如替换当前行所有匹配模式的字符串:

s/pattern/string/g # g表示全局

如替换本文件中所有匹配模式的字符串:

%s/pattern/string/g # %表示所有行

Linux
Linux

本文档主要讲述的是Linux-Shell脚本编程基础;我们可以使用任意一种文字编辑器,比如gedit、kedit、emacs、vi等来编写shell脚本,希望本文可以给大家带来帮助;感兴趣的朋友可以过来看看

下载

如替换指定行的匹配字符串:

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_]。
/t    匹配TAB字符。
/s    匹配空白字符,等同于[ /t]或[[:blank:]]。
/S    匹配非空白字符,等同于[^ /t]。
/u    匹配大写字母,等同于[A-Z]或[[:upper:]]。
/U    匹配非大写字母。
/n    匹配换行
/r    匹配回车
(...) 匹配并捕获,用/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/h/1t/g

如匹配hello或world两个单词:

///|/

这里只列出部分vim用到的正则表达式,关于正则的更多内容,以后的文章中还会有描述和举例。

vim编辑器是很强大的,这里只描述了部分初级使用方法。vim还能使用视图模式,编辑多文本,设置键盘映射,多剪贴板,录制宏,使用插件等等。完全可以用vim作为IDE来使用。但相对来说,vim的学习曲线比较陡峭,不同的应用场景,需要记忆的命令和方法数量也是完全不同的。建议在学习中,每次只熟悉几个命令,一段时间后,就能流畅快捷的编辑文本了。

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

510

2023.06.20

正则表达式不包含
正则表达式不包含

正则表达式,又称规则表达式,,是一种文本模式,包括普通字符和特殊字符,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式的文本。php中文网给大家带来了有关正则表达式的相关教程以及文章,希望对大家能有所帮助。

247

2023.07.05

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

738

2023.07.05

java正则表达式匹配字符串
java正则表达式匹配字符串

在Java中,我们可以使用正则表达式来匹配字符串。本专题为大家带来java正则表达式匹配字符串的相关内容,帮助大家解决问题。

211

2023.08.11

正则表达式空格
正则表达式空格

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。本专题为大家提供正则表达式相关的文章、下载、课程内容,供大家免费下载体验。

350

2023.08.31

Python爬虫获取数据的方法
Python爬虫获取数据的方法

Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。

293

2023.11.13

正则表达式空格如何表示
正则表达式空格如何表示

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。想了解更多正则表达式空格怎么表示的内容,可以访问下面的文章。

232

2023.11.17

正则表达式中如何匹配数字
正则表达式中如何匹配数字

正则表达式中可以通过匹配单个数字、匹配多个数字、匹配固定长度的数字、匹配整数和小数、匹配负数和匹配科学计数法表示的数字的方法匹配数字。更多关于正则表达式的相关知识详情请看本专题下面的文章。php中文网欢迎大家前来学习。

528

2023.12.06

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

61

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.1万人学习

Git 教程
Git 教程

共21课时 | 2.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号