Vim编辑器使用教程
Vim是一个类似Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了许多的功能,Vim是自由软件,今天我们就来讲讲Vim的使用方法。
本文是基于CentOS7上的vim编辑器演示的,默认CentOS7没有安装Vim,可以使用yum -y install vim安装Vim。
Vim的四种模式及转换
命令模式:控制屏幕的光标移动,进行文本的删除、复制等文字编辑工作,当使用vim打开某个文件的时候,默认模式就 是命令模式
插入模式:只有在插入模式下,才可以输入文字
末行模式:保存文件或退出vim,同时也可以设置编辑环境和一些编译工作,如列出行号、寻找字符串等。
可视化模式:可以使用鼠标框选文字,比较人性化
特别要提到的是,在命令模式到插入模式,可以有多种方式:
i:insert,在光标所在处输入 a:append,在光标所在处后方输入 o:在光标所在行处的下方打开一个新行 I:在光标所在行的行首输入 A:在光标所在行的行尾输入 O:在光年所在行的上面打开一个新行
退出文件
在命令模式下:
ZZ:保存并退出
在末行模式下:
q:退出 q!:强制退出,不保存此前的编辑操作 wq:保存并退出 x:保存并退出 w:保存,也可以保存到某个文件 w /PATH/TO/SOMEFILE
举例:我们复制一个文件cp /etc/rc.d/init.d/functions /tmp/functions.txt,然后操作/tmp/functions.txt这个文件,在第第二行中插入"# hello linux",保存退出。
光标跳转
在命令模式下操作
字符间跳转
h:向左一个字符 l:向右一个字符 k:向上一个字符 j:向下一个字符
当然也可以是键盘的上下左右箭头
单词间跳转
w:下一个单词的词首 e:当前或后一个单词的词尾 b:当前或者前一个单词的词首 可以结合数字加COMMAND,例如" 2 w ":当前单词后的第二个单词的词首
行首行尾跳转
^:跳转至行首的第一个非空白字符 0:跳转至行首 $:跳转至行尾
行间跳转
#G:跳转至由#指定的行 1G,gg:第一行 G:最后一行
句间跳转和端间跳转(不常用)
):下一句 (:上一句 }:下一段 {:上一段
翻屏
Ctrl+f:向文件尾部翻一屏 ctrl+b:向文件首部翻一屏 ctrl+d:向文件尾部翻半屏 ctrl+u:向文件首部翻半屏 Enter:按行向后翻
vim的编辑命令
字符编辑
x:删除当前字符 #x:删除光标处起始的#个字符 xp:交换光标处的字符及其后面字符的位置
替换命令(replace)
r:替换光标所在处的字符 r+替换字符
删除命令
d:删除命令,不能单独使用 d$:删除当前字符到所在行的行尾 d^:删除当前字符到所在行的行首(不删除光标所在字符) dw:删除光标所在的单词位置至下一个单词的词首 de:删除光标所在单词的位置至下一个单词的词尾 db:删除光标所在单词的位置至单词的首部 dd:删除光标所在的行 可以结合数字使用: "3 dd":删除光标所处的行起行及下面的行,共3行 注意:删除的内容被保存在缓存区里面 粘贴命令 p:缓冲区中的内容如果是整行,则粘贴在当前所在行的下方,否则,则粘贴至当前光标所在处的后方 P:缓冲区中的内容如果是整行,则粘贴在当前所在行的上方,否则,则粘贴至当前光标所在处的前锋
复制命令
y:复制,不能单独使用 y$:复制光标位置到行尾 y^:复制光标位置至行首,不包含光标所在的字符 ye,yw:复制光标所在单词的位置至词尾 yb:复制光标所在单词的位置至词首 yy:复制一整行
改变命令
和d的作用是一样的,删除文件,不同之处在于,使用c之后,会直接进入插入模式
c$:删除光标所在位置至行尾并进入插入模式 c^:删除光标所在位置至行首并进入插入模式 ce,cw:删除光标所在单词的位置至单词尾部 cb:删除光标所在单词的位置至单词首部
其他编辑操作
在命令模式下使用v和V进入可视化模式
v:按字符选定 V:按行选定
选定之后,可以结合d(删除),c(删除并进入插入模式),y(复制)来操作
vim末行模式
地址定界
n:特定的第n行,列入:5,即第5行 . :当前行 $:最后一行 n1,n2:指定行范围,左侧为起始行,右侧为结束行 n1,+n2:指定行范围,左侧为起始行,右侧为偏移量 %:全文 /pattern/:从光标所在处起始向文件尾部第一次被模式匹配到的行 /pat1/,/pat2/:从光标所在处起始,第一由pat1匹配到的行开始,至第一次由pat2匹配到的所有行
可以结合d,y,c使用,也可以使用w将范围内的文本保存至指定的文件,使用r /PATH/FROM/SOMEFILE 将指定文件中的文本读取并插入至指定的位置。
查找
/PATTERN:从当前光标所在处向文件尾部查找能够被模式匹配的所有字符串 ?PATTERN:从当前光标所在处向文件首部查找能够被模式匹配的所有字符串 n:查看下一个 N:查看上一个
查找并替换
s:末行模式的命令
格式:s/要查找的内容/替换的内容/修饰符 要查找的内容:可使用正则表达式 替换的内容:不能使用正则表达式,但是可以引用 如果"要查找的内容"部分在模式中使用了分组符号,在"替换的内容"中可以使用后向引用 直接引用查找模式匹配到的全部文本,要是用&符号 修饰符: i:忽略大小写 g:全局替换,意味着一行中如果匹配到多次,则均替换
有的时候我们需要匹配"\",我们就可以把分隔符替换为其他的字符,比如s@@@或者s###。
vim的多文件功能
vim可以同时打开多个文件
vim FILE1 FILE2..
在文件间切换:
:next 下一个文件 :prev 上一个文件 :first 第一个文件 :last 最后一个文件
退出所有文件:
:wqall 保存退出所有文件 :wall 保存所有文件 :qall 退出所有文件
多窗口查看
在使用vim打开多个文件时使用选项:
-o:水平分隔窗口 -O:垂直分隔窗口
使用ctrl+w切换窗口
定制vim的工作特性
在末行模式下的设定,仅对当前vim有效,永久修改必须修改配置文件:
全局:/etc/vimrc 用户个人:~/.vimrv 没有可以创建
在末行模式下的操作:
1、行号 显示:set number, 简写为set nu 取消显示:set nomber, 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
举例:在vim中,tab键为8个空格的位置且8个空格是一个整体,如果是左右键移动会看到只能移动一次就是8个空格,那么如何将其修改为4个空格呢?
可以在/etc/vimrc加入以下2行:
set ts=4 #设置宽度为4个空格 set expandtab #将tab转换为了space
在末行模式下可以获取VIM的帮助
:help :help subject
如果大家想练习vim的操作,输入vimtutor即可获取VIM教程