zoukankan      html  css  js  c++  java
  • 编辑器之神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. 模式转换

    • 模式转换:

      • :q:退出

      • :!:强制退出,丢弃做出的修改;

      • :wq:保存退出;

      • :x:保存退出;

      • :w /PATH/TO/SOMEWHERE:当前编辑的文本保存到别的文件;

      • ZZ:保存退出;

      • ESC

      • ESC

      • iinsert,在光标所在处前面插入;

      • aappend,在光标所在处的后面插入;

      • oopen,在当前光标所在行的下一行打开新行,并转换为输入模式;

      • I:在当前光标所在行的行首输入;

      • A:在当前光标所在行的行尾输入;

      • O:在光标所在行的上一行打开一个新行,并转换为输入模式;

      • 编辑模式 – – > 输入模式

      • 输入模式 – – > 编辑模式

      • 编辑模式 – – > 末行模式

      • 末行模式 – – > 编辑模式

      • 关闭文件

    • 图示说明如下: (转载请注明出处)

    2. 光标跳转:

    1. 字符间跳转:

      • h

      • l

      • k

      • j

      • h,j,k,l

      • #COMMAND:跳转由#指定的个数的字符;

    2. 单词间跳转:

      • w:跳转至下一个单词或后一个单词的词首

      • e:跳转至当前或下一个单词的词尾

      • b:跳转至当前或下一个单词的词首

      • #COMMAND:由#指定一次跳转的单词数;

    3. 行首行尾跳转:

      • ^:跳转至行首的第一个非空白字符;

      • 0:跳转至绝对的行首

      • $:跳转至绝对行尾

    4. 行间移动:

      • #G:跳转至由#指定行;

      • G:跳转至最后一行;

      • 1Ggg:跳转至第一行;

    5. 句间移动:

      • ):跳转至下一个句子;

      • (:跳转至上一个句子;

    6. 段落间移动:

      • }:跳转至下一段

      • {:跳转至上一段

    3. vim的编辑命令:

    1. 字符编辑:

      • x:删除光标处的单个字符;

      • #x:删除光标处起始的#个字符;

      • xp:交换光标所在处的字符及其后面字符的位置;

    2. 替换命令:

      • rreplace

      • r:替换光标所在处的字符;(单字符替换)

    3. 删除命令:

      • #dd:向下删除#行;

      • d$:删除至绝对行尾

      • d^:删除至行首的第一个非空白字符

      • d0:删除至绝对行首

      • d:删除命令,可结合光标跳转字符,实现范围删除;

      • dd:删除光标所在行;

    4. 粘贴命令:

      • p,put,paste)

      • p:缓冲区中存储的如果为整行内容,则粘贴至当前光标所在行的方;否则,则粘贴至当前光标所在处的面;

      • P:缓冲区中存储的如果为整行内容,则粘贴至当前光标所在行的方;否则,则粘贴至当前光标所在处的面;

    5. 复制命令:

      • y$:复制至绝对行尾

      • y0:复制至绝对行首

      • y^:复制至行首的第一个非空白字符

      • yy:复制整行

      • #yy:复制多行;

      • yyank

      • y:复制,工作行行为相似于d命令;

    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). 地址定界

      • 后跟一个编辑命令:

      • d:删除指定范围的内容

      • y:复制指定范围的内容

      • w /PATH/TO/SOMEWHERE:将范围内的行另存至指定文件中;

      • r /PATH/FROM/SOMEFILE:在指定位置插入指定文件中的所有内容;

      • :start_pos,end_pos

      • #:具体的第#行,例如:2表示第2行;

      • #,#:从左侧#表示起始,到右侧#表示结束;

      • #,+#:从左侧#表示的行开始,加上右侧#表示的行数;

      • .当前行;

      • $:最后一行;

      • %:全文;相当于(1,$)

      • /pat1/,/pat2/:表示从第一次被pat1匹配到的行开始,一直到pat2匹配到的行结束

      • 使用方式

    • (2). 查找

      • n:与命令同方向;

      • N:与命令反方向;

      • /PATTERN:从当前光标所在处向文件尾部查找

      • ?PATTERN:从当前光标所在处向文件首部查找

    • (3). 查找并替换

      • s/要查找的内容/替换为的内容/修饰符

      • 查找替换中的分隔符/可替换为其它字符,例如:

      • i:忽略大小写

      • g:全局替换;默认情况下,没一行只替换第一次出现的内容;

      • 要查找的内容:可使用模式;

      • 替换为的内容:不能使用模式,但可以使用\1, \2, …等后向引用符号;好可以使用"&"引用前面查找时查找到的整个内容;

      • 修饰符:

      • s@@@

      • 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

  • 相关阅读:
    1月10日寻找“岭南九寨沟”韶关始兴深度水
    LR11录制脚本时无法弹出IE的解决方法
    robot selenium alert/confirm处置系统弹出框
    java+eclipse+selenium自动化
    测试用例水杯
    selenium IDE认识IDE面板
    angularJS学习笔记之——搭建学习环境
    使用Angularjs的ngcloak指令避免页面乱码
    angularjs的$on、$emit、$broadcast
    angularjs 的笔记
  • 原文地址:https://www.cnblogs.com/liangshaoye/p/5464762.html
Copyright © 2011-2022 走看看