vim是一种比vi更加强大的模式化的全屏文本编辑器。vim在工作过程中有三种模式:编辑模式、插入模式、末行模式。
编辑模式(默认):又称命令模式,其工作内容包括移动光标、剪切、粘贴、删除等 输入模式:亦可称为插入模式,主要是在文件中修改文本内容 末行模式:亦称扩展命令模式,主要是执行vim内置命令的
vim三种模式之间的切换:如下图
(1)编辑模式 --> 输入模式
i: 在光标所在处输入 I:在当前光标所在行的行首 输入 a: 在光标所在处后面输入 A:在当前光标所在行的行尾 输入 o: 在当前光标所在行的下方打开一个新行 O:在当前光标所在行的上方打开一个新行
(2)输入模式 ----> 编辑模式
按ESC键
(3)编辑模式 ----> 末行模式
:(冒号)
(4)末行模式 ----> 编辑模式
按ESC键
vim [options] [file ..] option: -b:以二进制方式打开文件 -d:后接多个文件表示打开并比较多个文件 -m:以只读方式打开文件 -e:直接进入末行模式
+#:表示打开文件后,直接让光标处于第#行的行首 +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN 匹配到的行的行首 如:vim ‘+/UUID‘ /etc/fstab +:打开文件后,光标处于文件的最后一行
:q 表示退出 :q! 表示强制退出 :wq 表示保存退出 :x 表示保存退出 :w /PATH/TO/SOMEFILE 不退出,而是将文件保存至指定文件
ZZ:表示保存退出 ZQ:表示不保存退出
h:一次向左移动一个字符 j:一次向下移动一个字符 k:一次向上移动一个字符 l:(小写L)一次向右移动一个字符 上下左右箭头键亦可实现上述操作 还可以用#+{h,j,k,l}来表示移动几个字符,如“3h”表示向左移动3个字符
w:移动到下一个单词的词首 e:移动到当前或下一个单词的词尾 b:移动到当前或下一个单词的词首 #+{w,e,b}表示动到第#个字符的词首(词尾)
H:移动到当前页的第一行行首 M:移动到当前页面的中间行的行首 L:移动到当前页面的最后一行的行尾
^:跳至当前行首的第一个非空白字符 0:跳至当前行的行首(绝对行首) $:跳至当前行的行尾
G:跳至文件的最后一行的行首 1G(gg):跳至文件的第一行行首 #G:跳至指定的定#行行首
):向下移动一句 (:向上移动一句
{:向下移动一段 }:向上移动一段
Ctrl+f: 向文件尾部翻一屏 Ctrl+b: 向文件首部翻一屏 Ctrl+d: 向文件尾部翻半屏 Ctrl+u: 向文件首部翻半屏
x: 删除光标处的字符 #x: 删除光标处起始的#个字符 d:删除(剪切)命令,需要结合光标移动字符使用(w/b/e/$/0/^等)如:“d$”表示删除光标以后的内容,“3dw”表示删除光标后的3个单词 dd:删除光标所在处的行 D:从当前光标位置一直删除到行尾,等同于d$ xp: 交换光标所在处的字符及其后面字符的位置 ~: 转换大小写
r:替换光标所在处的字符,一次只能替换单个字符 R:切换成REPLACE模式,可以逐个字符替换
y:复制命令,可以结合光标移动字符使用(w/b/e/$/0/^等)如:“y0”表示复制光标所在处到行首的内容,“0y$”表示整行。 yy:复制整行 #yy:一次复制#行
p:(小写)如果复制为整行,则将复制的内容粘贴到当前光标所在行的下方;如果复制的是行的部分内容,则将复制的内容粘贴至当前光标所在处的后面 P:(大写)如果复制为整行,则将复制的内容粘贴到当前光标所在行的上方;如果复制的是行的部分内容,则将复制的内容粘贴至当前光标所在处的前面
c:修改命令,可以结合光标移动字符使用(w/b/e/$/0/^等) cc:删除当前行并输入新内容 C:删除当前光标到行尾的内容,并切换成插入模式
u:撤销最近的修改,一次只撤销一个操作 #u:一次撤销#个操作 Ctrl+r:撤销上一次的撤销操作 .:重复前一个操作 n.:重复前n个操作
v:按字符选定 V:按行选定 Ctrl+v:按块选定
100iwang [ESC]:先输入100,在输入i,然后输入wang,最后按ESC键,即输入100个wang字符
1)#: 具体第#行,如2 表示第2 行; 2)#,#: 从左侧#表示行起始,到右侧# 表示行结尾,如3,8表示第3到第8行 3)#,+#: 左侧#示的行起始,加上右侧# 表示的行数,如2,+3 表示2到5行 4). : 当前行 5)$: 最后一行 6)% :全文, 相当于1,$ 7)/pattern1/,/pattern2/ : 第一次被pattern1模式匹配到的行开始,一直到第一次被pattern2匹配到的行结束 8)w /PATH/TO/SOMEFILE : 表示将范围内的内容另存到指定文件中 9)r /PATH/FROM/SOMEWHERE : 表示将外部指定文件的内容调入到指定的位置中
/PATTERN:从当前光标所在处向文件尾部查找 ?PATTERN:从当前光标所在处向文件首部查找 N:上一个,与命令反方向 n:下一个,与命令同方向
s///:查找并替换,分隔符可以自定如:s@@@,s###。 格式:s/ 要查找的内容/ 替换为的内容/ 修饰符 要查找的内容:可使用模式 替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&” 引用前面查找时查找到的内容 修饰符: i : 忽略大小写 g : 全局替换;默认情况下,每一行只替换第一个匹配到的内容 gc : 全局替换,每次替换前询问
1)有26个命名寄存器和1个无命名寄存器,常存放不同的剪贴版内容,可以不同会话间共享 2)26个命名寄存器由26个英文字母一一对应,用a ,b,…,z 表示, 用“字母 表示寄存器,放在数字和命令之间,如“3"ayy” 表示复制3 行到a 寄存器中,“"ap”表示将a寄存器的3行内容粘贴到光标处的下一行 3)未指定名字,将使用无命名寄存器,直接使用3yy即可复制 4)有10个数字寄存器用0,1,…,9表示,0存放最近复制的内容,1存放最近删除的内容。当新的文变更和删除时,1 转存到2 ,2 转存到3 ,以此类推。数字寄存器不能在不同会话间共享。
vim FILE1 FILE2 FILE3 ... 各个文件间的切换:(在编辑模式下) :next 跳至下一个文件 :prev 跳至前一个文件 :first 跳至第一个文件 :last 跳至最后一个文件 :wall 保存所有文件但不退出 :qall 退出所有文件 :wqall 保存并退出所有文件
vim -o |-O FILE1 FILE2 FILE3 ... -o:水平分割 -O:垂直分割 Ctrl+w切换窗口
Ctrl+w,s: split, 水平分割() Ctrl+w,v: vertical, 垂直分割 ctrl+w,q :取消相邻窗口 ctrl+w,o : 取消全部窗口 :wqall 退出
启用:set ai 禁用:set noai
启用:set hlsearch 禁用:set nohlsearch
启用:syntax on 禁用:syntax off
忽略:set ic 不忽略:set noic
显示:set nu 不显示:set nonu
启用:set sm 禁用:set nosm
全局设置:/etc/vimrc 个人设置:~/.vimrc
启用unix格式:fileformat=unix 启用dos格式:fileformat=dos ### (9)设置文本宽度 ### :set textwidth=65 :set wrapmargin=15
在末行模式输入:set ts=4即可,如果要永久生效可以写入配置文件
在末行模式输入:%s@/etc/sysconfig/init@/var/log@g
在末行模式输入:%s@^#[[:space:]]\+@@g
在末行模式输入:%s@\(enabled\|gpgcheck\)=0@\1=1@g
本文出自 “新手学Linux” 博客,请务必保留此出处http://kop309.blog.51cto.com/9034739/1836662
原文地址:http://kop309.blog.51cto.com/9034739/1836662