与vi编辑器有关的Linux终端命令

1、vi

  • viLinux系统中最经典的文本编辑器。

  • vi的核心设计思想:让程序员的手指始终保持在键盘的核心区域,就能完成所有的编辑操作

    键盘核心区域示意图

  • 没有图形界面的环境下,要编辑文件,vi是最佳的选择。

  • vi编辑器在系统管理服务器管理编辑文件时,其功能永远不是图形界面的编辑器所能比拟的

  • 在实际应用中,对服务器上的文件进行简单的修改可使用ssh命令远程登录到服务器,并使用vi编辑器进行快速的编辑。

常见需要修改的文件
  • 源程序
  • 配置文件。如:ssh的配置文件~/.ssh/config
vi的特点
  • 没有图形界面功能强大的编辑器。
  • 只能是编辑文本内容,不能对字体、段落进行排版。
  • 不支持鼠标操作
  • 没有菜单
  • 只有命令

2、vi和vim

  • vim是从vi发展出来的一个文本编辑器,它支持代码补全编译错误跳转等方便编程的功能,在程序员中被广泛使用,被称为编辑器之神
  • 在很多Linux发行版中,直接把vi做成了vim的软链接。也就是说在终端中输入vi命令打开的是vim文本编辑器。

3、打开和新建文件

vi 文件名
  • 文件已存在,就会打开这个文件。
  • 文件不存在,将会新建一个文件。
打开文件并定位到指定行

在实际应用中,有时候我们需要打开一个文件并定位到指定行。比如,在编译运行某个程序时,发现某行代码有错误,就可以使用下面的命令快速定位到出错代码的位置。

vi 文件名 +行号
  • 只有+而不指定行号,就会定位到文件的末尾
  • 只有vi 文件名,则会定位到文件的开头

4、异常处理

  • 如果vi异常退出,在磁盘上可能会保存有交换文件
  • 再次使用vi编辑该文件时,将会看到如下图所示的提示信息。这时只需按下键盘上的 d 键删除交换文件即可。
    异常处理示意图

5、vi的三种工作模式

1) 命令模式
  • 使用vi打开文件首先进入的是命令模式。命令模式是vi入口
  • 通过命令对文件进行常规的编辑操作。包括定位翻页复制粘贴删除等等。
  • 其他图形界面的编辑器中,通过快捷键鼠标实现的操作,在终端中都用命令模式来实现。
2) 末行模式
  • 退出vi返回控制台,需要在末行模式下输入命令。
  • 末行模式是vi出口

末行模式命令

命令 作用
:w 保存
:q 退出。如果没有保存,不允许退出
:q! 强制退出,即不保存退出
:wq 保存并退出
:x 保存并退出
3) 编辑模式
  • 编辑文字。
三种工作模式之间的切换示意图
在这里插入图片描述

6、常用命令

  • 重复次数

命令模式下,先输入一个数字再跟上一个命令(可以是移动选择命令,也可以是编辑操作命令),可以让该命令重复执行指定次数

  • 移动和选择

vi之所以快,关键在于能够快速定位到要编辑的代码行

移动命令可以和编辑操作命令组合使用

  • 编辑操作

删除复制粘贴替换缩排

  • 撤销和重复

  • 查找替换

  • 编辑

7、移动命令

命令 作用
h 向左
j 向下
k 向上
l 向右
  • 行内移动
命令 作用
w 向后移动一个单词
b 向前移动一个单词
0 行首
^ 行内的第一个非空字符
$ 行尾
  • 行数移动
命令 作用
gg 文件顶部
G 文件末尾
ngg 移动到指定数字的行(其中n为数字)
nG 移动到指定数字的行(其中n为数字)
:n 移动到指定数字的行(其中n为数字)
  • 屏幕移动
命令 作用
Ctrl + b 向上翻页
Ctrl + f 向下翻页
H 屏幕顶部
M 屏幕中间
L 屏幕底部
  • 段落移动(程序)

在程序开发过程中,一段功能相关的代码通常会写在一起,并且这段代码之间没有空行,这就是段落vi中使用空行来区分段落。

命令 作用
{ 上一段
} 下一段
  • 括号切换(程序)

在程序中开发过程中,()[]{}的使用频率很高,并且都是成对出现的。

命令 作用
% 括号匹配及切换
  • 标记(程序)
