首页 > 代码库 > 编辑器之神-VIM

编辑器之神-VIM

【基础拾遗】编辑器之神-VIM

技术分享技术分享
    提交
    我的留言
      技术分享加载中
      技术分享

      已留言

      在这天地间,流传这两大神器的故事:据说Emacs是神的编辑器,而Vim是编辑器之神。正所谓,工欲善其事,必先利其器。今天就和大家分享一下关于编辑器之神Vim的传说。


      一、Vim的历史

      1.下图是关于几款主流编辑器的学习曲线:(注:图片来自互联网)

      技术分享

      2.VIM - Vi IMproved

      3.上图中vi即是vim的前身

      • VI:Visual Interface

      4.VIM和VI是文本编辑器

      • 何为文本文件?
        • 文本文件一般指只有字符原生编码构成的二进制计算机文件,与富文本相比,其不包含字样样式的控制元素,能够被最简单的文本编辑器直接读取
      • 文本文件常见的格式?
        • ASCII、MIME、.txt、…
      • 那么,何为文本编辑器?
        • 文本编辑器是计算机软件中的一种。主要用于用来编写和查看文本文件。
      • 文本编辑器的种类:
        • 行编辑器:sed
        • 全屏编辑器:nano、vi、vim

      二、Vim编辑器的基本操作

      1. 基本操作

      1. VIM:模式化的编辑器

      2. 基本模式

        • 编辑模式 (命令模式)
        • 输入模式 (插入模式)
        • 末行模式 (vim内置的命令行接口)
        • Note:打开的时候默认的模式是编辑模式
      3. 打开文件

        • # vim [OPTION]... FILE...
        • +#:打开文件后,直接让光标处于第#行的行首
        • +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首;
      4. 模式转换

      • 模式转换:
        • 编辑模式 - - > 输入模式
          • iinsert,在光标所在处前面插入;
          • aappend,在光标所在处的后面插入;
          • oopen,在当前光标所在行的下一行打开新行,并转换为输入模式;
          • I:在当前光标所在行的行首输入;
          • A:在当前光标所在行的行尾输入;
          • O:在光标所在行的上一行打开一个新行,并转换为输入模式;
        • 输入模式 - - > 编辑模式
          • ESC
        • 编辑模式 - - > 末行模式
        • 末行模式 - - > 编辑模式
          • ESC
        • 关闭文件
          • :q:退出
          • :!:强制退出,丢弃做出的修改;
          • :wq:保存退出;
          • :x:保存退出;
          • :w /PATH/TO/SOMEWHERE:当前编辑的文本保存到别的文件;
          • ZZ:保存退出;
      • 图示说明如下: (转载请注明出处)

      技术分享

      2. 光标跳转:

      1. 字符间跳转:
        • h,j,k,l
          • h
          • l
          • k
          • j
        • #COMMAND:跳转由#指定的个数的字符;
      2. 单词间跳转:
        • w:跳转至下一个单词或后一个单词的词首
        • e:跳转至当前或下一个单词的词尾
        • b:跳转至当前或下一个单词的词首
        • #COMMAND:由#指定一次跳转的单词数;
      3. 行首行尾跳转:
        • ^:跳转至行首的第一个非空白字符;
        • 0:跳转至绝对的行首
        • $:跳转至绝对行尾
      4. 行间移动:
        • #G:跳转至由#指定行;
        • G:跳转至最后一行;
        • 1Ggg:跳转至第一行;
      5. 句间移动:
        • ):跳转至下一个句子;
        • (:跳转至上一个句子;
      6. 段落间移动:
        • }:跳转至下一段
        • {:跳转至上一段

      3. vim的编辑命令:

      1. 字符编辑:
        • x:删除光标处的单个字符;
        • #x:删除光标处起始的#个字符;
        • xp:交换光标所在处的字符及其后面字符的位置;
      2. 替换命令:
        • rreplace
        • r:替换光标所在处的字符;(单字符替换)
      3. 删除命令:
        • d:删除命令,可结合光标跳转字符,实现范围删除;
          • d$:删除至绝对行尾
          • d^:删除至行首的第一个非空白字符
          • d0:删除至绝对行首
        • dd:删除光标所在行;
          • #dd:向下删除#行;
      4. 粘贴命令:
        • p,put,paste)
        • p:缓冲区中存储的如果为整行内容,则粘贴至当前光标所在行的方;否则,则粘贴至当前光标所在处的面;
        • P:缓冲区中存储的如果为整行内容,则粘贴至当前光标所在行的方;否则,则粘贴至当前光标所在处的面;
      5. 复制命令:
        • yyank
        • y:复制,工作行行为相似于d命令;
          • y$:复制至绝对行尾
          • y0:复制至绝对行首
          • y^:复制至行首的第一个非空白字符
          • yy:复制整行
            • #yy:复制多行;
      6. 改变命令:
        • cchange
        • c:修改
          • 编辑模式 - -> 输入模式
        • cc:删除并输入新内容
        • #cc:一次删除#行

      三、其它编辑操作

      1.可视化模式

      • v:按字符选定
      • V:按行选定
      • Note:经常结合编辑命令;

      2. 撤销此前的编辑:

      • u(undo):撤销此前的操作;
        • #u:撤销指定次数的操作;
      • 撤销此前的撤销:
        • Ctrl+r
      • 重复前一个编辑操作:
        • .

      四、翻屏操作

      • Ctrl+f:向文件尾部翻一屏;
      • Ctrl+b:向文件首部翻一屏;

      • Ctrl+d:向文件尾部翻半屏;

      • Ctrl+u:向文件首部翻半屏;

      • vim自带的练习教程

        • vimtutor

      五、vim的末行模式

      • 内建的命令行接口
      • 特性
      • (1). 地址定界
        • :start_pos,end_pos
        • #:具体的第#行,例如:2表示第2行;
        • #,#:从左侧#表示起始,到右侧#表示结束;
        • #,+#:从左侧#表示的行开始,加上右侧#表示的行数;
        • .当前行;
        • $:最后一行;
        • %:全文;相当于(1,$)
        • /pat1/,/pat2/:表示从第一次被pat1匹配到的行开始,一直到pat2匹配到的行结束
        • 使用方式
          • 后跟一个编辑命令:
            • d:删除指定范围的内容
            • y:复制指定范围的内容
            • w /PATH/TO/SOMEWHERE:将范围内的行另存至指定文件中;
            • r /PATH/FROM/SOMEFILE:在指定位置插入指定文件中的所有内容;
      • (2). 查找
        • /PATTERN:从当前光标所在处向文件尾部查找
        • ?PATTERN:从当前光标所在处向文件首部查找
          • n:与命令同方向;
          • N:与命令反方向;
      • (3). 查找并替换

        • s:在末行模式下完成查找替换操作
          • s/要查找的内容/替换为的内容/修饰符
            • 要查找的内容:可使用模式;
            • 替换为的内容:不能使用模式,但可以使用\1, \2, …等后向引用符号;好可以使用"&"引用前面查找时查找到的整个内容;
            • 修饰符:
              • i:忽略大小写
              • g:全局替换;默认情况下,没一行只替换第一次出现的内容;
          • 查找替换中的分隔符/可替换为其它字符,例如:
            • s@@@
            • s###

        六、vim的文件模式

      1. 多文件模式
      • vim FILE1 FILE2 FILE3 …
        • :next 切换至下一个文本
        • :prev 切换至前一个文本
        • :first 切换至前一个文本
        • :last 切换至最后一个文本
        • :wall 保存所有
        • :qall 退出所有
      2. 窗口分隔模式
      • vim -o|-O FILE1 FILE2 …
        • -o:水平分割

        • 技术分享

        • -O:垂直分割

        • 技术分享

        • 在窗口间切换Ctrl+w,Arrow
      3. 单文件窗口分割:
      • Ctrl+w,s:split,水平分割
      • Ctrl+w,v:vertical,垂直分割
      4. 定制vim的工作特性:
      • 配置文件:(永久有效)
        • 全局/etc/vimrc
        • 个人~/.vimrc   (默认不存在,需要自己创建)
      • 末行:(当前vim进程有效)
      • (1) 行号
        • 显示set number,简写为:set nu
        • 取消显示set nonumber,简写为: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
      5. 书籍推荐:《Vim-handbook-cn-72》
      6. 获取帮助
      • 在末行模式下:help SUBJECT


      精选留言
        该文章作者已设置需关注才可以留言
        技术分享加载中
        以上留言由公众号筛选后显示
        技术分享

        微信扫一扫
        关注该公众号

        <link rel="stylesheet" type="text/css" href="http://www.mamicode.com/69763660-4b93-49de-b736-76ea8c5720b9_files/page_mp_article_improve_combo2d1390.css">

        来自为知笔记(Wiz)


        编辑器之神-VIM