日常 VI 编辑总结
1、常用操作命令
0:行首 $:行尾
gg:文档开始处 G:文档结束处
H/M/L: 移动光标到屏幕的首行、中间一行、尾行
Ctrl+f/Ctrl+b: 向文件尾翻一屏、首翻一屏
/word:搜索word
n:搜索下一个,N:反方向查找
dd:删除当前行,10dd删除当前10行,dw:删除当前单词
yy:复制当前行,10yy复制当前10行
p:粘贴在光标之后
u:取消上一次操作
:set nu显示行号
'':移动光标到上一个标记处
'.:移动光标到上一次的修改行
2、常用删除、复制、粘贴命令
yw:拷贝从当前光标到光标所在单词结尾的内容
y0:拷贝从当前光标到光标所在行首的内容
dw:删除从当前光标到光标所在单词结尾的内容
d0:表示删除从当前光标到光标所在行首的内容
y$:拷贝从当前光标到光标所在行尾的内容
d$:删除从当前光标到光标所在行尾的内容
yfa:拷贝从当前光标到光标后面的第一个a字符之间的内容
dfa:删除从当前光标到光标后面的第一个a字符之间的内容
D:删除从当前光标到光标所在行尾的内容
:12,24y:拷贝第12行到第24行之间的内容
:12,y:拷贝第12行到光标所在行之间的内容
:,24y:拷贝光标所在行到第24行之间的内容
--删除命令类似
3、替换命令
:s/aa/bb/g 将当前行所有包含 aa 的字符串中的 aa 替换为 bb
:s/\<aa\>/bb/g 将当前行所有包含 aa 的单词 替换为 bb
:%s/aa/bb/g 将文档中出现的所有包含 aa 的字符串中的 aa 替换为 bb
:12,23s/aa/bb/g 将从12行到23行中出现的所有包含 aa 的字符串中的 aa 替换为 bb
:12,23s/^/#/ 将从12行到23行的行首加入 # 字符
:%s= *$== 将所有行尾多余的空格删除
:g/^\s*$/d 将所有不包含字符(空格也不包含)的空行删除
############MORE: This record from network for collection #############################
进入vi
直接执行 vi编辑程序即可:
%vi test
此刻屏幕上会出现 vi 的编辑屏幕,同时 vi 会将文件复制一份至内存中的缓冲区 (buffer) 。 vi会保留在硬盘中的文件不变,而先对缓冲区的文件作编辑,编辑完成后,使用者可决定是否要取代原来旧有的文件。
离开vi
若在输入模式下,则先利用《ESC》进入指令模式,而后即可选用下列指令
离开vi。
:q! 离开vi,并放弃刚在缓冲区内编辑的内容。
:wq 将缓冲区内的资料写入硬盘中,并离开vi。
:ZZ 同wq。
:x 同wq。
:w 将缓冲区内的资料写入硬盘中,但并不离开vi。
:q 离开vi,若文件被修改过,则会被要求确认是否放弃修改的内容。
此指令可与:w 配合使用。
vi 的操作模式
vi 提供两种操作模式:输入模式(insert mode)和指令模式(command mode)
。当使用者进入 vi 后,即处在指令模式下,此刻键入的任何字符都被视为
指令。在此模式下可进行删除、修改等动作。若要输入资料,则需进入输入
模式。
输入模式
如何进入输入模式
a (append) 由光标之后加入资料。
A 由该行之末加入资料。
i (insert) 由光标之前加入资料。
I 由该行之首加入资料。
o (open) 新增一行于该行之下以供输入资料。
O 新增一行于该行之上以供输入资料。
如何离开输入模式
《ESC》 结束输入模式。
指令模式
光标的移动
h 向左移一个字符。
j 向上移一个字符。
k 向下移一个字符。
l 向右移一个字符。
0 移至该行之首
$ 移至该行之末。
^ 移至该行的第一个字符处。
H 移至屏幕的第一列。
M 移至屏幕的中间那列。
L 移至屏幕的最后一列。
G 移至该文件的最后一列。
+ 移至下一列的第一个字符处。
- 移至上一列的第一个字符处。
( 移至该句之首。 (注一)
移至该句之末。
{ 移至该段落之首。 (注二)
} 移至该段落之末。
nG 移至该文件的第 n 列。
n+ 移至光标所在位置之后的第 n 列。
n- 移至光标所在位置之前的第 n 列。
<Ctrl><g> 会显示该行的行号、文件名称、文件中最末行的行号、光标
所在行号占总行号的百分比。
注一:句子(sentence)在vi中是指以『!』、『.』或『?』结束的一串字。
注二:段落(paragraph)在vi中是指以空白行隔开的文字。
屏幕的移动
<Ctrl><f> 屏幕往下卷一页。
<Ctrl><b> 屏幕往上卷一页。
<Ctrl><d> 屏幕往下卷半页。
<Ctrl><u> 屏幕往上卷半页。
<Ctrl><e> 屏幕往下卷一行。
<Ctrl><y> 屏幕往上卷一行。
删除、复制及修改指令介绍 (此单元较少使用)
d(delete)、c(change)和y(yank)这一类的指令在 vi 中的指令格式为:
Operator + Scope = command
(运算子) (范围)
运算子:
d 删除指令。删除资料,但会将删除资料复制到内存缓冲区。
y 将资料(字组、行列、句子或段落)复制到缓冲区。
p 放置(put)指令,与 d 和 y 配和使用。可将最后delete或yank的资
料放置于光标所在位置的行列下。
c 修改(change)指令,类似delete与insert的组合。删除一个词组、句
子等的资料,并插入新输入的资料。
范围:
e 由光标所在位置至该字符串的最后一个字符。
w 由光标所在位置至下一个字符串的第一个字符。
b 由光标所在位置至前一个字符串的第一个字符。
$ 由光标所在位置至该行的最后一个字符。
0 由光标所在位置至该行的第一个字符。
由光标所在位置至下一个句子的第一个字符。
( 由光标所在位置至该句子的第一个字符。
{ 由光标所在位置至该段落的最后一个字符。
} 由光标所在位置至该段落的第一个字符。
整行动作
dd 删除整行。
D 以行为单位,删除光标后的所有字符。
cc 修改整行的内容。
yy yank整行,使光标所在该行复制到内存缓冲区。
删除与修改
x 删除光标所在该字符。
X 删除光标所在之前一字符。
dd 删除光标所在该行。
r 用接于此指令之后的字符取代(replace)光标所在字符。
如: ra 将光标所在字符以 a 取代之。
R 进入取代状态,直到《ESC》为止。
s 删除光标所在的字符,并进入输入模式直到《ESC》。
S 删除光标所在的该行资料,并进入输入模式直到《ESC》。
移动与复制
利用 delete 及 put 指令可完成资料移动的目的。
利用 yank 及 put 指令可完成资料复制的目的。
yank 和 delete 可将指定的资料复制到内存缓冲区,而通过 put 指令
可将缓冲区内的资料复制到屏幕上。
例:
移动一行 .在该行执行 dd
.光标移至目的地
.执行 p
复制一行 .在该行执行 yy
.光标移至目的地
.执行 p
指令重复
在指令模式中,可在指令前面加入一数字 n,则此指令动作会重复执行 n
次。
例:
删除10行 .10dd
复制10行 .10yy
.光标移至目的地
.p
指标往下移10行 .10j
取消前一动作(Undo)
即复原执行上一指令前的内容。
u 恢复最后一个指令之前的结果。
U 恢复光标该行的所有改变。
查找
在vi中可查找某一字符串,使光标移至该处。
/字符串 往光标之后寻找该字符串。
?字符串 往光标之前寻找该字符串。
n 往下继续寻找下一个相同的字符串。
N 往上继续寻找下一个相同的字符串。
资料的连接
J 句子的连接。将光标所在的下一行连接至光标该行的后面。
若某行资料太长亦可将其分成两行,只要将光标移至分开点,进入输入模式
(可利用 a、i等指令)再按《Enter》即可。
环境的设定
:set nu 设定资料的行号。
:set nonu 取消行号设定。
:set ai 自动内缩。
:set noai 取消自动内缩。
自动内缩(automatic indentation)
在编辑文件或程序时,有时会遇到需要内缩的状况,『:set ai』即提供自
动内缩的功能,用下例解释:
.vi test
.(进入编辑屏幕后)
this is the test for auto indent
《Tab》start indent ← :set ai (设自动内缩)
《Tab》data
《Tab》data
《Tab》data ← :set noai (取消自动内缩)
the end of auto indent.
.注:<Ctrl><d> 可删除《Tab》字符。
ex指令
读写资料
:w 将缓冲区的资料写入硬盘中。
:10,20w test 将第10行至第20行的资料写入test文件。
:10,20w>>test 将第10行至第20行的资料加在test文件之后。
:r test 将test文件的资料读入编辑缓冲区的最后。
删除、复制及移动
:10,20d 删除第10行至第20行的资料。
:10d 删除第10行的资料。
:%d 删除整个编辑缓冲区。
:10,20co30 将第10行至第20行的资料复制至第30行之后。
:10,20mo30 将第10行至第20行的资料移动至第30行之后。
字符串搜寻与取代
s(substitute)指令可查找某行列范围。
g(global)指令则可查找整个编辑缓冲区的资料。
s指令以第一个满足该条件的字符串为其取代的对象,若该行有数个满足该条
件的字符串,也仅能取代第一个,若想取代所有的字符串则需加上g参数。
:1,$s/old/new/g 将文件中所有的『old』改成『new』。
:10,20s/^/ / 将第10行至第20行资料的最前面插入5个空白。
:%s/old/new/g 将编辑缓冲区中所有的『old』改成『new』。
恢复编辑时被中断的文件
在编辑过程中,若系统当掉或连线中断,而缓冲区的资料并还未
被写回硬盘时,当再次回到系统,执行下列指令即可回复中断前
的文件内容。
%vi -r filename
编辑多个文件
vi还提供同时编辑多个文件的功能,方法如下:
%vi file1 file2 ..
当第一个文件编辑完成后,可利用『:w』将该缓冲区存档,而后
再利用 『:n』载入下一个文件。
日常 VI 编辑总结相关推荐
- [转帖]linux /proc目录下的文件为何无法用vi编辑保存
linux /proc目录下的文件为何无法用vi编辑保存 https://blog.51cto.com/xlogin/1216914 学习一下 之前看过书 这一点 没太仔细看.. xlogin关注8人 ...
- linux系统学习之vi编辑
2019独角兽企业重金招聘Python工程师标准>>> Vim 是 Vi improved 的缩写,是 vi 的改进版.在Linux中,vi 被认为是事实上的标准编辑器,因为: 所有 ...
- linux 用vi命令的使用以及vi编辑,Linux中vi编辑命令的使用
在Linux中利用vi命令进行一个编辑的时候,相信很多操作的技巧你暂时还是没有学会的,在前面的文章中已经向大家介绍并且是有做演示了vi与vim文本编辑工具的使用,下面给大家的是在vi文本编辑器里面常用 ...
- 树莓派vi编辑文件时退格键和方向键无法正常使用的问题
[问题现象] 树莓派在使用vi编辑文件时,发现退格删除键(Backspace键),无法删除,方向键变成了ABCD(对应上下右左)还自动换行. 现象如下图所示: [问题解决] 此问题根因是树莓派系统预装 ...
- secure使用vi编辑远程机器文件出现4;m
secure使用vi编辑远程机器文件出现4;m 这个是因为远程机器没有安装vim 安装vim后就可以正常使用securecrt正常编辑远程机器上的文件了.
- 学习 Linux,101: 使用 vi 编辑文件
总是可用的编辑器 了解如何使用 vi 编辑器,这款编辑器在大部分 UNIX® 和 Linux® 系统中都存在.本文提供的材料可以帮助您准备 Linux 系统管理员认证 LPI 101 考试,也可以作为 ...
- vi 编辑意外中断处理办法
今天我学习时,发现一个小问题,正在用secure-CRT远程登陆着linux服务器(当然都是在虚拟机环境下的,我是个linux新手)如果是高手就可以不用看了. 情况描述:一开始是我在用visudo ...
- Linux 中 的 vi 编辑模式 直接对文件进行修改~
在看这篇文章前,如果对vi没有了解,请先看一下下面这篇文章. vi的三种工作方式.命令方式 输入方式 ex转义方式 http://blog.csdn.net/sxzlc/article/detai ...
- CentOS7怎么保存退出vi编辑
CentOS7怎么保存退出vi编辑(转自阿里云) 保存命令 按ESC键 跳到命令模式,然后: :w 保存文件但不退出vi :w file 将修改另外保存到file中,不退出vi :w! 强 ...
最新文章
- 10年卖下28家AI公司 苹果的AI吸星大法!
- 黄仁勋回应放弃收购Arm:公司战略并没有太大改变
- 开发日记-20190624 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 1
- Activity隐式启动IntentFilter
- 3DsMax 创建阴影贴图的技术指南
- html track标签,HTML track标签
- 杀不死的人狼——我读《人月神话》(四)
- 历年软考网络工程师考试真题及答案
- python爬取微信运动_用 Python 修改微信(支付宝)运动步数,轻松 TOP1
- 海信65E7G Pro评测
- 斯年,愿做岁月的知音
- Simulink中scope变为白色背景
- 程序员月薪过7万,可以落户北京了
- 从李兴平到翔子 “草根站长”的简单化生存规则!
- 基于大数据分析山东2020年高考难度和选科要求(一)
- 这应该是第一篇写拼多多商业模式的文章吧
- C++调用python,并抓取每日一句名言
- 【Spring Cloud 基础设施搭建系列】Spring Cloud Demo项目 使用Docker Compose编排Spring Cloud微服务
- pytorch自动编码_用pytorch第2部分从头开始编码ppo 4
- charles设置:抓取小程序的请求包