第五章 Vim 文本编辑器

  • 1、Vim 使用模式介绍
  • 2、普通模式
  • 3、编辑模式
  • 4、命令行模式
  • 5、可视操作
  • 6、剪贴板操作
  • 7、多文件操作
    • 1)vim 文件 1 文件 2 文件 3…
    • 2)vim -o 文件 1 文件 2 文件 3… 上下分屏显示
    • 3)vim -O 文件 1 文件 2 文件 3… 左右分屏显示
    • 4)vim -p 文件 1 文件 2 文件 3…
    • 5)先打开一个文件如果想再打开一个(多窗口打开)
  • 8、Vim 环境设置
    • 9、Windows 与 Linux 下换行区别
  • 10、文件编码转换
  • 11、利用暂存文件救援

导语:
Vim 文本编辑器,它是 Linux 中不可或缺的软件,老版本的 Linux 使用的 vi 编辑器,Vim 是 Vi 编辑器的升级增强版,他会显示颜色哦,我们在 Linux 中做各种文件的编辑时,Vim 是我们必不可少的工具,所以一定要学会它的常用操作!
注:如果遇到特殊情况系统里没有安装 Vim,可以执行以下命令来安装:

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 的命令行模式下类似于 shell 命令行也可以通过上下键来获得以往输入的 vim 命令
也可通过 tab 来自动补全 vim 命令行模式下支持的命令

5、可视操作

可视操作能让你的光标选择可以被看到

6、剪贴板操作

7、多文件操作

1)vim 文件 1 文件 2 文件 3…

:n 或:N 编辑 下一个 或 上一个 文件:files 列出 vim 当前打开的所有文件

2)vim -o 文件 1 文件 2 文件 3… 上下分屏显示

ctrl+w+↓ctrl+w+↑ctrl+w+kctrl+w+j:qall 退出所有:wall 保存全部:q 退出当前所在的文件

3)vim -O 文件 1 文件 2 文件 3… 左右分屏显示

ctrl+w+->ctrl+w+<- ctrl+w+hctrl+w+l:qall 退出所有:wall 保存全部:q 退出当前所在的文件

4)vim -p 文件 1 文件 2 文件 3…

标签式,通过:set tabpagemax=n 可以设置最大允许的打开标签数量默认 10

ctrl+pageup同 :bnctrl+pagedown 同 :bp:qall 退出所有:wall 保存全部:q 退出当前所在的文件

5)先打开一个文件如果想再打开一个(多窗口打开)

vim 文件 1上下分屏 :sp 或:split 文件 2垂直分屏:vs 或:vsplit 文件 2
在新窗口打开文件 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;
原因:

■ Windows 下你看到的换行现象:是\r\n■ Linux 下你看到的换行现象是:\n■ \r:回车符■ \n:换行符

■ 这个换行的区别放在 Linux 中有实际影响吗?
当然有影响,如果是 shell 脚本就知道区别了,这边先记住这个转换办法!

■ 在 Linux 中怎么转换呢?

dos2unix [-kn] file [newfile]unix2dos [-kn] file [newfile]PS:如果没有这个命令可以安装下:yum -y install dos2unix
选项:-k:不改变文本的 mtime-n:不修改源文件,修改后的数据输出到指定的新文件

■ 扩展知识:vim 打开 windows 下文件时,左下角出现[noeo] 是 ‘no end-of-line’,
即“没有行末结束符”,默认 windows 下最后一行行末没有换行符,Linux 下是会给最后一行也加上行末换行符的!

10、文件编码转换

■ file 命令可以查看文件的编码,不过不一定准确!
■ 推荐更牛 X 的常看文件编码的命令:

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 查询吧!

■ iconv [-l|--list]:列出 iconv 支持的语系数据■ iconv -f 原编码 -t 新编码 文件名 [-o new file]

选项:-o 后接上转换后将数据保存到的文件,如果不加该选项则会将输出转换后的数据输出,而不是修改

11、利用暂存文件救援

使用 vim 编辑时,vim 会在被编辑的目录下新建一个名为.filename.swp 的隐藏文件。如遇到意外情况中断 vim 编辑,可以利用这个隐藏文件救援。
你可能有时候利用 vim 打开某文件时会出现以下提示

这代表这个文件可能有些问题,比如上次编辑时不正常退出,这时你可以按照提示按键进行相关操作:

[O]pen Read-Only:打开此文件成为只读文件,只查阅不编辑状态(E)dit anyway:正常方式打开此文件,不会载入暂存隐形文件的内容(R)ecover:加载暂存隐形文件的内容,挽救之前未保存的工作。切记救回文件保存离开 vim 后,要手动删除那个暂存隐形文件,否则下次打开还会有出上图的提示,并且如果再次发生意外退出,则会再多出一个类似的救援文件,当你再次打开时还可以指定根据哪个救援文件进行救援。(D)elete it:确定暂存文件没有用,执行 D,会在打开文件前把这个暂存文件删除(Q)uit:按下 q 离开 vim,回到命令提示符,如果打开多个文件则只退出这个存在救援文件的文件(A)bort:忽略这个编辑行为,回到命令提示符,如果打开多个文件则忽略全部,通过 vim -o 可以看到与 q 的区