Linux vi的基本操作
进入命令
vi <文件名>
如 vi test
如果test文件存在,则直接打开编辑。如果不存在,则新建一个test的文件,这个新建的文件如果不保存的话,退出编辑器后也不会保存到硬盘中。
操作模式
编辑模式和命令模式。
进入的时候 默认是命令模式。除了增加和减少文字的编辑操作,拷贝、删除、复制、粘贴 都在命令模式下操作。
输入a、i、s、o等插入命令后进入编辑模式。
编辑模式切换到命令模式,按键盘的Esc键。
进入编辑模式
a:从光标所在之处的后面插入新的字符,插入时,插入处后面的字符会随着新增字符往后移动。
A:从光标所在行的最后处开始加入新的字符。
i:从光标所在之处的前面插入新的字符,插入时,插入处后面的字符会随着新增字符往后移动。
I:从光标所在行的第一个非空字符前面开始加入新的字符。
o:在光标所在行的下面新增一个空行,并进入插入状态。
O:在光标所在行的上面新增一个空行,并进入插入状态。
s:删除光标所在之处的字符,并进入插入状态。
S:删除光标所在的行,并进入插入状态。
以下是命令模式的操作
保存和退出
:q:退出vi。
:q!:舍弃当前对编辑内容所作的修改,强行退出vi。
:wq:存盘退出。
:w [<文件名称>]:另存为。将正在编辑的内容以<文件名称>为名存盘(相当于Save as...),如果没有指定<文件名称>,则使用原有的文件名称(相当于Save...)。
选择块
E:从光标当前位置到当前所在单词的最后一个字符。
B:从光标当前位置到上一个单词的第一个字符。
$:从光标当前位置到该行的最后一个字符。
):从光标当前位置到下一句的第一个字符。
3):从光标当前位置到后面第三句的第一个字符。
{:从光标当前位置到当前段落的第一个字符。
}:从光标当前位置到下一段落的第一个字符。
剪切 复制 粘贴 删除 与 撤销
d<范围> 删除某一块内容 dd删除当前行
y<范围>复制 ,(y表示yank) yy复制当前行
p粘贴
X:删除光标所在处字符。
dd:删除光标所在的行。
D:删除从光标所在之处开始直到该行末尾的全部字符。
u:恢复刚被删除的文本。
U:恢复光标所在行在此次编辑中的全部改变。
查找
f<字符>:从光标所在处开始,将光标向右移动到第一个出现<字符>的地方。
F<字符>:从光标所在处开始,将光标向左移动到第一个出现<字符>的地方。
;:配合f与F命令使用,表示继续往同方向检索一次。
,:配合f与F命令使用,表示继续往反方向检索一次。
/<字符串>:从光标所在处开始,往后搜索第一个有<字符串>的地方,然后把光标放到该处。
?<字符串>:从光标所在处开始,往前搜索第一个有<字符串>的地方,然后把光标放到该处。
n:配合/与?命令使用,表示继续往同方向检索一次。
N:配合/与?命令使用,表示继续往反方向检索一次。
移动光标
←↑→↓:左、上、右、下移动光标。
h、k、l、j:左、上、右、下移动光标。
0 (零):将光标移动到行的起始处。
$:将光标移动到行的末尾处。
H:将光标移到当前窗口(而非全文)的第一行起始处。
M:将光标移到当前窗口的居中一行起始处。
L:将光标移到当前窗口的最后一行起始处。
W:将光标移到下一个单词(word)的第一个字符处。
B:将光标移到上一个单词的第一个字符处。
E:将光标移到当前单词的最后一个字符处。
<数目>G:将光标移动到第<数目>行行首。
-:将光标移动到上一行的第一个非空字符处。
+:将光标移动到下一行的第一个非空字符处。
<数目>-:将光标移动到上<数目>行的第一个非空字符处。
<数目>+:将光标移动到下<数目>行的第一个非空字符处。
(:将光标移动到光标当前所在句子的最前面,这里句子是用!.?三种符号界定。
):将光标移动到下一个句子的最前面。
<数目>(:将光标移动到前<数目>个句子的最前面。
<数目>):将光标移动到后<数目>个句子的最前面。
{:将光标移动到光标当前所在段落的最前面,这里段落是用段落之间的空行界定。
}:将光标移动到下一个段落的最前面。
<数目>{:将光标移动到前<数目>个段落的最前面。
<数目>}:将光标移动到后<数目>个段落的最前面。
:set ic搜索时不区分大小写。
退出recording 先按ESE 再按q
最新文章
- 一步一步跟我学DeviceOne开发 - 仿微信应用(一,二,三)
- 【bzoj4241】 历史研究
- 字符匹配算法之Boyer-Moore算法
- fopen和fopen_s用法的比较 【zz】
- C#: 集合
- ERP员工入登记查询(六)
- 【web性能】js应该放在html页面的什么位置
- android中ViewHolder通用简洁写法
- C#学习笔记之线程 - 使用线程
- 删除svn文件
- 变形课hd1181(DFS)
- django是怎么处理请求的
- invalid stream header: 31323334
- 关于图的顶点染色问题的各种算法的C++实现之初探(一)——引言与简介
- Python学习--字典
- 记录安装centos6.5的几个要紧步骤
- iOS socket常用数据类型转换
- DAY9 函数
- Objective-C学习笔记(十八)——对象方法和类方法的声明,定义及调用
- UVa 12563 劲歌金曲 刘汝佳第二版例题9-5;
热门文章
- 修改Sublime Text3 的侧边栏字体大小
- 设计模式之桥接(bridge)模式
- kali视频(26-30)学习
- 剑指offer-第四章解决面试题思路(复杂链表的复制)
- yarn 管理nextjs 项目
- linux 本地账号密码无法登陆(shell可以登录),一直返回 登陆的login界面
- dx工具(android将jar包转成dex格式二进制jar包工具)
- eclipse配置hadoop2.7.2开发环境并本地跑起来
- (转)Socket开发时,Available为0,实际还有数据的问题
- 【转】Apache JMeter web性能测试实例