Vi(Visual Interface):是一种文本编辑器,所谓文本数据是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。
文本编辑器的种类:
行编辑器:所谓行编辑器是指一行一行来编辑处理的工具,如sed。
全屏编辑器:编辑空间占据整个屏幕,如nano,vi。
Vim即ViMproved:vi的增强版,vim是模式化的编辑
vim在工作过程当中有三种模式:编辑模式(命令模式)、输入模式、末行模式。、
1、编辑模式:也叫命令模式,键盘操作常被理解为编辑命令
2、输入模式:在文本文件当中进行输入内容
3、末行模式:vim内置的命令行接口,执行vim的内置命令
vim 命令
简介: vim - Vi IMproved, a programmers text editor
格式: vim [options] [file ..] vim [options] - vim [options] -t tag vim [options] -q [errorfile]
选项: +<行号>:从指定行号的行开始先是文本内容; -b:以二进制模式打开文件,用于编辑二进制文件和可执行文件; -c<指令>:在完成对第一个文件编辑任务后,执行给出的指令; -d:以diff模式打开文件,当多个文件编辑时,显示文件差异部分; -l:使用lisp模式,打开“lisp”和“showmatch”; -m:取消写文件功能,重设“write”选项; -M:关闭修改功能; -n:不实用缓存功能; -o<文件数目>:指定同时打开指定数目的文件; -R:以只读方式打开文件; -s:安静模式,不现实指令的任何错误信息
Vim编辑器模式一共有:插入模式、命令模式、扩展模式、可视化模式
(1)命令模式–> 插入模式(切换操作)
i: insert, 在光标所在处输入 I:在当前光标所在行的行首输入 a: append, 在光标所在处后面输入 A:在当前光标所在行的行尾输入 o: 在当前光标所在行的下方打开一个新行 O:在当前光标所在行的上方打开一个新行
命令模式下保存操作
ZZ: 保存退出 ZQ:不保存退出
命令模式光标跳转
h:左 l:右 j:下 k:上; #COMMAND:跳转由#指定的个数的字符;(COMMAND表示的是h、l、j、k)
单词间跳转
w:下一个单词的词首 e:当前或下一单词的词尾 b:当前或前一个单词的词首 #COMMAND:由#指定一次跳转的单词数 (COMMAND表示的是w、e、b)
当前页跳转
H:页首M:页中间行L:页底
行首行尾跳转
^: 跳转至行首的第一个非空白字符; 0: 跳转至行首 $: 跳转至行尾
行间移动
#G、扩展模式:# :跳转至由#指定行 G:最后一行 1G, gg: 第一行
句间移动
):下一句(:上一句
段落间移动
}:下一段{:上一段
翻屏操作
Ctrl+f: 向文件尾部翻一屏 Ctrl+b: 向文件首部翻一屏 Ctrl+d: 向文件尾部翻半屏 Ctrl+u:向文件首部翻半屏
字符编辑
x: 删除光标处的字符; #x: 删除光标处起始的#个字符 xp: 交换光标所在处的字符及其后面字符的位置 ~: 转换大小写
替换命令(r, replace)
r: 替换光标所在处的字符 R: 切换成REPLACE模式
删除命令
d: 删除命令,可结合光标跳转字符,实现范围删除; d$: 删除到行尾 d^: 删除到非空行首 d0: 删除到行首 dw: 删除光标后的单词 db: 删除光标前的单词 #COMMAND:删除#个单词 dd: 删除光标所在的行 #dd:多行删除 D:从当前光标位置一直删除到行尾,留空行,等同于d$
复制命令(y, yank)
y: 复制,行为相似于d命令 y$:复制光标处的行尾 y0:复制光标处的行首 y^:复制光标处的行首(如果行首为有空白字符,不包含空白字符) yw:复制光标后的单词 yb:复制光标前的单词 #COMMAND:复制#个单词 yy:复制行 #yy: 复制多行 Y: 复制整行
粘贴命令(p, paste)
p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面 P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面
改变命令
c: 修改后切换成插入模式 cc:删除当前行并输入新内容 C:删除当前光标到行尾,并切换成插入模式
撤消更改命令
u撤销最近的更改 #u撤销之前多次更改 U撤消光标落在这行后所有此行的更改 按Ctrl-r重做最后的“撤消”更改 . 重复前一个操作 n.重复前一个操作n次
(2)扩展模式
按“:”进入Ex模式(命令模式——>扩展模式)
创建一个命令提示符:,处于底部的屏幕左侧
命令: w写(存)磁盘文件 wq写入并退出 x 写入并退出 q 退出 q!不存盘退出,即使更改都将丢失 r filename 读文件内容到当前文件中 w filename 将当前文件内容写入另一个文件
关闭文件
:q 退出 :q! 强制退出,丢弃做出的修改 :wq保存退出 :x 保存退出
地址定界
:start_pos,end_pos #: 具体第#行,例如2表示第2行; #,#: 从左侧#表示行起始,到右侧#表示行结尾 #,+#: 从左侧#表示的行起始,加上右侧#表示的行数 :2,+3 表示2到5行 .: 当前行 $: 最后一行 .,$-1 当前行到倒数第二行 %:全文, 相当于1,$ /pat1/,/pat2/ 从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束 #,/pat/ /pat/,$ 使用方式:后跟一个编辑命令 d:删除 y:复制 w file: 将范围内的行另存至指定文件中 r file:在指定位置插入指定文件中的所有内容
查找命令
/PATTERN:从当前光标所在处向文件尾部查找 ?PATTERN:从当前光标所在处向文件首部查找 n:与命令同方向 N:与命令反方向
查找并替换
s: 在扩展模式下完成查找替换操作 格式:s/要查找的内容/替换为的内容/修饰符 要查找的内容:可使用模式 替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容 修饰符: i: 忽略大小写 g: 全局替换;默认情况下,每一行只替换第一次出现 gc:全局替换,每次替换前询问 查找替换中的分隔符/可替换为其它字符,例如 s@/etc@/var@g s#/boot#/#i
(3)可视化模式
允许选择的文本块
v:面向字符 V:面向行 ctrl-v:面向块
可视化键可用于与移动键结合使用
w,),},箭头等(突出显示的文字可以被删除,复制,变更,过滤,搜索/替换等)
(4)多文件模式
vim FILE1 FILE2 FILE3 …
:next 下一个 :prev前一个 :first 第一个 :last 最后一个 :wall 保存所有 :qall退出所有 :wqall
多文件分割
vim -o|-O FILE1 FILE2 ... -o: 水平分割 -O: 垂直分割 在窗口间切换:Ctrl+w, Arrow
单文件窗口分割
Ctrl+w,s: split, 水平分割 Ctrl+w,v: vertical, 垂直分割 ctrl+w,q:取消相邻窗口 ctrl+w,o:取消全部窗口 :wqall退出
(5)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
<7>文件格式
启用:fileformat=unix 不忽略:fileformat=dos
<8>设置文本宽度
:set textwidth=65 (vimonly) :set wrapmargin=15
(6)Vim内置帮助
:help :helptopic Use:qto exit help
Vimtutor #内置vim的帮助手册
原创文章,作者:Aleen,如若转载,请注明出处:http://www.178linux.com/32300