命令 作用
mx 添加标记x,其中x为标记名称
'x 直接定位到标记x所在的位置
说明
  • 在程序开发过程中,若某一行代码需要作稍后处理,就可以对这行代码进行标记。这样就可以在需要时快速跳转回来执行其他的编辑操作
  • 标记并不会高亮显示字体,只是一个隐藏的标记。
  • 标记名称只能是a~zA~Z之间的任意一个字母。
  • 添加了标记的如果被删除,则标记也同时被删除
  • 其他行中添加了相同名称的标记,则之前添加的标记会被替换

8、选中文本

  • vi选中文本,需要先用Visual命令切换到可视模式
  • vi提供了三种可视模式。
命令 模式 作用
v 可视模式 从光标位置开始选择文本
V 可视行模式 选中光标经过的完整行
Ctrl + v 可视块模式 选中垂直方向的文本
  • 可视模式下可以与移动命令组合使用。如:ggVG命令能够选中所有文本
  • Esc键可撤销选中,返回命令模式

9、撤销和恢复撤销

命令 作用
u 撤销上一步操作
Ctrl + r 恢复上一步操作

10、 删除文本

命令 作用
x 删除光标所在字符,或删除选中文本
d + 移动命令 删除移动命令对应的内容
dd 删除光标所在行
D 删除光标所在位置到行尾之间的内容
说明
  • 可视模式选中的文本,无论用x命令还是d命令,都可以删除选中的文本。
删除命令和移动命令常见的组合
组合 作用
dw 删除从光标所在位置到单词末尾的内容
d0 删除从光标所在位置到行首的内容
d} 删除从光标所在位置到段落结尾的内容
ndd 删除从光标所在行开始往下的(n-1)行(其中n为数字)
dnG 删除从光标所在行到指定行号的内容(其中n为行号)
d'x 删除从光标所在行到标记x所在行的内容(其中x为标记名称)
注意
  • 删除的内容包括光标所在的位置以及光标所在的行

11、复制和粘贴

  • vi提供了一个被复制文本的缓冲区
  • 复制命令将选中的文本保存在缓冲区。
  • 删除命令删除的文本也被保存在缓冲区。
  • 粘贴命令可以将缓冲区的文本插入到光标所在的位置。
命令 作用
y + 移动命令 复制
yy 复制一行。nyy可复制多行(其中n为数字)
p 粘贴。np可粘贴多次(其中n为数字)
说明
  • dx命令类似于图形界面的剪切操作(Ctrl + X)。
  • y命令类似于图形界面的复制操作(Ctrl + C)。
  • p命令类似于图形界面的粘贴操作(Ctrl + V)。
注意
  • vi的文本缓冲区只有一个。所以进行多次的复制剪切操作,之前缓冲区的内容会被覆盖
  • vi文本缓冲区系统剪贴板不是同一个。所以在其他软件中使用Ctrl + C复制的内容,在vi中不能通过p命令粘贴,能在编辑模式下使用鼠标右键粘贴。

12、替换

命令 作用 工作模式
r 替换当前字符 命令模式
R 替换光标所在位置及往后的字符 替换模式
说明
  • R命令可进入替换模式,替换完成后按Esc键可返回命令模式
  • 替换命令的作用是不进入编辑模式,对文件进行轻量级修改

13、缩排和重复执行

  • 在程序开发过程中,缩排命令对于统一增加代码的缩进非常有用。
  • 在程序中,缩进通常用来表示代码的归属关系代码前面的空格越少,级别越高代码前面的空格越多,级别越低
  • 增加缩进:一次性在选中的代码前增加4个空格。
  • 减少缩进:一次性在选中的代码前删除4个空格。
命令 作用
>> 增加缩进
<< 减少缩进
. 重复上次命令
说明
  • 可视模式中,缩排命令只需用一个><

14、查找

  • 常规查找
命令 作用
/str 查找str

查找到指定内容后,使用Next命令查找下一个出现的位置。

命令 作用
n 查找下一个
N 查找上一个
  • 单词快速匹配
命令 作用
* 往后查找当前光标所在的单词
# 往前查找当前光标所在的单词
说明
  • 查找到的指定内容会以高亮的方式显示。
  • 如果不想看到高亮显示,查找一个文件中不存在的内容即可。

15、查找并替换

  • vi查找和替换命令需要在末行模式下执行。
1) 全局替换

一次性替换文件中出现的所有旧文本

:%s/旧文本/新文本/g
2) 可视区域替换

可视模式下选中要替换文本,使用下面的命令替换选中文本中出现的所有旧文本

:s/旧文本/新文本/g
3) 确认替换(推荐使用)

全局替换命令末尾的g改成gc,则在替换时会有提示,这就是确认替换

:%s/旧文本/新文本/gc

