第五章 Vim 文本编辑器
- [1、Vim 使用模式介绍](#1、Vim 使用模式介绍)
- 2、普通模式
- 3、编辑模式
- 4、命令行模式
- 5、可视操作
- 6、剪贴板操作
- 7、多文件操作
-
- [1)vim 文件 1 文件 2 文件 3...](#1)vim 文件 1 文件 2 文件 3...)
- [2)vim -o 文件 1 文件 2 文件 3... 上下分屏显示](#2)vim -o 文件 1 文件 2 文件 3... 上下分屏显示)
- [3)vim -O 文件 1 文件 2 文件 3... 左右分屏显示](#3)vim -O 文件 1 文件 2 文件 3... 左右分屏显示)
- [4)vim -p 文件 1 文件 2 文件 3...](#4)vim -p 文件 1 文件 2 文件 3...)
- 5)先打开一个文件如果想再打开一个(多窗口打开)
- [8、Vim 环境设置](#8、Vim 环境设置)
-
- [9、Windows 与 Linux 下换行区别](#9、Windows 与 Linux 下换行区别)
- 10、文件编码转换
- 11、利用暂存文件救援
导语:
Vim 文本编辑器,它是 Linux 中不可或缺的软件,老版本的 Linux 使用的 vi 编辑器,Vim 是 Vi 编辑器的升级增强版,他会显示颜色哦,我们在 Linux 中做各种文件的编辑时,Vim 是我们必不可少的工具,所以一定要学会它的常用操作!
注:如果遇到特殊情况系统里没有安装 Vim,可以执行以下命令来安装:
xml
yum -y install vim-enhanced
1、Vim 使用模式介绍
■ 普通模式(命令模式):这个模式是我们使用 vim 打开文件后的默认模式,在该模式下可以移动光标、删除整行、删除字符、复制、粘贴等等...
■ 编辑模式:这个模式下可以自由的编辑文本内容
■ 命令行模式(扩展命令模式):这个模式下可以保存更改、查找、替换字符、退出 vim、显示行号等操作
2、普通模式
命令:vim 文件路径
输入上面的命令即可进入普通模式,若直接输入 vim 省略文件路径则可以看到 vim 软件的版本信息
我们来找个文件试试,最好复制某个文件到/tmp 目录下去操作,防止初学者误更改重要文件!
■ 移动光标:
■ 删除、复制、粘贴
■ 小提示:在做操作前如果按了数字 n 则后面做操作相当于做 n 次(不仅仅是普通模式下,其实模式下都可以去试试)
比如:10x,做 x 这个动作 10 次
3、编辑模式
在一般模式下按 i、I、a、A、o、O、r、R 中任意一键即可进入编辑模式,注意屏幕左下角的变化!
■ 从一般模式进入编辑模式说明:
■ 从编辑模式回到普通模式请按 Esc 键,如果不喜欢可以试试 ctrl+c,或者 ctrl+[
4、命令行模式
在一般模式下输入":"或者"/"或者"?"进入命令行模式,不过各自作用不一样,在命令行模式下能做的事情就多了,比如常见的搜索、替换。特别是在搜索、替换时配合正则表达式(vim 这边是支持正则的)可以得到极强的效果
注:vim 的命令行模式下类似于 shell 命令行也可以通过上下键来获得以往输入的 vim 命令
也可通过 tab 来自动补全 vim 命令行模式下支持的命令
5、可视操作
可视操作能让你的光标选择可以被看到
6、剪贴板操作
7、多文件操作
1)vim 文件 1 文件 2 文件 3...
xml
:n 或:N 编辑 下一个 或 上一个 文件
:files 列出 vim 当前打开的所有文件
2)vim -o 文件 1 文件 2 文件 3... 上下分屏显示
xml
ctrl+w+↓
ctrl+w+↑
ctrl+w+k
ctrl+w+j
:qall 退出所有
:wall 保存全部
:q 退出当前所在的文件
3)vim -O 文件 1 文件 2 文件 3... 左右分屏显示
xml
ctrl+w+->
ctrl+w+<- ctrl+w+h
ctrl+w+l
:qall 退出所有
:wall 保存全部
:q 退出当前所在的文件
4)vim -p 文件 1 文件 2 文件 3...
标签式,通过:set tabpagemax=n 可以设置最大允许的打开标签数量默认 10
xml
ctrl+pageup同 :bn
ctrl+pagedown 同 :bp
:qall 退出所有
:wall 保存全部
:q 退出当前所在的文件
5)先打开一个文件如果想再打开一个(多窗口打开)
xml
vim 文件 1
上下分屏 :sp 或:split 文件 2
垂直分屏 :vs 或:vsplit 文件 2
xml
在新窗口打开文件 2,若省略则新窗口打开的还是文件 1(内容同步)
:qall 退出所有
:wall 保存全部
:q 退出当前所在的文件
提示:vim 查看帮助:help 具体项目比如:help -p
8、Vim 环境设置
每次都在命令模式下把编辑器设置成自己喜好的方式是反人道的的,比如每次都是设置显示行号实在太麻烦了,有没有办法做好配置,下次依然有效呢?
当然可以!
/etc/vimrc 这个文件是 vim 的默认全局配置文件,不建议更改这个。
~/.vimrc 这个文件是用户自己的 vim 配置,可以把设置信息放在这里面,这样各个用户对于 vim 的设置互不干扰!
注:vimrc 文件的注释是用双引号,加不加冒号开头都无所谓!
比如,我们可以在配置文件里写上这条配置 set fileencodings=ucs-bom,utf-8,utf-16,gbk,big5,gb18030,latin1
注意:vim 在打开文件时会根据 fileencodings 选项来识别文件编码,通过以上设置可以避免绝大部分的中文、繁体中文呢的显示乱码问题(当然前提是系统当前使用的语系是支持中文的编码,参照后面要讲的 locale 设置,现在先简单看下locale 设置),不过我们这边除了图像界面,其他的本地终端是不支持中文的,也就是我们通过 ctrl+alt+f2...等等切换。这边都是无法支持中文的,不过以后使用远程连接时是可以显示的,所以这边的只要把这个配置写上就行了!
注:...rc,这种文件代表是在执行对应的命令之前要执行的配置脚本,比如后面要讲的 bashrc 等等
~/.viminfo 历史行为记录文件
当我们再次打开同一个文件时,光标依然在上次离开的位置,这些记录就放在~/.viminfo 文件中,所以没事不要乱删配置文件!
9、Windows 与 Linux 下换行区别
使用 cat -A 查看可以看到:Windows 下的换行符比 Linux 下的多了个 ^M;
原因:
xml
■ Windows 下你看到的换行现象:是\r\n
■ Linux 下你看到的换行现象是:\n
■ \r:回车符
■ \n:换行符
■ 这个换行的区别放在 Linux 中有实际影响吗?
当然有影响,如果是 shell 脚本就知道区别了,这边先记住这个转换办法!
■ 在 Linux 中怎么转换呢?
xml
dos2unix [-kn] file [newfile]
unix2dos [-kn] file [newfile]
PS:如果没有这个命令可以安装下:yum -y install dos2unix
xml
选项:
-k:不改变文本的 mtime
-n:不修改源文件,修改后的数据输出到指定的新文件
■ 扩展知识:vim 打开 windows 下文件时,左下角出现[noeo] 是 'no end-of-line',
即"没有行末结束符",默认 windows 下最后一行行末没有换行符,Linux 下是会给最后一行也加上行末换行符的!
10、文件编码转换
■ file 命令可以查看文件的编码,不过不一定准确!
■ 推荐更牛 X 的常看文件编码的命令:
xml
enca
■ 安装:
■ 下载:http://rpmfind.net/linux/epel/7/x86_64/Packages/e/enca-1.19-1.el7.x86_64.rpm
■ 安装:rpm -ivh enca-1.19-1.el7.x86_64.rpm
■ 查看文件编码
enca 文件路径
注:enca 支持编码转换甚至是批量转换,如果需要就请自行 man 查询吧!
xml
■ iconv [-l|--list]:列出 iconv 支持的语系数据
■ iconv -f 原编码 -t 新编码 文件名 [-o new file]
选项:-o 后接上转换后将数据保存到的文件,如果不加该选项则会将输出转换后的数据输出,而不是修改
11、利用暂存文件救援
使用 vim 编辑时,vim 会在被编辑的目录下新建一个名为.filename.swp 的隐藏文件。如遇到意外情况中断 vim 编辑,可以利用这个隐藏文件救援。
你可能有时候利用 vim 打开某文件时会出现以下提示
这代表这个文件可能有些问题,比如上次编辑时不正常退出,这时你可以按照提示按键进行相关操作:
xml
[O]pen Read-Only:打开此文件成为只读文件,只查阅不编辑状态
(E)dit anyway:正常方式打开此文件,不会载入暂存隐形文件的内容
(R)ecover:加载暂存隐形文件的内容,挽救之前未保存的工作。切记救回文件保存离开 vim 后,要手动删除那个暂存隐形文件,否则下次打开还会有出上图的提示,并且如果再次发生意外退出,则会再多出一个类似的救援文件,当你再次打开时还可以指定根据哪个救援文件进行救援。
(D)elete it:确定暂存文件没有用,执行 D,会在打开文件前把这个暂存文件删除
(Q)uit:按下 q 离开 vim,回到命令提示符,如果打开多个文件则只退出这个存在救援文件的文件
(A)bort:忽略这个编辑行为,回到命令提示符,如果打开多个文件则忽略全部,通过 vim -o 可以看到与 q 的区