编辑器之神-VIM
2016-05-06 10:46
816 查看
在这天地间,流传这两大神器的故事:据说Emacs是神的编辑器,而Vim是编辑器之神。正所谓,工欲善其事,必先利其器。今天就和大家分享一下关于编辑器之神Vim的传说。
一、Vim的历史
1.下图是关于几款主流编辑器的学习曲线:(注:图片来自互联网)
2.VIM – Vi IMproved
3.上图中vi即是vim的前身
VI:Visual Interface4.VIM和VI是文本编辑器
何为文本文件?文本文件一般指只有字符原生编码构成的二进制计算机文件,与富文本相比,其不包含字样样式的控制元素,能够被最简单的文本编辑器直接读取
文本文件常见的格式?
ASCII、MIME、.txt、…
那么,何为文本编辑器?
文本编辑器是计算机软件中的一种。主要用于用来编写和查看文本文件。
文本编辑器的种类:
行编辑器:sed
全屏编辑器:nano、vi、vim
二、Vim编辑器的基本操作
1. 基本操作
VIM:模式化的编辑器基本模式
编辑模式 (命令模式)
输入模式 (插入模式)
末行模式 (vim内置的命令行接口)
Note:打开的时候默认的模式是编辑模式
打开文件
# vim [OPTION]... FILE...
+#:打开文件后,直接让光标处于第#行的行首
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首;
模式转换
模式转换:
:q:退出
:!:强制退出,丢弃做出的修改;
:wq:保存退出;
:x:保存退出;
:w /PATH/TO/SOMEWHERE:当前编辑的文本保存到别的文件;
ZZ:保存退出;
ESC
:
ESC
i:insert,在光标所在处前面插入;
a:append,在光标所在处的后面插入;
o:open,在当前光标所在行的下一行打开新行,并转换为输入模式;
I:在当前光标所在行的行首输入;
A:在当前光标所在行的行尾输入;
O:在光标所在行的上一行打开一个新行,并转换为输入模式;
编辑模式 – – > 输入模式
输入模式 – – > 编辑模式
编辑模式 – – > 末行模式
末行模式 – – > 编辑模式
关闭文件
图示说明如下: (转载请注明出处)
2. 光标跳转:
字符间跳转:h:左
l:右
k:上
j:下
h,j,k,l
#COMMAND:跳转由#指定的个数的字符;
单词间跳转:
w:跳转至下一个单词或后一个单词的词首;
e:跳转至当前或下一个单词的词尾;
b:跳转至当前或下一个单词的词首;
#COMMAND:由#指定一次跳转的单词数;
行首行尾跳转:
^:跳转至行首的第一个非空白字符;
0:跳转至绝对的行首;
$:跳转至绝对行尾;
行间移动:
#G:跳转至由#指定行;
G:跳转至最后一行;
1G,
gg:跳转至第一行;
句间移动:
):跳转至下一个句子;
(:跳转至上一个句子;
段落间移动:
}:跳转至下一段
{:跳转至上一段
3. vim的编辑命令:
字符编辑:x:删除光标处的单个字符;
#x:删除光标处起始的#个字符;
xp:交换光标所在处的字符及其后面字符的位置;
替换命令:
r,replace
r:替换光标所在处的字符;(单字符替换)
删除命令:
#dd:向下删除#行;
d$:删除至绝对行尾
d^:删除至行首的第一个非空白字符
d0:删除至绝对行首
d:删除命令,可结合光标跳转字符,实现范围删除;
dd:删除光标所在行;
粘贴命令:
(
p,put,paste)
p:缓冲区中存储的如果为整行内容,则粘贴至当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面;
P:缓冲区中存储的如果为整行内容,则粘贴至当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面;
复制命令:
y$:复制至绝对行尾
y0:复制至绝对行首
y^:复制至行首的第一个非空白字符
yy:复制整行
#yy:复制多行;
y,yank
y:复制,工作行行为相似于d命令;
改变命令:
编辑模式 – -> 输入模式
c,change
c:修改
cc:删除并输入新内容
#cc:一次删除#行
三、其它编辑操作
1.可视化模式
v:按字符选定
V:按行选定
Note:经常结合编辑命令;
2. 撤销此前的编辑:
u(undo):撤销此前的操作;
#u:撤销指定次数的操作;
撤销此前的撤销:
Ctrl+r
重复前一个编辑操作:
.
四、翻屏操作
Ctrl+f:向文件尾部翻一屏;
Ctrl+b:向文件首部翻一屏;
Ctrl+d:向文件尾部翻半屏;
Ctrl+u:向文件首部翻半屏;
vim自带的练习教程:
vimtutor
五、vim的末行模式
内建的命令行接口;
特性:
(1). 地址定界
后跟一个编辑命令:
d:删除指定范围的内容
y:复制指定范围的内容
w /PATH/TO/SOMEWHERE:将范围内的行另存至指定文件中;
r /PATH/FROM/SOMEFILE:在指定位置插入指定文件中的所有内容;
:start_pos,end_pos
#:具体的第#行,例如:2表示第2行;
#,#:从左侧#表示起始,到右侧#表示结束;
#,+#:从左侧#表示的行开始,加上右侧#表示的行数;
.当前行;
$:最后一行;
%:全文;相当于(1,$)
/pat1/,/pat2/:表示从第一次被pat1匹配到的行开始,一直到pat2匹配到的行结束
使用方式:
(2). 查找
n:与命令同方向;
N:与命令反方向;
/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
(3). 查找并替换
s/要查找的内容/替换为的内容/修饰符
查找替换中的分隔符
/可替换为其它字符,例如:
i:忽略大小写
g:全局替换;默认情况下,没一行只替换第一次出现的内容;
要查找的内容:可使用模式;
替换为的内容:不能使用模式,但可以使用\1, \2, …等后向引用符号;好可以使用
"&"引用前面查找时查找到的整个内容;
修饰符:
s@@@
s###
s:在末行模式下完成查找替换操作
六、vim的文件模式
1. 多文件模式vim FILE1 FILE2 FILE3 …
:next切换至下一个文本
:prev切换至前一个文本
:first切换至前一个文本
:last切换至最后一个文本
:wall保存所有
:qall退出所有
2. 窗口分隔模式
vim -o|-O FILE1 FILE2 …
-o:水平分割
-O:垂直分割
在窗口间切换:
Ctrl+w,Arrow
3. 单文件窗口分割:
Ctrl+w,s:split,水平分割
Ctrl+w,v:vertical,垂直分割
4. 定制vim的工作特性:
配置文件:(永久有效)
全局:
/etc/vimrc
个人:
~/.vimrc(默认不存在,需要自己创建)
末行:(当前vim进程有效)
(1) 行号:
显示:
set number,简写为:
set nu
取消显示:
set nonumber,简写为:
set nonu
(2) 括号匹配:
匹配:
set showmatch,简写为:
set sm
取消匹配:
set nosm
(3) 自动缩进:
开启:
set ai
禁用:
set noai
(4) 高亮搜索
开启:
set hlsearch
禁用:
set nohlsearch
(5) 语法高亮
开启:
syntax on
禁用:
syntax off
(6) 忽略字符大小写
启用:
set ic
禁用:
set noic
5. 书籍推荐:《Vim-handbook-cn-72》
6. 获取帮助
在末行模式下:
help SUBJECT
相关文章推荐
- 修改hosts文件,修改后不生效怎么办
- 机器学习概念性知识总结
- VB6 如何实现多重接口继承
- 将博客搬至CSDN
- IoT业界动态(即时更新)
- 框架浮动widgets默认样式
- [一起学Hive]之十八-Hive UDF开发
- Android中两种Service区别
- c++第五次作业
- Android M Runtime Permission
- iOS 多线程(4)NSOperation
- crontab命令笔记
- 网页取行情数据-1
- 切割字符串,将其存入vector
- centos6.5/6.3升级安装ImageMagick7.0.1-1
- FLOYD算法
- c++第四次作业
- 直接插入排序
- C++程序编译的时候报错prototype for '类名::函数名'does not match any in class'类名'解决经验。
- C++第五次作业