openEuler、linux vi编辑器命令很齐全的一个使用说明文档

进入 vi 编辑器

可以通过以下方式进入 vi 编辑器:

命令描述
vi filename如果filename存在,则打开;否则会创建一个新文件再打开。
vi -R filename以只读模式(只能查看不能编辑)打开现有文件。
view filename以只读模式打开现有文件。

例如,使用 vi 编辑器创建一个新文件并打开:

vi  myfile.txt

 竖线(|)代表光标的位置;(~) 波浪号代表该行没有任何内容。如果没有 ~,也看不到任何内容,那说明这一行肯定是有空白字符(空格、tab 缩进、换行符等)或不可见字符。

工作模式

进一步了解 vi 之前先来了解一下 vi 的工作模式,vi 有三种工作模式:

1) 普通模式

由Shell进入vi编辑器时,首先进入普通模式。在普通模式下,从键盘输入任何字符都被当作命令来解释。普通模式下没有任何提示符,输入命令后立即执行,不需要回车,而且输入的字符不会在屏幕上显示出来。

普通模式下可以执行命令、保存文件、移动光标、粘贴复制等。

2) 编辑模式

编辑模式主要用于文本的编辑。该模式下用户输入的任何字符都被作为文件的内容保存起来,并在屏幕上显示出来。

3) 命令模式

命令模式下,用户可以对文件进行一些高级处理。尽管普通模式下的命令可以完成很多功能,但要执行一些如字符串查找、替换、显示行号等操作还是必须要进入命令模式。

注意:有些教程中称有两种工作模式,是把命令模式合并到普通模式。

工作模式切换:

  • 在普通模式下输入 i(插入)、c(修改)、o(另起一行) 命令时进入编辑模式;按 esc 键退回到普通模式。
  • 在普通模式下输入冒号(:)可以进入命令模式。输入完命令按回车,命令执行完后会自动退回普通模式。

提示:如果不确定当前处于哪种模式,按两次 Esc 键将回到普通模式。

退出 vi 编辑器

一般在命令模式下退出 vi 编辑器。

退出命令

说明

q

如果文件未被修改,会直接退回到Shell;否则提示保存文件。

q!

强行退出,不保存修改内容。

wq

w 命令保存文件,q 命令退出 vi,合起来就是保存并退出。

x保存并退出

ZZ

保存并退出,相当于 wq,但是更加方便。

退出之前,你也可以在 w 命令后面指定一个文件名,将文件另存为新文件,例如:

w filename2

将当前文件另存为 filename2。

注意:vi 编辑文件时,用户的操作都是基于缓冲区中的副本进行的。如果退出时没有保存到磁盘,则缓冲区中的内容就会被丢失。

移动光标

为了不影响文件内容,必须在普通模式(按两次 Esc 键)下移动光标。使用下表中的命令每次可以移动一个字符:

命令

描述

k

向上移动光标(移动一行)

j

向下移动光标(移动一行)

h

向左移动光标(移动一个字符)

l

向右移动光标(移动一个字符)

行内移动

命令英文功能
wword向后移动一个单词
bback向前移动一个单词
0行首
^行首,第一个不是空白字符的位置
$行尾

行数移动

命令英文功能
gggo文件顶部
Ggo文件末尾
数字Ggo移动到 数字 对应行数
数字移动到 数字 对应行数

屏幕移动

命令英文功能
Ctrl + bback向上翻页
Ctrl + fforward向下翻页
HHead屏幕顶部
MMiddle屏幕中间
LLow屏幕底部

屏幕滚动

命令

描述

CTRL+d

向前滚动半屏

CTRL+f

向前滚动全屏

CTRL+u

向后滚动半屏

CTRL+b

向后滚动整屏

CTRL+e

向上滚动一行

CTRL+y

向下滚动一行

CTRL+I

刷新屏幕

移动(程序)

段落移动

  • vi 中使用 空行 来区分段落
  • 在程序开发时,通常 一段功能相关的代码会写在一起 —— 之间没有空行
命令功能
{上一段
}下一段

括号切换

  • 在程序世界中,()[]{} 使用频率很高,而且 都是成对出现的
命令功能
%括号匹配及切换

两点提醒:

  • vi 是区分大小写的,输入命令时注意不要锁定大写。
  • 可以在命令前边添加一个数字作为前缀,例如,2j 将光标向下移动两行。

