百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

「Linux」vi编辑器入门

ahcoder 2025-03-03 17:15 7 浏览

简介

vi 编辑器是Linux 系统下的标准编辑器,vi 可以分为三种状态,分别是命令模式(命令行模式)、插入模式(Insert mode)和底行模式(底行模式),各模式的功能区分如下: 命令行模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者到底行模式。 插入模式(Insert mode):只有在Insert mode 下,才可以做文字输入,按ESC 键可回到命令行模式。 底行模式:将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号等。 在使用时通常把 vi 简化成两个模式,将底行模式也算入命令行模式。 更多可查看vim菜鸟教程 或者vim编辑器从入门到精通

1.启动与退出

启动 vi :在系统提示符号输入vi 及文件名称后,就进入vi 全屏幕编辑画面,例如:$ vi myfile。 注意::进入vi 之后,处于命令行模式,要切换到插入模式才能够输入文字,在命令行模式下按下字母i 进入插入模式。 退出 vi 及保存文件:在命令行模式下,按一下冒号:键进入底行模式,例如:

:wq 			存盘并退出vi)
:q! 			不存盘强制退出vi)
:x或ZZ      	有修改才存盘
:w [filename]	将编辑的数据储存成另一个档案(类似另存为)
:r [filename]	在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 	这个档案内容加到游标所在行后面
:n1,n2 w [filename]	将 n1 到 n2 行的内容储存成 filename 这个档案。
:! command		暂时离开 vi 到指令行模式下执行 command 的显示结果!例如
:! ls /home 	即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!
复制代码

2.命令模式功能键

1) 插入模式

按 i 进入插入模式后,是从光标当前位置开始输入文字;
按 a 进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按 A 进入插入模式后,是从目前光标所在行的行尾开始;
按 o 进入插入模式后,是插入新的一行,从行首开始输入文字。
复制代码

2) 移动光标

vi 可以直接用键盘上的光标来上下左右移动,但正规的vi 是用小写英文字母h、j、k、l,分别控制光标左、下、上、右移一格

按 ctrl+b:屏幕往前移动一页。
按 ctrl+f:屏幕往后移动一页。
按 ctrl+u:屏幕往前移动半页。
按 ctrl+d:屏幕往后移动半页。
按 0:	移到光标所在行的开头。(常用)
按 G:	移动到文章的最后。(常用)
nG	n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
gg	移动到这个档案的第一行,相当于 1G (常用)
n	n 为数字。光标向下移动 n 行(常用)
按$:移动到光标所在行的行尾。(常用)
按^:移动到光标所在行的行首,同0。
按 w:光标跳到下个字的开头。(常用)
按 e:光标跳到下个字的字尾。
按 b:光标回到上个字的开头。
按10l:光标向右移动10个位置,可以数字与hjkl组合进行光标移动(常用)
复制代码

3) 删除文字

x:每按一次,删除光标所在位置的"后面"一个字符。
6x:6x 表示删除光标所在位置的"后面"6 个字符。(常用)
X:大写的X,每按一次,删除光标所在位置的"前面"一个字符。
20X:20X 表示删除光标所在位置的"前面"20 个字符。
dd:删除光标所在行。
10dd:从光标所在行开始删除10行
dG	删除光标所在行一直到文件末尾的所有内容
:a1,a2d	删除从 a1 行到 a2 行的文本内容
复制代码

4) 复制

yw:将光标所在之处到字尾的字符复制到缓冲区中。
4yw:复制4个字到缓冲区,数字可改
yy:复制光标所在行到缓冲区。
6yy:表示拷贝从光标所在的该行"往下数"6 行文字。
p:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。
复制代码

5) 修改

修改文本对象,用新输入的文本代替老的文本。它们等价于用删除命令删除老文本,然后用i命令插入新文本。注意:输入修改命令后,就进入到输入方式。所以输入新文本后,还要按ESC键,才能回到命令方式。

c:替换光标所在处的字符。
复制代码

6) 替换

