vim编辑器整理
vim编辑器
vim编辑器是linux中最强大的全屏幕纯文本编辑器,他是vi编辑器的增强版。
文本编辑器:
文本:纯文本,在ASCII角度讲是纯粹的不加任何修饰的文本信息
支持Unicode编码方式
文本编辑器种类:
行编辑器:sed
全屏编辑器:nano,vi
vi : (VIsual Interface) vim: VI IMproved其他编辑器: gedit: 一个简单的图形编辑器 gvim:一个vim编辑器的图形版本</pre>
vim: 模式化的编辑器,
基本常用模式:
命令模式
编辑模式,也叫插入模式
末行模式:也叫扩展命令模式,内置的命令行接口
打开文件:
vim [options] [file ..]
如果vim打开的文件不存在,他会自动创建此文件,并把编辑的内容保存在此文件中。如果文件事先存在,则会打开此文件,并且光标默认处在第一行的第一个字符上。
关闭vim:两个大写ZZ。就可以保存关闭
+#:打开文件后,字节让光标处于第#行行首
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行首。
vim + file :打开文件后,光标自动处在尾行行首
+#: 打开文件后,直接让光标处于第# 行的行首
+/ PATTERN :打开文件后,直接让光标处于第一个被PATTERN 匹配到的行的行首
vim + file 直接打开file, 光标在 最后一行行首[object Object]
vim –b file 二进制方式打开文件 vim –d file1 file2… 比较多个文件:在文件不同的位置会有高亮显示
vim -m file 只读打开文件 ex file 或 或 vim –e 直接进入ex模式转换: 命令模式:默认模式 命令模式--> 编辑模式: i:insert,在光标所在处前方输入 a: append,在光标所在处后方输入 o: 在光标所在处下方打开一个新行,光标直接处于新行行首 I:在当前光标所在行的行首输入。 A:在当前光标所在行的行尾输入。 O: 在光标所在的行的上方打开一个新行。 编辑模式-->命令模式 只需要敲Esc键 命令模式-->末行模式:扩展命令模式 : 末行模式:扩展命令模式-->命令模式 按Esc 锁定和解锁:CTRL+s,Ctrl+q 锁定后通过键盘输入的操作,不通过输出设备显示,但是在解锁之后会插入到光标所在位置后方插入前面输入设备输入的数据。关闭文件: ZZ:保存并退出 ZQ:不保存退出末行模式下:输入q退出 q!强制退出,不保存此前的编辑操作。 wq保存修改并退出 x保存并退出 w/PATH/TO/SOMEFILE 保存至新文件FILE并退出,相当于另存为的效果
> 光标跳转:
字符间跳转: h:光标向左跳转一个字符 l:光标向右跳转一个字符 j:光标向下跳转 k:光标向上跳转 #COMMAND:跳转由#指定的个数的字符单词间跳转 w:光标跳转到下一个单词的词首 e:光标跳转到当前或者下一个单词的词尾 b:光标跳转到当前或前一个单词的词首 #COMMAND :跳转由#指定的个数的单词行首行尾跳转 ^:光标跳转至行首的第一个非空白字符 0:跳转至行首 $:光标跳转至行尾行间跳转 #G:光标跳转至由#指定的行 1G或者gg:光标跳转至第一行 G:跳转至最后一行句间跳转 ):跳转到下一句 (:跳转到上一句段间跳转 }:跳转到下一段 {:跳转到上一段翻屏操作; Ctrl + f :向文件尾部翻一屏 Ctrl + b :向文件首部翻一屏 Ctrl + d :向文件尾部翻半屏 Ctrl + u : 向文件首部翻半屏 Enter : 按行向后翻
> vim的编辑命令:* 字符编辑:
x:删除光标所在处的字符; #x:删除光标所在处起始的#个字符 xp:交换光标所在处的字符与其后面字符所在的位置 替换命令:(replace) rCHAR:替换光标所在处的字符为CHAR
-
删除命令
d:删除命令,可结合光标跳转字符,实现范围删除; d$:删除当前光标所在处至行尾的字符 d^:删除当前光标所在处至行首第一个非空白字符位置dd:删除光标所在行的整行字符 #dd:删除光标所在处的行起始的共#行字符;删除的字符不会被清掉,会保留在缓冲区当中,但是只能粘贴最后一次操作的东西
-
粘贴命令:(put paste)
p:缓冲区的内容如果为一整行,或者为多个整行,则粘贴在当前光标所在行的下方;否则粘贴至当前光标所在出的后方。P:缓冲区的内容如果为一整行,或者为多个整行,则粘贴在当前光标所在行的上方;否则粘贴至当前光标所在出的前方。
-
复制命令:(yank)
y:复制,工作行为相当于d命令;
y$:从光标所在位置复制到行尾
y^:从行首非空白字符开始复制到光标所在位置
y0:从行首复制到光标所在位置
改变命令(change ,c)
编辑模式–> 输入模式,实现删除操作;
cc:删除光标所在处的行,并转换为输入模式
#cc:删除光标所在处以及后面的#行,并转换为输入模式</pre>
- 其他的编辑操作:
可视化模式:
v:按字符选定
V:按行选定
结合编辑命令:d , c , y
撤销操作:(undo)
u:撤销此前的操作,一般默认可以撤销50次。前提是此前操作都保存在缓冲区当中。
#u:撤销此前#次的操作
撤销此前的撤销操作:
Ctrl + r :恢复此前的撤销操作
重复执行前一个编辑操作:
. :重复此前的编辑操作。
vim自带的练习教程:vimtutor
vim末行模式:(扩展命令行模式)
内建的命令行接口
(1)地址定界:
:start_pos[,end_pos] #:特定的第#行,例如5就表示第5行
.:点号表示当前行
$:表示最后一行 #,#:从第#行到第#行,左侧为起始行,右侧为结束行
#,+#:指定行范围,左侧为起始行的绝对编号,右侧为相对左侧行号的偏移量。%:表示全文/pattern/:第一次被指定的模式所匹配到的行,光标所在处起始,到文件尾部的第一次。 /first/,$,从第一次first所匹配到的行到最后一行/pattern1/,/pattern2/:从光标所在处起始,第一次由pattern1匹配到的行开始,至第一次pattern2匹配到的的行之间的所有行。
可同编辑命令一同使用,实现编辑操作:
d:删除匹配到的内容
y:复制匹配到的内容
c:替换匹配到的内容
w /PATH/TO/SOMEFILE:将范围内的文本保存在指定的文件中
r /PATH/FROM/SOMEFILE:将制定文件中的文本读取并插入至指定位置。
!COMMAND 在末行模式下执行命令,不对当前文件产生影响
r!COMMAND 将命令执行结果插入当前光标所在位置的后方
(2)查找
/PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串
?PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串
n:下一个,与命令方向相同
N:上一个,与命令方向相反
(3)替换查找并替换
s:末行模式的命令:使用格式:
s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用正则表达式
替换为的内容:不能使用正则表达式,但可以引用;
如果“要查找的的内容”部分在模式中使用了分组符号:在“替换为的内容”中使用向后引用。
直接引用查找模式匹配到的全部文本;
修饰符:主要是用来实现修饰查找替换时的某些功能。
i:查找时忽略大小写
g:全局替换,意味着一行中如果匹配到多次,则均替换。
可把分隔符替换为其它非常用字符: s@@@ s###</pre>
vim的多文件模式;
多文件:
vim FILE1 FILE2 。。。
在文件间切换:
next :下一个
prev :上一个
first: 第一个
last:最后一个
退出所有文件:
wqall 保存所有文件并退出
wall 保存所有文件
qall 退出所有文件
多窗口:
-o:水平分割窗口 -O: 垂直分割窗口
切换窗口:Ctrl+w 摁完松开 在摁向上或者向下键上下切换窗口
Ctrl+w 摁完松开 在摁向左或者向右键左右切换窗口
定制vim的工作特性
对vim的修改要想永久有效,需要对其配置文件进行修改:
全局永久有效:/etc/vimrc
个人永久有效:~/.vimrc
在末行模式(扩展命令模式)下修改,只对当前vim进程有效。
(1)行号
显示:set number ,简写为set nu
取消显示:set nonumber ,简写为set nonu
(2)括号成对匹配
匹配:set showmatch ,简写set sm
取消:set noshowmatch , 简写 set nosm
(3)自动缩进
启用:set ai
禁用:set noai
(4)高亮搜索
启用:set hlsearch
禁用:set nohlsearch(5)语法高亮
启用:syntax on
禁用:syntax off
(6)忽略字符的大小写
启用:set ic
禁用:set noic
(7)文件格式
启用:fileformat = unix
不忽略:fileformat = dos
(8)设置文本高度 set textwidth = 65
set wrapmargin = 15当天作业:
-
1、如何设置tab缩进为4个字符?
set ts=4
-
2、复制/etc/rc.d/init.d/functions文件至/tmp目录;替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;
[root@localhost ~]#sed 's@/etc/sysconfig/init@/var/log@g' /tmp/functions
-
3、删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号;
[root@localhost ~]# sed -r 's@^#([[:space:]]+)@\1@' /tmp/functions