vi编辑器详速查

Vi编辑器

Linux vi 命令也就是指 vi 编辑器,它们是一个意思。vi 编辑器是 Linux/UNIX 环境下经典的编辑器。Linux vi 命令非常强大,熟练地使用它可以高效的编辑代码,配置系统文件等,是程序员和运维人员必须掌握的技能。

声明:本文章由 http://c.biancheng.net/vi/ 经过本人简化编辑补充而来,简化了描述,删减了部分对于运维不常用的命令重新排版,方便学习以及速查

目录

  1. vi的三种模式、以及其他说明
  2. vi编辑器的进入
  3. vi编辑器修改命令
  4. vi编辑器删除命令
  5. vi编辑器复制命令
  6. vi编辑器撤销命令
  7. vi编辑器重复命令
  8. vi编辑器退出命令
  9. vi编辑器替换命令
  10. vi编辑器按字光标移动命令
  11. vi编辑器文本移动命令
  12. vi编辑器检索命令
  13. vi编辑器替换命令
  14. vi编辑器窗口切分命令
  15. vi编辑器属性设置
  16. vi编辑器寄存器

1.VI的三种模式、以及其他说明

1. 命令模式

该模式是进入 vi 编辑器后的默认模式。任何时候,不管用户处于何种模式,按下Esc键即可进入末行模式。

在末行模式下,用户可以输入 vi 命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释。若输入的字符是合法的 vi 命令,则 vi 在接受用户命令之后完成相应的动作。

2. 文本输入模式

在末行模式下输入插入命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式。

在该模式下,用户输入的任何字符都被 vi 当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到末行模式下,按下Esc键即可。

3. 末行模式(ex转义模式)

在末行模式下,用户按:键即可进入末行模式,此时 vi 会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个:作为末行模式的说明符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。

I
~
~
~
~
~
~
~
~
~
~
~
~
"test.c" [New File]

I表示光标

进入 vi 之后,首先进入的就是末行模式,也就是说等待命令输入而不是文本输入。这时输入的字母都将作为命令来解释。

光标表示 vi 编辑器的当前编辑位置停留在屏幕第 1 行首位上。其余各行行首均有一个~符号,表示该行为空行。

命令执行完后,vi 自动回到末行模式。

4. 光标移动

hjkl

5. 行移动

HMLnG
当前屏幕第一行当前屏幕中间行挡片屏幕最后一样移动至全文第n行

6. 行移动

ctrl+uctrl+dctrl+f/PgUpctrl+b/PgDn
向上翻滚半屏向下翻滚半屏向上翻滚整屏向下翻滚整屏

7.文首文尾移动

gg 移动到文件最开头

G 移动到文件最末尾

2.vi编辑器的进入

创建或者进入文件

$ vi filename

示例

$ vi tmp.sh

进入文件时跳转到指定行(调试shell脚本时常用)

$ vi +[行号] filename

示例

$ vi +5 tmp.sh

$ vi + tmp.sh       //把数字去掉为最末行

匹配进入

$ vi +/[匹配内容] filename

示例

$ vi +/main tmp.sh      //与直接在末行模式执行 '/' 相似

3. vi编辑器修改命令

插入命令[命令模式]->[文本输入模式]

末行模式下输入i I此时 vi 处于文本插入状态,屏幕最下行显示 “--INSERT--”说明信息。

i 插入到光标所在位置前

I 在行首插入

追加命令[命令模式]->[文本输入模式]

末行模式下输入a A 此时 vi 处于文本插入状态,屏幕最下行显示 “--INSERT--”说明信息。

a 插入到光标所在位置后

A 行尾追加

插入空行(常用)[命令模式]->[文本输入模式]

末行模式下输入o O 此时 vi 处于文本插入状态,屏幕最下行显示 “--INSERT--”说明信息。

o 所在行下面插入一个空行。

O 所在行上面插入一个空行。

删除当前行后插入(常用)[命令模式]

cc

删除当前单词后插入[命令模式]

cw以单词为界限(常用)

cW以空格为界限

4. vi编辑器删除命令

单个字符删除[命令模式]

x 不进入文本输入模式删除后面一个字符。

X 不进入文本输入模式删除前面一个字符。

删除当前行(常用)[命令模式]

dd

删除行首到光标位置字符[命令模式]

d0

删除一个单词[命令模式]

dw以单词为界限。

dW以空格为界限。

5. vi编辑器修改命令

复制都可以用p粘贴(常用)

复制行[命令模式]

