zoukankan      html  css  js  c++  java
  • 【linux相识相知】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:向下一个字符

    当然也可以是键盘的上下左右箭头

    可以结合数字加COMMAND,例如按 " 2  h " 光标向左移动2个字符

     单词间跳转

    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教程

    [root@localhost ~]# vimtutor
  • 相关阅读:
    画出直线,找出直线经过的图像坐标
    MFC 对话框图片上,鼠标拖动画矩形框
    MFC知识点整理
    mfc +opencv 读取图片显示到对话框
    python 获取系统时间,新建时间目录
    在Ubuntu下后台持续运行Python程序
    利用conda安装tensorflow
    整理的最全 python常见面试题(基本必考)
    转:Django框架基础知识(面试题)
    shell 获取变量是什么数据类型
  • 原文地址:https://www.cnblogs.com/liubinsh/p/7225171.html
Copyright © 2011-2022 走看看