r:替换光标所在处的字符。
R:替换光标所到之处的字符,直到按下ESC 键为止。
:n1,n2s/a1/a2/g	将文件中 n1 到 n2 行中所有 a1 都用 a2 替换
:g/a1/a2/g	将文件中所有的 a1 都用 a2 替换
复制代码

7)常见动作

u	复原前一个动作。(常用,相当于windows Ctrl+z)
[Ctrl]+r	重做上一个动作。(常用,相当于windows Ctrl+y)
复制代码

3.底行模式下命令

在使用底行模式之前,先按ESC 键确定已经处于命令行模式下后,再按:冒号即可进入底行模式。

1)列出行号 set nu

输入set nu 后,会在文件中的每一行前面列出行号。

2)跳到文件中的某一行#

#号表示一个数字,在冒号后输入一个数字再按回车键跳到该行,如输入数字15,再回车,就会跳到文章的第15 行。

3)查找字符 / ?

/关键字:往光标下方查找,按n查找下一个,按N查找上一个 ?关键字:往光标上方查找,按n查找下一个,按N查找上一个

/abc	从光标所在位置向前查找字符串 abc
/^abc	查找以 abc 为行首的行
/abc$	查找以 abc 为行尾的行
?abc	从光标所在为主向后查找字符串 abc
n	向同一方向重复上次的查找指令
N	向相反方向重复上次的查找指定
复制代码

4)替换字符 s

:n1,n2s/word1/word2/g	
n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2
:1,$s/word1/word2/g 或 :%s/word1/word2/g	
从头找 word1 字符串,并将该字符串取代为 word2 !(常用)
:1,$s/word1/word2/gc 或 :%s/word1/word2/gc	
从头找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)
复制代码

5)删除字符 d

:a1,a2d	删除从 a1 行到 a2 行的文本内容
复制代码

6)设置缩进的空格数 set ts=

:set ts=4 设置缩进的空格数为4格
复制代码

4. 使用vi编辑器编写代码(具体使用场景)

1)批量加注释

vim 中批量添加注释

方法一 :块选择模式

批量注释:

Ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的I 进入行首插入模式输入注释符号如 // 或 #,输入完毕之后,按两下 ESC,Vim 会自动将你选中的所有行首都加上注释,保存退出完成注释。

取消注释:

Ctrl + v 进入块选择模式,选中你要删除的行首的注释符号,注意 // 要选中两个,选好之后按 d 即可删除注释,ESC 保存退出。

方法二: 替换命令

批量注释: :起始行号,结束行号s/^/注释符/g

取消注释: :起始行号,结束行号s/^注释符//g

例子:

1、在 10 - 20 行添加 // 注释
:10,20s#^#//#g

2、在 10 - 20 行删除 // 注释
:10,20s#^//##g

3、在 10 - 20 行添加 # 注释
:10,20s/^/#/g

4、在 10 - 20 行删除 # 注释
:10,20s/#//g
复制代码

2)其他常用

在插入模式下:

ctrl + n 自动补全
\p<  插入一个include,并把光标置于<>中间
\im  插入主函数
\ip  插入printf,并自动添加\n,且把光标置于双引号中间
复制代码

编辑模式下快捷键:

dw  删除一个单词(配合b:将光标置于所在单词的首部)
yw  复制一个单词(配合p:粘贴)
复制代码

插入与编辑模式通用:

\rr  运行程序
\rc  保存并编译程序(会生成二进制文件)
复制代码

3)格式化代码

vi编辑器默认缩进是8格,若要改成4格,可以参考blog.csdn.net/qq_33141353…

:set ts=n   设置缩进为n个空格,仅在本文档有效
复制代码
永久设置,在/etc/vim/vimc文件中添加set ts=4,此设置永久有效。
复制代码

1.格式化全部代码 输入gg, 光标移到文件头部; 输入=; 输入G(shitf+g),整个文件就格式化了。 2.格式化部分代码 光标移到要格式化的第1行代码,输入shitf + v,进入可视化模式; 按j,选中要格式化的所有代码; 输入=,选中的代码就被格式化了。


作者:KiraFenvy
链接:
https://juejin.cn/post/7091245667305127972

