vim和vi它们都是多模式编辑器,在客户的某些环境上如果是最小化安装只会有vi。不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面,vim里面有三种模式,分别为命令模式、扩展模式、插入模式,下面会详细介绍些。
vi: Visual Interface,可视化文本编辑器
从终端打开的文件的选项:
vim [OPTION]... FILE...
+# 打开文件后,让光标处于第#行的行首,+默认行尾 例如,vim 1.txt +3
+/PATTERN 让光标处于第一个被PATTERN匹配到的行的行首
–b file 二进制方式打开文件
–d file1 file2… 比较多个文件 这个用的比较多
-m file 只读打开文件
如果该文件存在,文件被打开并显示内容
如果该文件不存在,当编辑后第一次存盘时创建它
进入vim编辑器模式切换的选项:
几种能提高工作效率的快捷键
命令模式: l 光标向右 k 光标向上 j 光标向下 h 光标向左 数字+l/k/j/h 想移动的位置
A 光标跑到本行最后,并且进入插入模式
I (大写)光标跑到本行最前,并且进去插入模式
O 进去本行的上面一行,并且进入插入模式模式
单词间跳转:
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
当前页跳转:
H:页首 M:页中间行 L:页底
zt:将光标所在当前行移到屏幕顶端
zz:将光标所在当前行移到屏幕中间
zb:将光标所在当前行移到屏幕底端
行首行尾跳转:
^ 跳转至行首的第一个非空白字符
0 跳转至行首
$ 跳转至行尾
行间移动:
#G 或者扩展命令模式下:# 跳转至由第#行
G 最后一行
1G, gg 第一行
句间移动:
) 下一句 ( 上一句
段落间移动:
} 下一段 { 上一段
Ctrl+f 向文件尾部翻一屏
Ctrl+b 向文件首部翻一屏
Ctrl+d 向文件尾部翻半屏
Ctrl+u 向文件首部翻半屏
撤销修改
u 撤销最近的更改
#u 撤销之前多次更改
U 撤消光标落在这行后所有此行的更改
. 重复前一个操作
#. 重复前一个操作#次
扩展模式: r filename 读文件内容到当前文件中
w filename 将当前文件内容写入另一个文件
!command 不退出vim情况下,执行命令
r!command 不会出 vim 情况下,读入命令的输出
插入模式: a 光标向后退一位,进行插入
i 光标位置不变,进入插入模式
o 与O一样
这三个用法,区别不是很大,丰富操作而已
wq=x 一般建议wq操作
命令模式 ZZ 保存退出 ZQ 不保存退出
几点平时实用的小技巧:
1.查找并替换 ;
格式:s/要查找的内容/替换为的内容/修饰符
修饰符:
i 忽略大小写
g 全局替换,默认情况下,每一行只替换第一次出现
gc 全局替换,每次替换前询问
% 全文 s 搜索 g 全文
查找替换中的分隔符/可替换为其它字符 ,有时也可以用#,@ 也方便些
2.编辑二进制文件
vim -b binaryfile
扩展命令模式下,利用xxd命令转换为可读的十六进制
:%!xxd
插入模式下,利用xxd命令转会二进制
:%!xxd -r
保存退出
3.可视化模式
多文件屏幕分割
vim -o|-O FILE1 FILE2 ...
-o: 水平分割
-O: 垂直分割
通过光标移动来操作分割屏幕:
光标向上移动 ctrl+w+向上箭头
光标向下移动 ctrl+w+向下箭头
保存退出时候发现是一个一个的退出,如果想要一起退出wqall
4.标记和宏(macro)
这个用法看不太懂,但是先记着。。。。。。。。
ma 将当前位置标记为a,26个字母均可做标记, mb 、 mc 等等
'a 跳转到a标记的位置,实用的文档内标记方法,文档中跳跃编辑时很有用
qa 录制宏 a,a为宏的名称
q 停止录制宏
@a 执行宏 a
@@ 重新执行上次执行的宏
5.vim的一些定制工作特性,可以加大工作效率
配置文件:永久生效
全局:/etc/vimrc
个人:~/.vimrc
扩展命令模式:当前vim进程有效
(1) 行号
显示:简写 set nu
取消显示: 简写 set nonu
(2) 忽略字符的大小写
启用:set ignorecase,简写 set ic
不忽略:set noic
(3) 自动缩进
启用:set autoindent,简写 set ai
禁用:set noai
(4) 复制保留格式
启用:set paste
禁用:set nopaste
(5) 显示Tab和换行符 ^I 和$显示
启用:set list
禁用:set nolist
(6) 高亮搜索
启用:set hlsearch
禁用:set nohlsearch
(7) 语法高亮
启用:syntax on
禁用:syntax off
(8) 文件格式
启用windows格式:set fileformat=dos
启用unix格式:set fileformat=unix
简写 set ff=dos|unix
(9) 设置文本宽度
set textwidth=65 (vim only)
set wrapmargin=15
(10) 设置光标所在行的标识线
启用:set cursorline,简写 set cul
禁用:set nocursorline
(11)忽略大小写敏感
:set ignorecase