• 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脚本时,关键字会用特殊颜色显示
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    7.4.2 在线安装 Vim

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

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

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

      yum install -y vim*
      
      • 1

    7.4.3 离线安装 Vim

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

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

      rpm -ivh *.rpm
      
      • 1

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
  • 相关阅读:
    Docker 存储卷
    MySQL事务详解
    带你玩转序列模型之NLP与词嵌入(二)
    华为云Astro的前世今生:用7年时间革新低代码开发观念
    django特殊文件管理之Static和Media异同之处
    DVWA靶场环境搭建
    stash —— 一个极度实用的Git操作
    Python开发运维:PyMongo 连接操作 MongoDB
    1.2 Hadoop简介-hadoop-最全最完整的保姆级的java大数据学习资料
    [ElasticSearch]-初识Elastic Stack
  • 原文地址:https://blog.csdn.net/duleilewuhen/article/details/126574621