搜索
首页系统教程LINUXlinux基础命令——文本编辑vim

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

Feb 11, 2024 am 10:39 AM
linuxlinux教程linux系统linux命令外壳脚本嵌入式linuxlinux入门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 # %表示所有行

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

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的学习曲线比较陡峭,不同的应用场景,需要记忆的命令和方法数量也是完全不同的。建议在学习中,每次只熟悉几个命令,一段时间后,就能流畅快捷的编辑文本了。

以上是linux基础命令——文本编辑vim的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:良许Linux教程网。如有侵权,请联系admin@php.cn删除
Linux和Windows之间的开发人员工具的可用性有何不同?Linux和Windows之间的开发人员工具的可用性有何不同?May 12, 2025 am 12:04 AM

Linuxoffersmoredevelopertools,especiallyopen-sourceandcommand-linebased,whileWindowshasimprovedwithWSLbutstilllagsinsomeareas.Linuxexcelsinopen-sourcetools,command-lineefficiency,andsystemoptimization,makingitidealfordevelopersfocusedontheseaspects.W

7个类似Windows的Linux发行版,您应该尝试7个类似Windows的Linux发行版,您应该尝试May 11, 2025 am 10:35 AM

本文探讨了提供类似Windows的桌面体验的最佳Linux发行版。 用户经常考虑从Windows(特别是从Windows 10(2015年7月29日发布)及其后继Windows 11(2021年10月5日)的转变)。

Linux的10个最佳开源安全防火墙Linux的10个最佳开源安全防火墙May 11, 2025 am 10:25 AM

作为一名拥有十年以上 Linux 管理经验的管理员,我的主要职责始终是 Linux 服务器的安全管理。防火墙在保护 Linux 系统和网络安全方面起着至关重要的作用。 它们就像内部和外部网络之间的安全卫士,根据一组预定义的规则控制和管理进出网络流量。这些防火墙规则允许合法连接并阻止未指定的连接。 如今,有许多开源防火墙应用程序可用,为您的需求选择合适的应用程序可能具有挑战性。在本文中,我们将探讨 2024 年可以帮助保护您的 Linux 服务器的十个最流行的开源防火墙。 Iptables /

7必须尝试X-Window(基于GUI)Linux命令 - 第2部分7必须尝试X-Window(基于GUI)Linux命令 - 第2部分May 11, 2025 am 10:01 AM

本文探讨了其他有价值的基于X的Linux命令和程序,并扩展了我们以前对基于GUI的Linux命令的报道。 Xwininfo:揭幕窗口详细信息 Xwininfo是提供全面信息的命令行实用程序

如何使用Linux中的NetData监视MySQL或Mariadb如何使用Linux中的NetData监视MySQL或MariadbMay 11, 2025 am 09:50 AM

Netdata:轻松监控Linux系统上MySQL数据库性能的利器 Netdata是一款免费开源的实时系统性能和健康监控应用程序,适用于Linux、FreeBSD和macOS等类Unix系统。它收集并可视化各种指标,让您实时监控系统运行情况。Netdata支持多种插件,可以监控当前系统状态、正在运行的应用程序和服务,例如MySQL数据库服务器等等。 本文将指导您如何在基于RHEL的发行版上使用Netdata监控MySQL数据库服务器的性能。 阅读完毕后,您将能够通过Netdata的Web界面,

如何使用Linux上的DIFF3命令比较和合并文件如何使用Linux上的DIFF3命令比较和合并文件May 11, 2025 am 09:49 AM

Linux diff3 命令:比较和合并三个文件的强大工具 diff3 命令是 Linux 中一个强大的工具,用于比较三个文件并显示它们的差异。这对于程序员和系统管理员来说非常有用,他们经常处理同一文件的多个版本,需要合并这些版本或识别不同版本之间的更改。 本文将介绍 diff3 命令的基本用法、常用选项以及一些示例,帮助您理解它在 Linux 中的工作原理。 什么是 diff3 命令? diff3 是一个逐行比较三个文件的工具,它识别差异并以易于理解的格式显示它们。 它可以用于: 查找三个文

如何在Linux中使用Playsms运行SMS门户如何在Linux中使用Playsms运行SMS门户May 11, 2025 am 09:41 AM

本指南为在Linux服务器上安装开源SMS管理软件Playms提供了全面的演练。 这是有效的SMS通信管理的强大工具。 系统要求: 开始之前,请确保您的S

克莱门汀:Linux功能丰富的音乐播放器克莱门汀:Linux功能丰富的音乐播放器May 11, 2025 am 09:31 AM

Clementine:您的Linux,MacOS和Windows的多功能和用户友好的音乐播放器 克莱门汀(Clementine)是一位现代,轻巧的音乐播放器,旨在易于使用,尤其是在Linux系统上。受Amarok的启发,Clementine超过了其前任

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具