提示之后可能要输入的命令:

命令 作用
y 替换。如果有多个,则一次只替换一个
n 不替换。如果有多个,则一次只取消替换一个
a 替换所有
q 退出替换
l 替换最后一个,并把光标移动到行首
Ctrl + E 向下滚屏
Ctrl + Y 向上滚屏

16、插入

插入命令可以从命令模式切换到编辑模式

命令 作用
i 在当前字符前插入文本
I 在行首插入文本
a 在当前字符后插入文本
A 在行尾插入文本
o 在当前行下面插入一空行,并把光标移动到空行行首
O 在当前行上面插入一空行,并把光标移动到空行行首
1) 插入命令与数字的组合使用
  • 在程序开发过程中,可能会遇到需要重复N次的情况。

    如:需要在vi中输入NHello World。可按如下操作进行:

    ① 首先在命令模式中输入数字N,表示要重复N次
    ② 紧接着输入i进入编辑模式
    ③ 在编辑模式中输入要重复的内容,即Hello World
    ④ 最后按Esc键从编辑模式返回到命令模式,返回之后vi就会把②、③两步的操作重复执行(N - 1)次。

注意
  • 正常开发时,进入编辑模式前不要输入数字
2) 利用可视块给多行代码添加注释
  • 在程序开发过程中,可能会遇到需要一次性给多行代码添加注释的情况。

    如:需要给C语言的某一块代码添加注释。可按如下操作进行:

    ① 首先在命令模式中把光标移动到需要添加注释的第1行代码,并按数字0来到行首。
    ② 紧接着按Ctrl + v进入可视块模式
    ③ 在可视块模式中按j键向下选中要添加注释的代码。
    ④ 再接着输入I进入编辑模式,并在行首插入注释符,即//
    ⑤ 最后按Esc键从编辑模式返回到命令模式,返回之后vi就会在之前选中的每一行代码前插入注释符//

注意
  • 可视块模式中使用i不能进入编辑模式,需要使用I进入编辑模式。

17、末行命令扩展

末行命令主要针对文件进行操作,包括保存退出保存并退出搜索并替换另存为浏览文件新建文件等等。

命令 作用
:e . 打开内置的文件浏览器,浏览当前目录下的文件。使用jkEnter键可浏览或打开文件
:e 文件名 切换到当前目录下指定的文件。不需要退出vi
:n 文件名 新建文件
:w 文件名 另存为。编辑的仍然是当前文件,不会切换文件
:%s///gc 确认搜索并替换
说明
  • 切换文件之前,必须保证当前文件已保存
  • 在程序开发过程中,可以使用w命令进行阶段性备份

18、分屏

分屏命令属于vi的高级命令,使用它可以同时编辑和查看多个文件

命令 作用
:sp [文件名] 横向分屏
:vsp [文件名] 纵向分屏
说明
  • 文件名不知道的情况下,可以使用:sp .命令(或:vsp .命令)。此命令打开的是内置的文件浏览器,可浏览当前目录下的文件。
切换分屏窗口

分屏窗口基于window,在实际操作时表现为基于Ctrl + W这个快捷键。也就是说,使用下面的命令之前需要先按Ctrl + W

命令 作用
w 切换到一个窗口
r 互换窗口
c 关闭当前窗口
q 退出当前窗口。如果是最后一个窗口,则关闭vi
o 关闭其他窗口
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 161,513评论 4 369
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,312评论 1 305
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,124评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,529评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,937评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,913评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,084评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,816评论 0 205
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,593评论 1 249
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,788评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,267评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,601评论 3 261
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,265评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,158评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,953评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,066评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,852评论 2 277

推荐阅读更多精彩内容

  • vi —— 终端中的编辑器 目标 vi 简介 打开和新建文件 三种工作模式 常用命令 分屏命令 常用命令速查图 0...
    酱油哥带你学阅读 1,424评论 0 1
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,314评论 0 5
  • 1. 关于Vim vim是我最喜欢的编辑器,也是linux下第二强大的编辑器。 虽然emacs是公认的世界第一,我...
    Dyworldhua阅读 1,260评论 0 2
  • 目标 vi 简介 打开和新建文件 三种工作模式 常用命令 分屏命令 常用命令速查图 01. vi 简介 1.1 学...
    __深蓝__阅读 483评论 0 1
  • vi —— 终端中的编辑器 目标 vi 简介 打开和新建文件 三种工作模式 常用命令 分屏命令 常用命令速查图 0...
    努力爬行中的蜗牛阅读 772评论 0 0