linux 强大的编辑器之vi
vi编辑器是一个处理ASCII数据的文本工具。大多数linux发行版都已经默认安装了vi编辑器。vi是visual interface的缩写vim是 visual interface improved即增强版的vi,vim默认支持代码命令加亮,这样使得文本更易看懂。vi有两种配置文件一种是全局配置文件 /etc/vimrc,全局配置文件的设置对所有用户都生效。另一种是用户配置文件,这个配置文件需要自己手动去创建,如 touch ~/.vimrc,创建在用户家目录,并把它创建为隐藏文件,在这里的设置,只针对当前用户自己生效。
1、vi的模式和模式之间的转换
vi有三种模式,命令模式(command mode)也叫编辑模式、插入模式(Insert mode)和底行模式(last line mode)也叫末行模式,各个模式之间的关系如下图所示:

vi默认打开就是编辑模式,编辑模式是不能对文本进行任何写操作的。
(1)编辑模式---->输入模式:可以如下操作
直接键入 i: insert,实现在当前光标所在处转换为输入模式
I: 在当前光标所在行的行首转为输入模式
a:append,实现在当前光标所在处字符后面转换为输入模式
A:在当前光标所在行的行尾转为输入模式
o:实现在当前光标所在行的下方新建一个空白行并转换为输入模式
O:在当前光标所在行的上方新建一行,并转化为输入模式
(2)输入模式----->编辑模式:
按键盘的Esc键
(3)编辑模式----->末行模式
键入 :
(4)末行模式----->编辑模式
连续按两下Esc键
2、编辑模式进行的操作
(1)光标的跳转:
a)光标在字符间跳转
h:左 #h 向左侧跳#个字符
l:右
j:下
k:上
b)光标在单词间跳转
w:后一个单词的词首
e:跳至当前或下一个单词词尾
b:跳至当前或前一个单词词首
c)光标在句子间跳转
):下一句
(:前一句
d)光标在段落间跳转
}:下一段
{:前一段
e)光标在行间跳转:
1G,gg:跳到行首
G:行尾
#G:第n行,#表示行数
f)光标在行内跳转:
^:行首的第一个非空白字符
$:绝对行尾
0:绝对行首
(2)翻屏操作
ctrl+f:向文件尾部翻一屏相当于Pagedown操作
ctrl+b:向文件首部翻一屏相对于Pageup操作
ctrl+d:向文件尾部翻半屏
ctrl+u:向文件首部翻半屏
(3)复制操作,也叫y(yank)操作
yy:表示复制光标所在行
#yy:表示复制包括光标所在行及以下#行,#表示数字
y$:表示复制光标所在处至行尾
y^:表示复制光标所在处至行首
(4)粘贴操作,也叫p(paste ,put)操作
复制的是整行:
p: 在当前光标所在行的下方粘贴;
P:在当前光标所在行的上方粘贴
复制的不是整行:
p: 在当前光标所在处字符的后方粘贴;
P:在当前光标所在处字符的前方粘贴;
(5)删除操作,(x,d)
x:删除光标后面的单个字符
#x:删除光标后面的#个字符,#表示数字
dw:删除光标所在的单词
db:删除光标所在处之前的单词
de:删除光标所在处之后的单词
d^:删除光标所在之前的所有字符单词
d$:删除光标所在之后的所有字符单词
dd:删除光标所在处的整行
#dd:删除包含光标处的下面几行,#表示数字
(6)撤销操作
如果对之前失误操作进行撤销可按u键,撤销之前的操作,默认可以撤回之前的50次操作。当你觉得之前的撤销操作也需要撤销,则按crtl+u键,对撤销进行撤销。
(7)查找操作,直接在编辑模式下输入/或者?,然后接你要查找的字符
/keyword: 从当前光标所在处向文件尾部查找
?keyword:从当前光标所在处向文件首部查找
n: 下一个,跟查找命令相同的方向
N:前一个,跟查找命令相反的方向
3、输入模式进行的操作
当在编辑模式下键入(i,I,a,A,o,O)后,文件下方会有-- INSERT -- 字样,表示现在处于输入模式,输入模式对输入的任何字符都会直接输入到文件中。
4、末行模式进行的操作
(1)保存退出的操作
:w 保存
:q 退出
:x 保存退出
:wall 所有的都保存,一般应用在同时打开多个页面
:qall 所有的都退出,一般应用在同时打开多个页面
:w! 强制保存
:q! 强制退出
:wq! 强制保存退出
:x! 强制保存退出
(2)删除的操作,在末行模式进行操作可以支持定界
语法格式 开始行,结束行d
:. 表示当前光标所在行
:1 表示第一行
:# 表示第#行,#表示数字
:$ 表示最尾行
:% 表示整个文本
:1,$d 删除第一行到最后一行
:.$d 删除当前光标直到最尾行
:%d 删除整个文本
:1,+3d 删除第一行和后面的三行,第一行也包括,所以是删除四行
(3)查找操作,查找操作和在编辑模式下的查找操作一样,支持模式匹配
/keyword: 从当前光标所在处向文件尾部查找
?keyword:从当前光标所在处向文件首部查找
n: 下一个,跟查找命令相同的方向
N:前一个,跟查找命令相反的方向
(4)修改替换操作,也支持模式匹配
语法格式
:地址定界s/查找模式/替换成的内容/gi
/表示分隔符,可以为@、#等特殊容易区别的符合
g global全局的,i ignore 不区分大小写
eg:
|
1
2
3
4
5
6
7
8
9
10
|
删除行首开头的#::%s@^#@@删除行首开头的#及后面紧跟的空白字符;:%s@^#[[:space:]]*@@为空白字符开头的行的行首加上#;:%s@^[[:space:]]@#&@把down改成up;:%s@down@up@g为指定范围内的行的行首添加#;:1,10s@^@#@g |
5、窗口属性定义,在末行模式 :(在末行模式直接输入set可以看set的帮助命令),no代表取反的意思
显示行号:
set nu
set nonu
自动缩进:
set autoindent,set ai
set noai
不区分大小写
set ignorecase, set ic
set noic
显示匹配的括号
set showmatch,set sm
set nosm
语法着色
syntax on
syntax off
搜索高亮显示
set hlsearch
set nohlsearch
可以直接把窗口定义的属性写到vim的配置文件中。
6、vim其它的支持
(1)vim可视化模式
visual模式
v: 选中光标划过的字符
V:选中光标划过的行,整行选取
Esc, Esc:回到编辑模式
(2)同一文档窗口分割:
Ctrl+w,s: 水平分割 Ctrl+w, 箭头(上下),表示切换