当然,还有很多其他命令来移动光标,不过记住,一定要在普通模式(按两次 Esc 键)下。

标记

  • 在开发时,某一块代码可能需要稍后处理,例如:编辑、查看
  • 此时先使用 m 增加一个标记,这样可以 在需要时快速地跳转回来 或者 执行其他编辑操作
  • 标记名称 可以是 a~z 或者 A~Z 之间的任意 一个 字母
  • 添加了标记的 行如果被删除标记同时被删除
  • 如果 在其他行添加了相同名称的标记之前添加的标记也会被替换掉
命令英文功能
mxmark添加标记 x,x 是 a~z 或者 A~Z 之间的任意一个字母
'x直接定位到标记 x 所在位置

选中文本(可视模式)

  • 在 vi 中要选择文本,需要先使用 Visual 命令切换到 可视模式
  • vi 中提供了 三种 可视模式,可以方便程序员选择 选中文本的方式
  • 按 ESC 可以放弃选中,返回到 命令模式
命令模式功能
v可视模式从光标位置开始按照正常模式选择文本
V可视行模式选中光标经过的完整行
Ctrl + v可视块模式垂直方向选中文本

注意:可视模式下,可以和移动命令连用,例如:ggVG能够选中所有内容

 撤销和恢复撤销

  • 在学习编辑命令之前,先要知道怎样撤销之前一次 错误的 编辑动作!
命令英文功能
uundo撤销上次命令
CTRL + rredo恢复撤销的命令

编辑文件

切换到编辑模式下才能编辑文件。有很多命令可以从普通模式切换到编辑模式,如下所示:

命令

描述

i

在当前光标位置之前插入文本

I

在当前行的开头插入文本

a

在当前光标位置之后插入文本

A

在当前行的末尾插入文本

o

在当前位置下面创建一行

O

在当前位置上面创建一行

删除字符

下面的命令,可以删除文件中的字符或行:

命令

说明

x

删除当前光标下的字符

X

删除光标前面的字符

dw

删除从当前光标到单词结尾的字符

d^

删除从当前光标到行首的字符

d$

删除从当前光标到行尾的字符

D

删除从当前光标到行尾的字符

dd

删除当前光标所在的行

可以在命令前面添加一个数字前缀,表示重复操作的次数,例如,2x 表示连续两次删除光标下的字符,2dd 表示连续两次删除光标所在的行。

建议各位读者多加练习上面的命令,再进一步深入学习。

修改文本

如果你希望对字符、单词或行进行修改,可以使用下面的命令:

命令

描述

cc

删除当前行,并进入编辑模式。

cw

删除当前字(单词),并进入编辑模式。

r

替换当前光标下的字符。

R

从当前光标开始替换字符,按 Esc 键退出。

s

用输入的字符替换当前字符,并进入编辑模式。

S

用输入的文本替换当前行,并进入编辑模式。

粘贴复制

vi 中的复制粘贴命令:

命令

描述

yy

复制当前行

nyy

复制n行

yw

复制一个字(单词)

nyw

复制n行

p

将复制的文本粘贴到光标后面

P

将复制的文本粘贴到光标前面

高级命令

下面的一些命令虽然看起来有些古怪,但是会让你的工作更有效率,如果你是 vi 重度用户,就了解一下吧。

命令

说明

J

将当前行和下一行连接为一行

<<

将当前行左移一个单位(一个缩进宽度)

>>

将当前行右移一个单位(一个缩进宽度)

~

改变当前字符的大小写

^G

Ctrl+G组合键可以显示当前文件名和状态

U

撤销对当前行所做的修改

u

撤销上次操作,再次按 'u' 恢复该次操作

:f

以百分号(%)的形式显示当前光标在文件中的位置、文件名和文件的总行数

:f filename

将文件重命名为 filename

:w filename

保存修改到 filename

:e filename

打开另一个文件名为 filename 的文件

:cd dirname

改变当前工作目录到 dirname

:e #

在两个打开的文件之间进行切换

:n

如果用 vi 打开了多个文件,可以使用 :n 切换到下一个文件

:p

如果用 vi 打开了多个文件,可以使用 :n 切换到上一个文件

:N

如果用 vi 打开了多个文件,可以使用 :n 切换到上一个文件

:r file

读取文件并在当前行的后边插入

:nr file

读取文件并在第 n 行后边插入

