在UNIX下,vi是标准的文本编辑器之一。vi编辑器是Linux下应用最广泛的文本编辑器,在日常工作中几乎每时每刻都会用到vi编辑器,熟悉vi下的一些常用功能有助于提高工作效率。vi编辑器有三种操作模式:命令模式、插入模式、末行模式,插入模式即为编辑模式,下面着重介绍命令模式和末行模式。
以下内容中:小写字母(如 a)代表按下相应的键,大写字母(如 A)代表同时按下Shift+字母,特殊字符如$表示需要按下Shift+4,跟正常输入相同。
一、三种命令模式的切换
命令模式<==>插入模式
我们使用vi打开一个文件,默认模式就是命令模式,键入’a’或’i’就会进入插入模式,在插入模式下按下Esc键就重新回到了命令模式。
命令模式<==>末行模式
在命式模式时键入’:’即可进入末行模式,在末行模式下按下Esc键就重新回到了命令模式。
插入模式<==>末行模式
在插入模式想进入末行模式,先按下Esc键就进入命令模式,再键入’:’即可进入末行模式
在末行模式想进入插入模式,先按下Esc键就进入命令模式,再键入’a’或’i’就会进入插入模式
二、常用命令汇总
1.命令模式

操作 命令
光标右移 l(小写的L)
光标右移n个字符 nl
光标左移 h
光标左移n个字符 nh
光标下移 j
光标下移n个字符 nj
光标上移 k
光标上移n个字符 nk
移动光标到行首 0(数字0)
移动光标到行末 $
移动光标到文件末尾 G
移动光标到文件开头 gg
移动光标到下一个单词开头 w
移动光标到当前或下一个单词结尾 e
移动光标到当前或下一个单词开头 b
移动光标到该行第一个非空白字符 ^
移动光标到句尾 )
移动光标到句首 ( 注:vi中句子用半角句号后加一个空格(. )分割
移动光标到段尾 )
移动光标到段首 ( 注:vi中段落以空行分割
将光标定位到第n行的开头 nG
将光标下移n行 n+
将光标上移n行 n-
将光标下移n行并置于行尾 n$
移动光标到屏幕最顶行 H
移动光标到屏幕最底行 L
移动光标到当前屏幕中间行 M
当前行往右移动8个字符 >>(相当于tab键)
当前行往左移动8个字符 >>(相当于Shfit键+tab键)
改变当前光标所在字符大小写 ~(大写变小写,小写变大写)
删除当前字符到单词尾所有字符 dw
复制当前光标所在行 yy
复制n行 nyy(当前光标以下n行)
复制光标所在位置到单词尾字符(不包括空格)的内容到vi缓存区,相当于复制一个单词 yw
nyw 复制n个单词
复制光标所在位置到行尾内容到缓存区 y$
复制光标所在位置到行首内容到缓存区 y^
将缓存区的内容粘贴到当前行的下方 p
将缓存区的内容粘贴到当前行的上方 P
x 删除光标所在位的字符
ndd 删除n行
dd 删除光标所在的行
rx 使用x替代光标所在位置的字符
i 进入插入模式
a 将光标移至当前所在位置的右侧,并进入插入模式
o 在光标所在行下一行增添新行,并进入插入模式
O 在光标所在行上一行增添新行,并进入插入模式
I 将光标定位到行开头,并进入插入模式
A 将光标定位到行末尾,并进入插入模式
撤销最近一次的操作 u(可以多次使用恢复到原来的内容)
撤销所有操作 U

2.末行模式

操作 命令
保存文件 w
将当前文件的内容保存到file文件 w file
保存文件并退出vi编辑器 wq
将当前文件的内容写入file 文件,然后退出vi编辑器 wq file
将文件file的内容插入当前光标所在行的后面 r file
关闭当前文件,并打开新文件file e file
将当前文件重命名为file f file
打印当前文件名称和状态 f
退出vi编辑器 q
强制退出vi编辑器(不保存修改) q!
将光标移到第n行 n
删除第m至第n行的内容 m,nd
复制第m行到第n行的内容 m,ny
用new_str替换光标所在行中首次出现的old_str s/old_str/new_str
用new_str替换光标所在行中的所有old_str s/old_str/new_str/g
用new_str替换第m行至第n行的所有old_str m,ns/old_str/new_str/g
用new_str替换所有的old_str %s/old_str/new_str/g
从当前光标处往下查找与pattern匹配的行,然后在该行上用new_str替换掉所有的old_str /pattern/s/old_str/new_str/g

关于行号的一些特殊表示:
‘.’表示光标所在行的行号
<script type="math/tex" id="MathJax-Element-1">’表示文件最后一行行号 </script>-1表示倒数第二行
一些例子(以下命令都是在末行模式下执行的):

操作 命令
光标从当前行向下移动6行 .+6
将光标移到文件的最后一行 $
将第5行到第10行内容写入file文件 5,15w file
将第1行到当前行内容写入file文件 1,.w file
将当前行到文件末尾内容写入file文件 .,$w file

3.vi临时文件
vi在编辑某一个文件时,会生成一个临时文件,这个文件以. 开头并以.swp结尾。正常退出该文件自动删除,如果意外退出例如忽然断电,该文件不会删除,在我们下次编辑该文件时会被要求选择以下命令处理:
O 只读打开,不改变文件内容
E 继续编辑文件,不恢复.swp文件保存的内容
R 将恢复上次编辑以后未保存文件内容
Q 退出vi
D 删除.swp文件

GitHub 加速计划 / li / linux-dash
13
2
下载
A beautiful web dashboard for Linux
最近提交(Master分支:4 个月前 )
186a802e added ecosystem file for PM2 5 年前
5def40a3 Add host customization support for the NodeJS version 5 年前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