7、文本编辑工具Vim

7.1 什么是 vim

  前面多次提到过vi这个命令,它是 Linux 中必不可少的一个工具。早期的Unix都是使用的vi作为系统默认的编辑器的,没有它很多工作都无法完成。你也许会有疑问,vi与vim有什么区别?其实,vim是vi的升级版。简单的来说,vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方,vim 则可以说是程序开发者的一项很好用的工具。很多 Linux 系统管理员都习惯用vi,那是因为他们接触 Linux 的时候用的就是vi,vim后来才比较流行。所以,无所谓用vi和vim,只要你能达到你想要的目的即可。
  Vim是从 vi 发展出来的一个文本编辑器,代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。连 vim 的官方网站自己也说 vim 是一个程序开发工具而不是文字处理软件。vim 键盘图如下所示:

image

  其实,vi 和vim最大的区别就是编辑一个文本时,vi不会显示颜色,而vim会显示颜色,显示颜色更易于用户进行编辑,其他功能没有什么区别。所以在 Linux 系统下,使用vi还是vim完全取决个人爱好而已。

7.2 Vim 常用模式

  基本上 vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。 这三种模式的作用分别是:

  • 当我们使用命令 vim filename 编辑一个文件时,默认进入该文件的一般模式。在这个模式下,我们可以做的操作有:上下移动光标、删除某个字符、删除某行、复制、粘贴一行或者多行等。

  • 一般模式下,是不可以修改某一个字符的,只能到编辑模式了。从一般模式进入编辑模式,只需你按一个键即可(i、I、a、A、o、O、r、R)。当进入编辑模式时,会在屏幕的最下一行出现“INSERT或REPLACE”的字样。从编辑模式回到一般模式只需要按一下键盘左上方的ESC键即可。

    image

  • 在一般模式下,输入 ”:” 或者 “/” 即可进入命令模式。在该模式下,你可以搜索某个字符或者字符串,也可以保存、替换、退出、显示行号等等。

    image

简单的说,我们可以将这三个模式想成底下的图标来表示:

image

7.3 Vim 操作说明

7.3.1 Vim 光标移动

在一般模式下,我们可以移动光标的位置,操作方法如下:

按键说明
h 或 向左箭头键(←)光标向左移动一个字符
j 或 向下箭头键(↓)光标向下移动一个字符
k 或 向上箭头键(↑)光标向上移动一个字符
l 或 向右箭头键(→)光标向右移动一个字符
Ctrl + B屏幕『向上』移动一页
Ctrl + F屏幕『向下』移动一页
Ctrl + D屏幕『向下』移动半页
Ctrl + U屏幕『向上』移动半页
+光标移动到非空格符的下一行
-光标移动到非空格符的上一行
数字0或者 Shift+6移动到本行行首
Shift+4移动到本行行尾
H光标移动到当前屏幕的最顶行
M光标移动到当前屏幕的中央那一行
L光标移动到当前屏幕的最底行
gg移动到首行
G移动到尾行
nGn 为数字,移动到n行。例如:20G 则会移动到第 20 行
n 回车光标向下移动n行
w将光标移动到下一个单词的开头
e将光标移动到当前单词的末尾
b将光标移动到上一个单词的开头

7.3.2 Vim 剪切复制粘贴

在一般模式下,我们还可以实现字符或者字符串的复制、删除、粘贴等操作,如下表所示:

按键说明
x、Xx 为向后删除一个字符, X 为向前删除一个字符
nxn 为数字,连续向后删除 n 个字符。例如:10x则是连续删除 10 个字符
dd删除光标所在的那一整行
nddn 为数字。删除光标所在的向下 n 行,例如:20dd 则是删除 20 行
d1G删除光标所在到第一行的所有数据
dG删除光标所在到最后一行的所有数据
d0那个是数字的 0 ,删除光标标所在处,到该行的最前面一个字符
yy复制光标所在的那一行
nyyn 为数字。复制光标所在的向下 n 行,例如:20yy 则是复制 20 行
y1G复制光标所在行到第一行的所有数据
yG那个是数字的 0 ,复制光标所在行到最后一行的所有数据
y0复制光标所在的那个字符到该行行首的所有数据
p从光标所在行开始,向下粘贴已复制的数据
P从光标所在行开始,向上粘贴已复制的数据
u还原上一步操作
v按v后移动光标会选中指定字符,然后可以实现复制、粘贴等操作

7.3.3 Vim 查找与替换

