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), 用于连接多个文件 ...
随机推荐
- Java基础(8):方法重载的4个依据与例子
判断方法重载的依据: 1. 必须是在同一个类中 2. 方法名相同 3. 方法参数的个数.顺序或类型不同 4. 与方法的修饰符或返回值没有关系 运行结果:
- bean中集合属性的配置
在实际的开发中,有的bean中会有集合属性,如下: package com.sevenhu.domain; import java.util.List; /** * Created by hu on ...
- 通过反射封装JDBC
具体上代码我的BaseDao: public class BaseDao<T> { private Class clazz; private Properties pro=null; ...
- jvm排查工具
jps jps -mvl --查看java的ps进程. jstack 打印一个线程堆栈信息 top -H -p pid1 -> 得到占用资源大的pid2 jstack pid1 | grep & ...
- C# 文件读取(二)
将我的电脑中的文件夹信息显示到TreeView控件上. 方法很多种,下面这种方法添加了我的文档. public partial class Form1 : Form { public Form1() ...
- 关于teleport_pro使用过程中的一点疑惑
在我新建工程的时候,有两个选项,一个是"new project wizard"另一个是"new project",然后就纠结了,我应该使用那个呢? 使用第一个的 ...
- C#下调用C++ SDK的编码常识
一组编码规范,通过C#调用C++ 自动封装的C# SDK,会发现面向对象思想的重要性. C++ SDK可以使用自动封装工具转换成C# SDK.但需要遵守如下规则: 1.如果需要对C#对象进行判断,则分 ...
- Robotium Recorder的初试
一.安装 资料来自官方 Prerequisites: Install the Java JDK. Install the Android SDK. The ADT bundle with Eclips ...
- Linux设备驱动工程师之路——内核链表的使用【转】
本文转载自:http://blog.csdn.net/forever_key/article/details/6798685 Linux设备驱动工程师之路——内核链表的使用 K-Style 转载请注明 ...
- dojo/dom dojo/domConstruct dojo/query
dom.byId require(["dojo/dom", "dojo/domReady!"], function(dom) { var one = dom.b ...