文本查找、替换

常规查找

命令功能
/str查找 str
  • 查找到指定内容之后,使用 Next 查找下一个出现的位置:
    • n: 查找下一个
    • N: 查找上一个
  • 如果不想看到高亮显示,可以随便查找一个文件中不存在的内容即可

单词快速匹配

命令功能
*向后查找当前光标所在单词
#向前查找当前光标所在单词
  • 在开发中,通过单词快速匹配,可以快速看到这个单词在其他什么位置使用过

 查找并替换

  • 在 vi 中查找和替换命令需要在 末行模式 下执行
  • 记忆命令格式:
:%s///g

文本替换

切换到命令模式,再输入 s/ 命令即可对文本进行替换。语法为:

:s/search/replace/g

search 为检索的文本,replace 为要替换的文本,g 表示全局替换。

全局替换

  • 一次性替换文件中的 所有出现的旧文本
  • 命令格式如下:
:%s/旧文本/新文本/g

可视区域替换

  • 先选中 要替换文字的 范围
  • 命令格式如下:
:s/旧文本/新文本/g

确认替换

  • 如果把末尾的 g 改成 gc 在替换的时候,会有提示!推荐使用!
c表示conform。
:%s/旧文本/新文本/gc
  1. y - yes 替换
  2. n - no 不替换
  3. a - all 替换所有
  4. q - quit 退出替换
  5. l - last 最后一个,并把光标移动到行首
  6. ^E 向下滚屏
  7. ^Y 向上滚屏

如果希望进行全文件搜索,可以在普通模式(按两次 Esc 键)下输入 / 命令,这时状态栏(最后一行)出现"/"并提示输入要查找的字符串,回车即可。

/ 命令是向下查找,如果希望向上查找,可以使用 ? 命令。

这时,输入 n 命令可以按相同的方向继续查找,输入 N 命令可以按相反的方向继续查找。

搜索的字符串中可以包含一些有特殊含义的字符,如果希望搜索这些字符本身,需要在前面加反斜杠(\)。

如果希望搜索某行中的单个字符,可以使用 f 或 F 命令,f 向上搜索,F 向下搜索,并且会把光标定位到匹配的字符。

也可以使用 t 或 T 命令:t 命令向上搜索,并把光标定位到匹配字符的前面;T 命令向下搜索,并把光标定位到匹配字符的后面。

set 命令

set 命令可以对 vi 编辑器进行一些设置。使用 set 命令需要进入命令模式。


显示隐藏分隔符

set list 

可以看到分隔符为制表符。

取消显示隐藏制表符

set nolist

显示行号

set nu

 取消显示行号

set nonu

设置只读

set readonly

 指定tab缩进的字符数

set tabstop=4 # 设置为4个格

转换文件格式

set ff=unix # 转为unix格式set ff=dos # 转为dos格式

设置编码格式

set encoding=utf-8 # utf-8格式

自动对齐

set ai

取消自动对齐

set noai

运行命令

切换到命令模式,再输入 ! 命令即可运行 Linux 命令。

例如,保存文件前,如果希望查看该文件是否存在,那么输入

:! ls即可列出当前目录下的文件。

按任意键回到 vi 编辑器。

分屏命令

  • 使用 分屏命令,可以 同时编辑和查看多个文件
命令英文功能
:sp [文件名]split横向增加分屏
:vsp [文件名]vertical split纵向增加分屏

切换分屏窗口

分屏窗口都是基于  CTRL + W 这个快捷键的, w 对应的英文单词是  window
命令英文功能
wwindow切换到下一个窗口
rreverse互换窗口
cclose关闭当前窗口,但是不能关闭最后一个窗口
qquit退出当前窗口,如果是最后一个窗口,则关闭 vi
oother关闭其他窗口

调整窗口大小

分屏窗口都是基于  CTRL + W 这个快捷键的, w 对应的英文单词是  window
命令英文功能
+增加窗口高度
-减少窗口高度
>增加窗口宽度
<减少窗口宽度
=等分窗口大小
调整窗口宽高的命令可以和数字连用,例如: 5 CTRL + W +连续  次增加高度

终端中的字体大小更改

终端中的字体大小更改:放大是ctrl shift +,缩小是ctrl -。 终端中退出某个程序:往往是q,可能是ctrl c或是ctrl d。 以新标签页的形式打开一个终端:ctrl alt T

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值