按键说明
/word向光标之后查找字符串 word,按 n 向后继续搜索
?word向光标之前查找字符串 word,按 n 向前继续搜索
n这个 n 是英文按键,代表重复前一个搜寻的动作
N这个 N 是英文按键,与 n 刚好相反,为『反向』进行前一个搜寻动作
😒/old/new用new替换当前行第一个old
😒/old/new/g用new替换当前行所有的old
:%s/old/new/g用new替换文件中所有的old

7.3.4 Vim 文本插入

按键说明
i在当前字符前插入
I在光标所在行的行首插入
a在当前字符后插入
A在光标所在行的行尾插入
o在当前行的下一行插入新的一行
O在当前行的上一行插入新的一行

7.3.5 命令模式

按键说明
:w将编辑的数据保存
:w!强制保存。在root用户下,即使文件只读也可以保存。
:q退出
:q!强制退出,所有改动不生效
:wq保存并退出
:wq!强制保存并退出
:set number显示行号,执行之后,会在每一行的前缀显示该行的行号
:set nonu与 set nu 相反,为取消行号!

7.3.6 Vim 排版与检查

按键说明
<<向左缩进
>>向右缩进
gq对选中的文字重排,即对过长的文字进行断行
gqq重排当前行
:set spell开启拼写检查功能,突出显示拼写错误的单词
:set nospell关闭拼写检查功能

7.4 附录

7.4.1 Vim优化配置

安装完成后开始配置vim,使用 vim /etc/vimrc 打开文件后,按 i 进入编辑模式,然后找一个位置添加如下代码。

" 通用设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set number          	" 设置显示行号
set showmode    		" 设置在命令行界面最下面显示当前模式等
set nocompatible		" 不要vim模仿vi模式
set ruler       		" 在右下角显示光标所在的行数等信息
set laststatus=2    	" 总是显示状态栏
set cursorline 			" 高亮显示当前行

" 代码缩进和排版
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set autoindent  		" 每次单击Enter键后,光标移动到下一行时与上一行的起始字符对齐,自动缩进
set tabstop=4 			" 配置TAB键移动距离为4个空格
set nowrap              " 禁止折行

" 编码设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set langmenu=zh_CN.UTF-8
set helplang=cn
set termencoding=utf-8
set encoding=utf8
set fileencodings=utf8,ucs-bom,gbk,cp936,gb2312,gb18030

syntax on       		" 即设置语法检测,当编辑C或者Shell脚本时,关键字会用特殊颜色显示

7.4.2 在线安装 Vim

众多 Linux 发行版系统,通常都已经默认安装好了 vi 或 Vim 文本编辑器,Centos 也不例外,该系统就默认安装有 vi 文本编辑器,但建议大家使用 Vim。

  1. 查看一下CentOS 系统已经存在的包,确认一下Vim 是否已经安装

    rpm -qa|grep vim
    
  2. 若是vim已经正确安装,则会显示下面几个包的名称:vim-filesystem、vim-minimal、im-common、vim-enhanced、vim-X11,如果缺少了其中某个,则使用如下命令安装所有vim包。

    yum install -y vim*
    

7.4.3 离线安装 Vim

  1. 离线下载Vim及其所有依赖包

    yum -y install vim --downloadonly --downloaddir ./
    
  2. 一次性安装所有依赖

    rpm -ivh *.rpm
    

7.4.4 Centos8 安装Vim8.2

# 卸载原来的版本
[root@localhost ~]# yum remove vim-*

# 下载vim8.2文件
[root@localhost ~]# wget https://ftp.nluug.nl/pub/vim/unix/vim-8.2.tar.bz2
# 解压下载的文件
[root@localhost ~]# tar -jxvf vim-8.2.tar.bz2
[root@localhost ~]# ls
vim82  vim-8.2.tar.bz2
[root@localhost ~]# cd vim82/src
[root@localhost src]# ./configure
# 在配置过程(检查依赖关系)可能会碰到下面的问题:
no terminal library found
checking for tgetent()… configure: error: NOT FOUND!
You need to install a terminal library; for example ncurses.
Or specify the name of the library with –with-tlib.
[root@localhost src]# yum install ncurses ncurses-devel
# 编译
[root@localhost src]# make
# 安装
[root@localhost src]# make install
# 提示错误
[root@localhost ~]# vim
-bash: /usr/bin/vim: No such file or directory
[root@localhost ~]# which vim
/usr/local/bin/vim
# 创建软链接
[root@localhost ~]# ln -s /usr/local/bin/vim /usr/bin/vim
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独泪了无痕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值