在末行模式下输入q退出
Ctrl+w,v: 垂直分割 Ctrl+w, 箭头(左右),表示切换

在末行模式下输入q退出
linux 强大的编辑器之vi的更多相关文章
- Linux学习笔记 -- 文本编辑器之 vi与vim
vi/vim 的使用 基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),插入模式(Insert mode)和底线命令模式(Last line mode). 这三种模式的 ...
- 自由软件之父、Google+设计者、Java之父、Linux之父、万维网之父、Vi编辑器之父、苹果Lisa电脑界面设计、微软首席软件架构师
自由软件之父.Google+设计者.Java之父.Linux之父.万维网之父.Vi编辑器之父.苹果Lisa电脑界面设计.微软首席软件架构师 理查德·斯托曼(Richard Stallman) 理查德· ...
- 普通Linux用户1分钟上手vi编辑器
*导读:普通用户只要花1分钟看第二部分即可.高级用户请忽略本文* 目录 1. 编辑器之战 2. vi的使用 2.1 vi的3个模式 2.2 vi的3个模式切换 2.3 vi最基本的命令 2.4 vi的 ...
- Emacs和Vim:神的编辑器和编辑器之神, 到底哪个更好?
Emacs和Vim:神的编辑器和编辑器之神, 到底哪个更好? 在这个蔚蓝色的星球上,流传着两大神器的传说:据说Emacs是神的编辑器,而Vim是编辑器之神. 一些人勇敢地拾起了Vim或Emacs,却发 ...
- vim 让人爱不释手的编辑器之神
VIM 基本介绍 vim诞生已有20多年,它常被人称之为编辑器之神,vim的操作理念可以说是独具一格而又出类拔萃,使用vim能极大的提升文本处理效率,因此熟练掌握vim应该是每个程序员都应该做到的事情 ...
- linux下维护服务器之常用命令
linux下维护服务器之常用命令! 第1套如下: 正则表达式: 1.如何不要文件中的空白行和注释语句: [root@localhost ~]# grep -v '^$' 文件名 |grep -v '^ ...
- linux文件管理 -> vim编辑总结
vi和vim命令是linux中强大的文本编辑器, 由于Linux系统一切皆文件,而配置一个服务就是在修改其配置文件的参数.vim编辑器是运维工程师必须掌握的一个工具, 没有它很多工作都无法完成.vim ...
- 随处可编辑的编辑器之神VIM
据说这世界上只有三种编辑器:Vim,Emacs 和 其他编辑器,其中 Vim 被称作编辑器之神,Emacs 被称作神的编辑器,当然,其他编辑器永远只能是其他编辑器. 拿一位 网友的话 来说,VIM 的 ...
- Linux文件查看/编辑方法介绍
转载:https://www.centos.bz/2011/10/linux-file-view-edit/ cat 命令介绍 cat 命令的原含义为连接(concatenate), 用于连接多个文件 ...
随机推荐
- 父类构造函数中的this指针在子类构造对象后,这个this指针指向什么
子类的对象内存布局包括两部分:父类和子类派生部分,所以执行父类的构造函数只不过是在构造子类对象的父类部分.因此子类对象的this指针是指向子类对象自己.
- HDU 4063 Aircraft(计算几何)(The 36th ACM/ICPC Asia Regional Fuzhou Site —— Online Contest)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4063 Description You are playing a flying game. In th ...
- java使用json将HashMap转化成javabean小例子
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import net.sf.json.JSONOb ...
- [转]iis7.5+win2008 出现 HTTP Error 503. The service is unavailable.
解决: 应用程序池启动32位应用程序 设置托管管道为集成 (仍然有问题) 试试以下方法: http://phpwind.me/1222.html 楼主 发表于: 2011-11-26 图片: ...
- c++的学习内容一汇总篇(常更新)
在这里假定读者们是有一定编程经验的.例如c#,java,c或者其他任何编程语言. 所有语言都无外乎掌握它的语法,熟悉它的一些库的调用. ---------------语法篇-------------- ...
- MOPSO 多目标例子群优化算法
近年来,基于启发式的多目标优化技术得到了很大的发展,研究表明该技术比经典方法更实用和高效.有代表性的多目标优化算法主要有NSGA.NSGA-II.SPEA.SPEA2.PAES和PESA等.粒子群优化 ...
- 《zw版·delphi与halcon系列原创教程》zw版_THOperatorSetX控件函数列表 v11中文增强版
<zw版·delphi与halcon系列原创教程>zw版_THOperatorSetX控件函数列表v11中文增强版 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就 ...
- x9015数字电位器应用
/*********************************************************************** 名称:main() 功能:主函数,将x90 ...
- opencv之深拷贝及浅拷贝,IplImage装换为Mat
一.(1) 浅拷贝: Mat B; B = image // 第一种方式 Mat C(image); // 第二种方式 这两种方式称为浅copy,是由于它们有不同的矩阵头,但是它们共享内存空间,即 ...
- jQuery学习之prop和attr的区别
1.attr() :默认保存的是浏览器的初始值 prop()保存的是更新的值 2.下面的是首用法,但是.attr()方法可以运行在所有的attributes情况下. 注意:一些DOM元素的prope ...