vi基础学习总结
标签(空格分隔): vi 总结
vi是几乎所有类Unix/Linux系统下都默认装有的常用文本编辑工具。本文记录初学vi的一些小知识。
0.界面模式
在命令行使用“vi”编辑文档时,包含一般模式、命令行模式、编辑模式。
使用vi filename打开文件,就进入一般模式。
一般模式 <-> 命令行模式
在一般模式界面使用符号“:”、“/”、“?”可以进入命令行模式,反之使用键盘左上角的“Esc”按键就可以从命令行模式回到一般模式。一般模式 <-> 插入模式
在一般模式界面按下“i”、“I”、“a”、“A”、“o”、“O”、“r”、“R”字符就可以进入插入模式,反之使用键盘左上角的“Esc”按键就可以从插入模式回到一般模式。其中的字符具体含义如下:
i:insert,在光标当前处插入
I:Insert,在光标所在行的行首插入,在第一个非空白字符前插入
a:append,在光标所在位置之后的一个符后插入
A:Append,在光标所在行的行尾插入
o:在光标所在行的下面,另起一行插入
O:在光标所在行的上面,另起一行插入
r:replace,替换光标所在位置的那一个字符,只替换一次
R:Replace,不断替换光标所在位置的字符,每替换字符光标都会往后移动,直到按下“Esc”为止。
- 命令行模式和插入模式不能直接相互进入,需要先进入一般模式才能进入另一个模式。
1.光标移动/定位
在一般模式下移动光标情况相对复杂,可以分为以下几种情况。
- 移动字符
1)可以使用上下左右的箭头来移动
2)使用字母
h:光标左移一个字符的距离
j:光标向下移动一行
k:光标向上移动一行
l:光标右移一个字符的距离
- 移动单词/字
w:光标往后移动,到达下一个单词(含标点)的词首处
W:与w同,忽略标点符号
e:光标往前移动,到达下一个单词(含标点)的词尾处
E:与e同,忽略标点符号
b:光标往前移动,达到本单词(含标点)的词首。如果当前位子是空白则达到左边第一个单词的词首
B:与b同,忽略标点符号
ge:光标往前移动,到达前一个单词的词尾处
- 行移动
符号^(shift+数字键6):光标移动到行首
数字0::光标移动到行首
符号$(美元符号):光标移动到行尾
字符组合“g_”:光标移动到行尾
nh:n为数字,在当前行往左移动n个字符
nj:n为数字,向下移动n行
nk:n为数字,向上移动n行
nl:n为数字,在当前行往右移动n个字符
N + Enter:n为数字,向下移动n行
- 移动页
Ctrl + d:向上移动半页 Ctrl + u:向下移动半页
Ctrl + f:向上移动一页 Ctrl + b:向下移动一页
- 全文移动
gg:光标移动到文件第一行的行首
G:光标移动到文件最后一行的行首
nG:n为数字,光标移动到文件第n行的行首
2.编辑操作
- 复制
yy:复制光标所在行整行
nyy:n是数字,复制光标所在行整行及往下的n行
y1G:复制文件的第一行到光标所在行
yG:复制光标所在行到文件的最后一行
y0:复制光标所在行的行首字符到光标所在位置的字符之间的内容
y$:复制光标所在位置的字符到该行行尾字符之间的内容
- 删除、剪切
x:删除右边的一个字符,类似键盘的delete键
X:删除左边的一个字符,类似键盘的BackSpace键
dd:删除/剪切当前行
ndd:n是数字,删除/剪切当前行及向下n行的数据
d1G:删除/剪切文件第一行到光标所在行之间的内容
dG:删除/剪切光标所在行到文件最后一行之间的内容
d0:删除/剪切光标所在行行首字符到光标所在字符之间的内容
d$:删除/剪切光标所在位置的字符到该行的行尾字符之间的内容
- 粘贴
p:在光标所在行的下一行粘贴数据
P:在光标所在行的上一行粘贴数据
3.查找
/word:向下查找字符串“word”
?word:向上查找字符串“word”
n:重复执行前一个查找操作
N:“反向”执行前一个查找操作,与n相反
4.替换
r:replace,替换光标所在位置的那一个字符,只替换一次
R:Replace,不断替换光标所在位置的字符,每替换字符光标都会往后移动,直到按下“Esc”为止。
“:n1,n2s/old/new/g”:n1和n2是数字,数字n2后的是小写s。表示把第n1行到第n2行之间的字符串“old”都换成“new”。常用“:1,$/old/new/g”
“:n1,n2s/old/new/gc”:作用同上。最后多了个字符“c”,是confirm的首字母,表示每个操作都会提示确认才会替换
5.选择内容
类似“视图模式”下的选择,最让人觉得新奇的莫过于块选择了。
v:字符选择,结合光标的上下左右使用
V:行选择,结合光标的行上下移动使用
Ctrl + v:块选择,结合光标移动使用
当完成选择之后,可以进行删除、复制、剪切等操作。
6.其他常用操作
- 保存、退出
“:w”:保存(必须要有文件写权限)
“:wq”:保存并退出(必须要有文件写权限)
“:wq!”:保存并强制退出(必须要有文件写权限)
“:q”:退出(没有修改过文件内容)
“:q!”:强制退出(会放弃修改)
ZZ:保存并且退出(必须要有文件写权限)
“:w filename”:另存为filename文件
“:n1,n2 w filename”:把文件的第n1行到第n2行内容另存为filename文件
- 导入其他文件内容
“:r filename”:把文件filename的内容导入到当前文件,插入到光标所在行之后
- 撤销、重复执行前一个操作
u:撤销前一个操作,即放弃前一个操作的更改
小数点“.”:重复执行前一个操作,即再做一次
Ctrl + r:重做前一个操作,可以这样理解,先撤销已做的更改,然后再重复之前的更改。
J:将下一行数据拉到光标所在行之后,这样相当于剪切下一行后粘贴到该行的行尾,文件行数少1。
- 临时执行Linux命令
“:! command”:在一般模式下,可临时切换到shell界面执行命令,执行完毕后按下回传就回到文件内的一般模式下。可用于临时查看信息等,方便。
- 多文件编辑
使用“vi 文件1 文件2 文件3”可以打开多个文件。
“:files”:列出vi打开的所有文件
“:n”:进入下一个被vi打开的文件编辑
“:N”:进入前一个被vi打开的文件编辑
- 多窗口编辑及切换
已经打开了一个文件在编辑,此时想要打开另一个文件,有多窗口真的很方便。多窗口方式比多文件编辑方式要直观很多,值得推荐6666。
“:sp filename”:水平分割窗口,并打开filename文件
“:vsp filename”:沿垂直方向分割窗口,并打开filename文件
Ctrl + w + j或k:将光标往上或者往下移动到内窗口,进去后就可以进行常规操作了
保存vi偏好设置
打开文件“vi ~/.vimrc”,通过set来设置,常用的有:
set nu
set ruler
set hlsearch
set showmode
syntax on
...
vi基础学习总结的更多相关文章
- 零基础学习hadoop到上手工作线路指导
零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ...
- 零基础学习Hadoop
零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ...
- 鸟哥Linux私房菜基础学习篇学习笔记2
鸟哥Linux私房菜基础学习篇学习笔记2 第九章 文件与文件系统的压缩打包: Linux下的扩展名没有什么特殊的意义,仅为了方便记忆. 压缩文件的扩展名一般为: *.tar, *.tar.gz, *. ...
- Makefile基础学习
Makefile基础学习 理论知识 makefile关系到了整个工程的编译规则.一个工程中的源文件不计其数,并且按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文 ...
- linux基础学习之软件安装以及常用命令
linux基础学习之软件安装以及常用命令 调用中央仓库: yum install wget 然后下载nodejs: wget https://nodejs.org/dist/v10.14.2/node ...
- 零基础学习hadoop到上手工作线路指导(初级篇)
零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ...
- [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图
关于如何移植SDL2.0到安卓上面来参考我的上一篇文章:[原]零基础学习SDL开发之移植SDL2.0到Android 在一篇文章我们主要使用SDL2.0来加载一张BMP图来渲染显示. 博主的开发环境: ...
- [学习线路] 零基础学习hadoop到上手工作线路指导(初级篇)
about云课程最新课程Cloudera课程 零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了. ...
- 零基础学习Vim编辑器
**********************************************************************0.这篇教程的简介:Vim是Linux/Unix下的经典编辑 ...
随机推荐
- kettle学习笔记(六)——kettle转换步骤
一.概述 转换步骤分类: 1. 增加新的列 2. 字符串处理 3. 行列变换 4. 排序/排重/字段选择 5. 其他转换步骤 二.增加新的列 1.增加常量列 增加一列常量的列 其它增加列的操作大同小异 ...
- 大数据入门第二十二天——spark(二)RDD算子(1)
一.RDD概述 1.什么是RDD RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行计算的 ...
- FAT32文件系统学习(1) —— BPB的理解
FAT 32 文件系统学习 1.本文的目标 本文将通过实际读取一个FAT32格式的U盘来简单了解和学习FAT32文件系统的格式.虽然目前windwos操作系统的主流文件系统格式是NTFS,但是FAT3 ...
- sql——inner join,where,left join的区别
1.select a.name,a.sex,a.subject,a.age from TableA a, TableB b where a.name = b.name 2.select a.name, ...
- python 算法面试题
1.题目是:有一组“+”和“-”符号,要求将“+”排到左边,“-”排到右边,写出具体的实现方法. def StringSort(data): startIndex=0 endIndex=0 count ...
- Markdown 编辑器
桌面编辑器 MarkdownPad Pro 版注册邮箱: Soar360@live.com 授权密钥: GBPduHjWfJU1mZqcPM3BikjYKF6xKhlKIys3i1MU2eJHqWGI ...
- JNI探秘-----你不知道的FileInputStream的秘密
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 设计模式系列结束,迎来了LZ ...
- centos 7部署ELK
一.ELK介绍 Elasticsearch 是基于 JSON 的分布式搜索和分析引擎,专为实现水平扩展.高可用和管理便捷性而设计.Logstash 是动态数据收集管道,拥有可扩展的插件生态系统,能够与 ...
- cbuild-一个创建和管理C++项目的工具
cbuild-一个创建和管理C++项目的工具 介绍: 这是个人开发的一个管理C++项目的工具,用shell脚本编写. 可能会不定期更新,也欢迎大家一起完善. 当前开发版本0.5.各版本功能如下: ve ...
- Java设置PPT的扇形图,与内嵌Excel联动
/** * 设置饼图的主方法 * @param slide 图表 * @param index 图标位置 * @param data 需要设置的数据 * @param titles 关联Excel的标 ...