yy复制光标所在的整行。在 yy 前可加一个数字,表示复制往下n行(常用)。

yw以单词为界限复制,可加n。

yW以空格为界限复制,可加n。

文本选择命令[命令模式]

v块选择模式

V行选择模式

6. vi编辑器撤销命令

撤销[命令模式]

u该命令撤销上一次所做的操作(常用)。

U该命令会一次性撤销自上次移动到当前行以来做过的所有操作,再使用一次 U 命令则撤销之前的 U 命令所做的操作,恢复被撤销的内容。

7. vi编辑器重复命令

重复命令只能在末行模式下工作,在该模式下按下.键即可。

8. vi编辑器退出命令(常用)

退出[末行模式]

:q没有做修改情况下退出

强制退出[末行模式]

:q!不保存强制退出

保存[末行模式]

:w保存不退出

:w filename另存为

:w! filename不询问强制另存为

保存且退出[末行模式]

:wq保存退出

:wq!强制保存退出

:x如果修改过则保存退出,如果未修改过则直接退出

9. vi编辑器替换命令

替换[命令模式] (常用)

r替换当前字符

nr替换往后n个字符

替换模式[命令模式]

R进入替换模式,每个输入的字符都会替换当前光标下的字符,ESC结束

10. vi编辑器按字光标移动命令

按单词移动[命令模式]

w移动到下个一个单词首

W移动到下个一个单词首,以空格为分隔

e移动到本个、下个单词尾

E移动到本个、下个单词尾,以空格为分隔

b移动到本个、上个单词首

B移动到本个、上个单词首,以空格为分隔

行首行尾[命令模式]
$光标移动至行尾

^光标移动至行首

Home光标移动至行尾

End光标移动至行首

11. vi编辑器文本移动命令

向后移动[命令模式]

>n当前光标后n行向右移动8个空格,回车确定

<n当前光标后n行向左移动8个空格,回车确定

n>>当前光标后n行向右移动8个空格

n<<当前光标后n行向左移动8个空格

跨行移动[末行模式]

imj 把第 i 行移至第 j 行的下方

合并两行[命令模式]

J合并本行和下一行

12. vi编辑器检索命令

查找字符串[末行模式] (常用)(可匹配正则)

/string向下查找

?string向上查找

当前行内查找字符串[命令模式]

ff后加字符,向后查找

FF后加字符,向前查找

重复[末行模式]

n重复上条查找命令

N重复上条查找命令,方向相反

13. vi编辑器替换命令

替换[末行模式] (常用)(可匹配正则)

[range]s/s1/s2/ [option]

[range] 表示检索范围,省略时表示当前行。下面是一些检索范围的例子。

  • 1,10表示从第 1 行到 10 行。
    • %表示整个文件,同1,$
    • .,$从当前行到文件尾。
    • s 为替换命令。
  • s1 要被替换的串,s2 为替换的串。
  • option 表示选项:
    • c表示在每次替换之前需要用户进行确认。

14. vi编辑器窗口切分

窗口切分(末行模式)

:split :sp窗口切分

:split filename :sp fielname窗口切分打开新文件

Ctrl+w,然后 jCtrl+w,然后kCtrl+w,然后 qCtrl+w,然后 j
移动光标到下面的一个窗口移动光标到上面的一个窗口关闭当前窗口移动光标到另一个窗口

15. vi编辑器属性设置

末行模式下执行

:set 查看当前编辑器环境变量

:set all 查看当前编辑器全部环境变量

:set tabstop=n 设置制表停止位(tabstop)的长度(常用)

:set fileencoding 查看当前文件编码格式

vi filename -c “e ++enc=GB2312” 通过指定字符集进入

:set fileformat 查看文件格式

:set ff=unix 将文件格式转为unix格式(常用)

:set ff=dos 将文件格式转为dos格式

:set list 显示不可视字符(常用)

:set nolist 不显示不可视字符(常用)

:set nu 显示行号(常用)

:set nonu 隐藏行号(常用)

:set ignorecase 开启忽略大小写

:set noignorecase 关闭忽略大小写

:set wrap 自动换行

:set nowrap 不自动换行

16. vi编辑器寄存器

详细说明 https://www.jianshu.com/p/37ee22d13cb5

:reg :registers 查看寄存器内容

无名寄存器

vi有默认的无名寄存器,任何被命令删除或者复制的内容都会放到无名寄存器中
寄存器标识为0-9

0一直为最新内容

1-9为历史内容

有名寄存器

可以通过

"ad 剪切

"ay 复制

"ap 粘贴

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值