来源:稀土掘金

相关推荐

Linux ntp时钟同步问题(linux ntp同步命令)

有时候,操作系统会报linux的ntp时钟错误。从时钟源同步时间超时。我查看了一下ntp的时钟源,发现执行ntpq-p显示超时。执行nslookup时钟服务器域名,发现可以正常解析。执行了n...

linux服务器同步利器Rsync全介绍(付脚本)

1、认识Rsync(remotesynchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件...

如何使用Rsync同步两个网站服务器的内容

本头条号每天坚持更新原创干货技术文章,欢迎关注本头条号"Linux学习教程",公众号名称“Linux入门学习教程"。如需学习视频,请复制以下信息到手机浏览器或电脑浏览器上:zc...

Linux TB级小文件同步备份解决方案

在某些电子档案存储的业务系统下,按照业务场景要求,需要将产生的所有电子影像资料永久存储,并支持备份;因为“钞能力”等原因,一般备份存储只有一个节点(即:一个备份存储服务器);这样就要求研发工程师,不...

CentOS7下使用Lsyncd实现文件实时同步

Lsyncd简单介绍Lsyncd使用文件系统事件接口(inotify或fsevents)来监视本地文件和目录的更改。Lsyncd在几秒钟内将这些文件事件整理核对后,然后生成一个或多个进程以将更...

如何手动同步Linux系统时间并与互联网时间保持同步?

在Linux系统中,正确的时间同步对于许多任务都是至关重要的。一些关键应用程序可能需要准确的时间戳才能正常工作,而一些安全功能也需要确保所有服务器的时间都是准确的。NTP服务可以自动同步系统时间和互...

Linux服务器Rsync定时同步一键化配置指南

1、主从服务器同时安装rsyncopenssh-clientaptupdate&&aptinstall-yrsyncopenssh-client2、主服务器安装好后输入以下命令生成密钥...

Linux系统如何使用NTPDATE命令设置时间同步

简介:咱们在使用Linux系统的时候,常常能发现用了一阵子之后,Linux系统的时间就对不上了。已经知道的情况是,安装Linux的时候选的时区是Asia/Shanghai,可这系统运行了一...

开源的Linux文件同步工具有哪些?(linux 文件夹 同步)

Linux系统之间经常需要文件同步,一个好的文件同步工具省时省力,这里介绍几款开源的Linux文件同步工具1.rsync:rsync是Linux上一个功能强大的命令行工具,可以在不同的服务器之间同...

Linux 系统使用 rsync + inotify 实现文件实时同步

Linux系统使用rsync+inotify实现文件实时同步简介inotify监控文件的变化后通知rsync进行文件的同步#配置免密登录ssh-keygen-trsaca...

Linux 远程数据同步工具详解(linux远程同步命令)

一、简介1认识Rsync(remotesynchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之...

构建基于 Linux 的 NTP 时间同步集群与时间安全防护实战指南

一、为什么时间同步对系统如此重要?在分布式系统、数据库复制、消息队列、审计日志、安全认证(如Kerberos)、容器编排等场景中,系统时间一致性是保障正确性与安全性的基础。一旦服务器间时间漂移,可能...

每日Linux学习:同步备份工具 rsync

rsync是一个用于高效同步文件和目录的工具。它通过仅传输变化的部分(增量传输)来节省时间和带宽,支持本地同步、远程同步(通过SSH),还能保留文件原有权限、时间戳等属性。本文通过几个常用的实例来...

Chromixium OS 1.0发布 基于Ubuntu发行版

Chromixium项目宣布chromixiumOS1发布,一款基于Ubuntu的Linux分支,chromixiumOS试图重新打造一款外观和感觉与ChromeOS相似的完...

iOS8.0.X~iOS8.1完美越狱!盘古团队出品

【巴士速递·移动情报站】最新消息,iOS8.1越狱了!!此次越狱依旧是iOS7时代我国的大神盘古团队带来的,而该次越狱支持最新的iPhone6、iPhone6Plus、iPadAir2和iPad...