zoukankan      html  css  js  c++  java
  • 小白学习Vi/Vim编辑器安装及使用总结

    Table of Contents

    1.vi/vim是什么?  2.vim模式有哪些?如何切换?   3.使用vim如何打开文件?  4.关闭文件   5.移动光标     6.翻屏:   7.删除  8.粘贴命令: p   9.复制命令:y   10.修改c:先删除内容,在转换为输入模式    11.替换:r    12.撤销编辑操作:u(undo) 13.重复前一次编辑操作.     14.可视化模式:   15.查找:   16.查找并替换       17.vim打开多个文件      18.分屏显示一个文件     19.分窗口编辑多个文件     20.将当前文件中部分内容保存为另外一个文件    21.将另一个文件的内容填充在当前文件中(r表示读)     22.跟shell交互(vim 末行模式执行shell)   23.高级话题      24.vim配置文件


    使用Linux系统肯定不是冲着UI去的。肯定得使用终端命令行模式,但是怎么使用Terminal编辑文本呢?可以使用vi,现在大多数使用Vim,Vi之于Linux/Unix就像记事本之于Windows一样(这句话也不是很严谨),就像争论哪个编程语言是世界上最好的一样,有人认为Vim is the best text editor known to human kind,参考另一篇英文vim教程,写的不错《Learn Vim Progressively》。

    Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

    简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。

    1、使用Ctrl+Alt+T快捷键进入Terminal之后,在命令行中输入vim,如果未安装会得到下面的提示:

    Command 'vim' not found, but can be installed with:

    sudo apt install vim       
    sudo apt install vim-gtk3  
    sudo apt install vim-tiny  
    sudo apt install vim-athena
    sudo apt install vim-gtk   
    sudo apt install vim-nox   
    sudo apt install neovim   

    意思就是vim命令无法识别,但是可以安装vim或vim-gtk3等编辑器来使用vim。

    到这里就有疑惑了,除了vim了解一点外,其他的都是什么鬼,和vim有啥关系?

    这里以neovim为例说一下:

    NeoVim 项目地址: GitHub - neovim/neovim

    Vim 原项目地址: GitHub - vim/vim

    巴西程序员 Thiago de Arruda Padilha(aka tarruda)向 Vim开源编辑器项目递交了两大补丁,对Vim的架构进行了大幅调整,结果遭到了Vim作者Bram Moolenaar的拒绝,因为对于Vim这样一个成熟的项目进行如此大的改变风险太高。于是tarruda发起了Vim fork项目Neovim,集资1万美元打造出21世纪的编辑器,提供更好的脚本、插件支持,整合现代的图形界面。

    Bram Moolenaar 在写 Vim 时还是 90 年代初,至今已经 20 多年 过去了。其中,不仅包含了大量的遗留代码,而且程序的维护、Bug 的 修复、以及新特性的添加都变得越来越困难。为了解决这些问题,Neovim 项目应运而生。Neo 即“新”之意,它是 Vim 在这个新时代的重生。

    到这里差不多就明白他们的联系了。vim是终端下的vim,vim-gnome是用了GNOME GUI的vim,vim-tiny是tiny 版本的vim,就是功能比较少,但是体积小,速度快。

    这里我们可以按照提示输入 sudo apt-get install vim 安装vim。如果出现无法安装vim,可以先更新一下源:$ sudo apt-get update,然后再安装。如果还不行,见Ubuntu无法安装vim:

    2.安装完成后,输入vim会进入vim的标准模式,这时按键盘的i进入插入模式,在里面写点什么吧。

    3.按Esc推出插入模式,进入标准模式,在这个模式下有几个基本命令要掌握。

    • :wq 保存推出
    • i 进入插入模式
    • x 删除当前光标的字符
    • dd 删除当前行,并且保存当前行到剪切板
    • p 粘贴
    • :help <command> 查看命令的帮助
    • 上下左右移动光标

    4.     输入  :w filename  保存文件到当前目录。这里如果filename和之前不一样的话可以算是vim对文件的一个重命名,例如 :w test.c。就会将内容保存到test.c文件中。

    5.     :q  退出vim页面。

    6.下次在该目录下输入  vim filename 就可以编辑或者查看这个文件了。如果没有filename就会创建一个。

    如果是想要编写C语言代码,可能还需要以下基本命令:

    1. 打开文件夹:
         $ cd 路径
    2. 用vi/vim/gedit打开文件:
         $ vi 文件名
    3. 进入root权限:
         $ su
    4. 使用管理权限做某事(用gedit打开文件):
         $ sudo gedit sys.h
    5. 拷贝文件
         $ cp 被拷贝文件 目标地址
    6. 用gcc编译c文件:
         $ gcc 文件名 ­o 文件名(不带有.c)
    7. 执行编译好的目标文件:
         $ ./文件名
    8. 为了使make命令执行并行处理,­ j 选项可以用来指定作业数,如果你的电脑是多核
    cpu,j后面的数字最大可以是 核数*2,说白了就是硬件砸得越多,速度越快。
         $ make ­j4

    初次学习这样就差不多了,其他指令边使用边学习。

    最后补充一下博客园沐浴梓狼博主的博客(写的非常好):


    vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器。他是我们使用Linux系统不能缺少的工具。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,学会它后,您将在Linux的世界里畅行无阻。
    vim 具有程序编辑的能力,可以以字体颜色辨别语法的正确性,方便程序设计;
    因为程序简单,编辑速度相当快速。
    vim可以当作vi的升级版本,他可以用多种颜色的方式来显示一些特殊的信息。
    vim会依据文件扩展名或者是文件内的开头信息, 判断该文件的内容而自动的执行该程序的语法判断式,再以颜色来显示程序代码与一般信息。
    vim里面加入了很多额外的功能,例如支持正则表达式的搜索、多文件编辑、块复制等等。 这对于我们在Linux上进行一些配置文件的修改工作时是很棒的功能。

    1.vi/vim是什么?  

      ①vi是Visual Interface的缩写,即 可视化接口

      ②vim是vi iMprove的缩写,即 vi的增强版(具有语法着色功能)

    2.vim模式有哪些?如何切换?

      ①三种模式

       命令模式(默认):刚进入vim的时候,默认就是 命令模式,可以复制行,删除行等。
       输入模式:可以输入内容。
       末行模式:在最下边,除编辑模式,可以输入诸多管理员命令

      ②模式转换

       命令模式→输入模式:
         i:在当前光标所在字符的前面,转为输入模式
         I:在当前光标所在行的行首转换为输入模式
         a:在当前光标所在字符的后面,转为输入模式
         A:在光标所在行的行尾,转换为输入模式
         o:在当前光标所在行的下方,新建一行,并转为输入模式
         O:在当前光标所在行的上方,新建一行,并转为输入模式
         s:删除光标所在字符
         r:替换光标处字符
       输入模式→命令模式
         ESC键
       命令模式→末行模式
         输入:即可 转为末行模式
    
                在末行模式下
           10d:可删除第10行
             10,20d:删除10-20行
              set nu:显示行号
              !命令:可以执行bash命令
       末行模式→命令模式
         ESC键    

    3.使用vim如何打开文件?

      ① vim /path/to/somefile :vim后跟文件路径及文件名 ,如果文件存在,则打开编辑文件窗口,如果文件不存在,则创建文件

          [root@libaoliang ~]# vim /etc/inittab  

       ② vim + # :打开文件,并定位到第#行,#代表数字

         [root@libaoliang ~]# vim +3 /etc/inittab  

      ③ vim + :打开文件,定位到最后一行

          [root@libaoliang ~]# vim + /etc/inittab  

      ④ vim +/PATTERN:打开文件,定位到第一次被PATTERN匹配到的行的行首

         [root@libaoliang ~]# vim +/start /etc/inittab 

     4.关闭文件

      末行模式下: 

       w:保存
       q:退出
       wq 或 x:保存退出,wq 和 x 都是保存退出
       q!:强制退出
       w!:强制保存,管理员才有权限

      命令模式下:

       ZZ:保存并退出

    5.移动光标

    命令模式下:

       ①逐字符移动
         h:向左
         l:向右
         j:向下
         k:向上
         #h:移动#个字符
       ②以单词为单位移动
         w:移到下一个单词的词首
         e:跳至当前或下一个单词的词尾
         b:跳至当前或上一个单词的词首
         #w:表示移动#个单词
       ③行内跳转
         0:绝对行首
         ^:行首第一个非空白字符
         $:绝对行尾
       ④行间跳转
         #G:跳转到第#行
         G:最后一行

      末行模式下:

       ①行间跳转
          直接输入行号 回车即可

    6.翻屏

      命令模式下
        Ctrl+f:向下翻一屏
        Ctrl+b:向上翻一屏
    
        Ctrl+d:向下翻半屏
        Ctrl+u:向上翻半屏 

    7.删除

      命令模式下

        ①删除单个字符:
          x:删除光标所在处单个字符
          #x:删除光标所在处及向后共#个字符
        ②删除命令:d
          d命令跟 跳转命令组合使用 如:dw 表示删除光标所在位置到下一个单词词首所有字符
          #dw,#de,#db :#dw表示 删除当前光标所在处及向后第#个单词词首所有字符 
          dd:删除当前光标所在行
          #dd:删除包含当前光标所在行内的#行

      末行模式下:

          末行模式下 位置符号
            StartADD,EndADDd
              .:表示当前行
              $:最后一行
              +#:向下的#行
              $-#:向上的#行
          末行模式下,删除命令d可以跟以上 位置符号 相结合使用   
         StartADD,EndADDd:删除StartADD到EndADDd位置的所有行,例如:10,15d:删除10到15行所有内容
         .d:删除光标所在行,同dd 

    8.粘贴命令: p

      p(小写p):如果删除的或复制的为整行内容,则粘贴到光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面
      P(大写P):如果删除的或复制的为整行内容,则粘贴到光标所在行的上方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面

    9.复制命令:y

     用法同d命令  
      命令模式
        yy:复制当前行
        yw (y#w,ye,y#e,yb,y#b):复制光标当前位置到下个单词词首内容.#代表数字
        y#G:复制当前位置当#行处的所有内容
    
      末行模式
        StartADD,EndADDy:复制StartADD到EndADDd位置的所有行,例如:10,15d:复制10到15行所有内容
        +3y:复制当前位置向下3行

    10.修改c:先删除内容,在转换为输入模式

       c:用法同d

    11.替换:r

      r:单字符替换,会替换光标选中字符
      R:替换模式,可以做字符替换。

    12.撤销编辑操作:u(undo) 

      u:撤销前一次编辑操作
      #u:直接撤销#次操作
      Ctrl+r:撤销最近一次撤销操作

    13.重复前一次编辑操作.

      .:比如 上一次dd删除了一行,现在输入.就可以重复dd删除行的操作

    14.可视化模式:

      命令模式: 
        v:按字符选取,键盘控制光标 划过 的区域被选取
         V:按矩形选取,键盘控制光标划过的行被选取

    15.查找

      末行模式: 
        /PATTERN:从当前位置向后查找
        ?PATTERN:从当前位置向前查找
        n:向下查找
        N:向上查找

    16.查找并替换

      在末行模式下使用s命令
        ADDR1,ADDR2s/PATTERN/String/gi
        ADDR1,ADDR2 表示地址;比如1,$表示全文 (%也表示全文)
        g:表示全局替换
        i:表示忽略大小写

     17.vim打开多个文件

    vim FILE1 FILE2 FILE3
     末行模式下
      :next 切换到下一个文件
      :prev 切换到上一个文件
      :last 切换到最后一个文件
      :first 切换到第一个文件
    退出多个文件
      qa:全部退出

    18.分屏显示一个文件

    vim打开文件后
      Ctrl+w,s:水平拆分窗口
      Ctrl+w,v:垂直拆分窗口
    在窗口间切换光标
         Ctrl+w,ARROW  
      比如 Ctrl+w,→:(使用箭头方向键)光标切换到右边的窗口
      比如 Ctrl+w,h(左), j(下), k(上), l(右) 也可以切换窗口
    在末行模式下
        :qa退出所有窗口

    19.分窗口编辑多个文件

    vim -o:水平分割显示
    vim -O:垂直分割显示
    例如:vim -o /etc/rc.sysinit /etc/inittab  :水平分割显示/etc/rc.sysinit和/etc/inittab 这2个文件

    20.将当前文件中部分内容保存为另外一个文件

    末行模式下
        w:表示保存当前文件
        w /path/to/somewhere:将当前文件另存为到路径指定的地方
        ADDR1,ADDR2w /path/to/somewhere:将ADDR1到ADDR2指定的地址文本 另存为到路径指定的地方

    21.将另一个文件的内容填充在当前文件中(r表示读)

    末行模式下
       r: /path/to/somefile
    例如:vim /etc/rc.sysinit 打开文件后,末行模式 输入 :r /etc/inittab :会将 inittab文件的所有内容附加到rc.sysinit文件光标所在的位置

    22.跟shell交互(vim 末行模式执行shell)

    末行模式
    ! command即可
    例如: ! ls /etc/:会列出/ect目录下所有文件及目录 按enter后回到vim编辑状态

    23.高级话题

    在末行模式下
    ①显示或取消行号
            set nu(set number):显示行号
            set nonu:取消显示行号
    ②显示忽略或区分字符大小写
            set ic (set ignorecase):忽略大小写
            set noignorecase:区分大小写
    ③设定自动缩进
           set ai(set autoindent):自动缩进
            set noai:取消自动缩进
    ④查找到的文本高亮或取消高亮显示
        set hlsearch:高亮显示搜索到的文本
        set nohlsearch:取消高亮显示搜索到的文本
    ⑤语法高亮
        syntax on:打开语法高亮显示
        syntax off:关闭语法高亮显示

    24.vim配置文件

    全局vim配置文件:/etc/vimrc
    个人vim配置文件:~/.vimrc
    [root@libaoliang ~]# echo "set nu" >> /root/.vimrc  # root用户用vim打开文件时,显示行号。

    输入以下命令修改配置文件

    sudo vim /etc/vim/vimrc

    syntax on就是语法高亮,如果你的是off请改成on。
    另外把光标移到文件末尾,输入以下配置(根据自己需要选择)

    colorscheme desert
    " 设置配色为沙漠
    " 其他可选: torte, solarized, molokai, phd, ron, evening等
    set mouse=a " 设置可用鼠标点击移动光标
    set nu " 显示行号
    set nobackup " 覆盖文件时不备份
    set autowrite " 自动保存
    set cursorline " 高亮显示当前行
    set tabstop=4 " 设置tab长度为4个空格
    set softtabstop=4 " 设置软tab长度为4个空格
    set shiftwidth=4 " 设置缩进为4个空格
    set expandtab " 将tab替换为空格
    set autoindent " 设置自动缩进(对齐上一行)
    set smartindent " 设置智能缩进
    set cindent " 设置c语言的缩进方式
    set showmatch " 自动匹配
    set ruler " 在右下角显示当前行信息
    set incsearch " 搜索加强
    set hlsearch " 搜索高亮
    set ignorecase " 搜索忽略大小写
    set whichwrap=b,s,<,>,[,] " 光标从行首和行末时可以跳到另一行去
    set scrolloff=3 " 光标移动到上下两端时保持3行距离
    set history=1000 " 历史记录条数从20到1000
    

    最后:wq保存并退出。
    配置这段出自简书博主望月时生,链接:https://www.jianshu.com/p/aed2a485af96   著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    也可以参考菜鸟教程学习 http://www.runoob.com/linux/linux-vim.html

  • 相关阅读:
    jQuery 基本选择器
    JavaScriptif while for switch流程控制 JS函数 内置对象
    JavaScrip基本语法
    数据库 存储引擎 表的操作 数值类型 时间类型 字符串类型 枚举集合 约束
    数据库基础知识 管理员 用户登录授权的操作
    粘包的产生原理 以及如何解决粘包问题
    socket TCP DPT 网络编程
    2018年年终总结
    Android技术分享
    No accelerator found
  • 原文地址:https://www.cnblogs.com/www-helloworld-com/p/10202938.html
Copyright © 2011-2022 走看看