• VIM 编辑器 -使用详解记录


    1.什么是 vim?

    Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。熟练掌握VIM的快捷键与功能使用,可以对我们的运维工作,Shell脚本编写提供更高的效率。

    vi/vim快捷键示意图 (初学可以打印出来贴显示器旁对着看,慢慢就全部记住了)

    2.vi/vim 的基本使用

    基键行为是依赖于vim的模式。基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)

    命令模式

    启动 vi/vim ,通过vim file 打开文件后,默认进入命令模式。命令模式通常可以移动光标,剪切/粘贴文本。此模式下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

    以下是常用的几个命令:

    *   **i** 切换到输入模式,以输入字符。
    *   I:移动光标到当前行行首,进行输入。
    *   a:在光标所在处后面进行输入
    *   A:移动光标到当前行行尾,在行尾进行输入
    *   o:在光标所在行下方创建一个新行。
    *   O:在光标所在行上方创建一个新行。
    *   **x** 删除当前光标所在处的字符。
    *   **:** 切换到**底线命令模式**,以在最底一行输入命令。
    

    若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

    输入模式

    在命令模式中按下** i **键,即进入的输入模式。在输入模式中可以使用以下按键。

    *   **字符按键以及Shift组合**:输入字符
    *   **ENTER**:回车键,换行
    *   **BACK SPACE:**退格键,删除光标前一个字符
    *   **DEL:**删除键,删除光标后一个字符
    *   **方向键**:在文本中移动光标
    *   **HOME**/**END**:移动光标到行首/行尾
    *   **Page Up**/**Page Down:**上/下翻页
    *   **Insert**:切换光标为输入/替换模式,光标将变成竖线/下划线
    *   **ESC**:退出输入模式,切换到命令模式
    

    底线命令模式

    在命令模式下按下:(英文冒号)就进入了底线命令模式。底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

    在底线命令模式中,基本的命令有(已经省略了冒号):

    *   q 退出程序
    *   q! 不存盘退出
    *   w 保存文件
    *   wq 保存并退出
    *   x 保存退出(不建议使用)
    *   r filename 读文件内容到当前文件中来
    *   w filename 将当前文件内容写入另一个文件中
    *   !com 执行命令
    *   r !com 读入命令的输出
    

    按ESC键可随时退出底线命令模式。

    3.VIM 三大模式的更多用法

    在命令模式中:

    快速移动光标
    *   逐字符移动
        *   h:向左
        *   l:向右
        *   j:向下
        *   k:向上
        *    # h:移动#个字符
    *   以单词为单位移动
        *   w:移到下一个单词的词首
        *   e:跳至当前或下一个单词的词尾
        *   b:跳至当前或上一个单词的词首
        *    #w:表示移动#个单词
    *   行内跳转
        *   0:跳转至绝对行首
        *   ^:跳转至行首第一个非空白字符
        *   $:跳转至绝对行尾
    *   行间跳转
        *    # G:跳转到第#行
        *   G:最后一行
        *   1G,gg:跳转至第一行
    *   句间移动
        *   ):跳转到下一句
        *   (:跳转到上一句
    *   段落间移动
        *   }:跳转到下一段
        *   {:跳转到上一段
    
    翻屏操作
    *   Ctrl+f: 向文件尾部翻一屏
    *   Ctrl+b: 向文件首部翻一屏
    *   Ctrl+d: 向文件尾部翻半屏
    *   Ctrl+u:向文件首部翻半屏
    
    字符编辑
    *   编辑字符
        *   x:删除光标处的字符
        *    # x:删除从光标处开始的#个字符
        *   xp:对调光标所在的字符及其后面字符的位置。(x是剪切,p是粘贴)
        *   ~:转换光标字符大小写
        *   J:删除当前行后的换行符,合并
    *   替换命令
        *   R:切换成替换模式
        *   r:替换光标所在处的字符
    *   删除命令
        *   d:删除命令,可结合选择进行范围删除
        *   d$:从光标位置开始,删除到行尾
        *   d^:从光标位置开始,删除到行首
        *   dw: 删除到词尾
        *   de: 删除单词,从光标位置到词尾
        *   db: 删除上一个单词
        *   dd:删除光标所在行
        *    #dd:删除#行(多行删除)
    *   复制命令
        *   y: 复制,行为相似于d命令
        *   y$:从光标处复制到行尾
        *   y0: 从光标处到行首第一个有字符的位置
        *   y^:从光标处到绝对行首
        *   ye: 复制单词
        *   yw
        *   yb
        *   yy:复制整行
        *    #yy:复制#行
    *   粘贴命令
        *   p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
        *   P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面
    *   改变命令 (使用改变命令,就是先修改光标选择的位置,然后自动改变为插入模式),用法参考删除命令和黏贴命令,改变命令的关键词为:c
        *   c$
        *   c^
        *   ……
    *   撤销命令
        *   u:撤销最近修改
        *    # u:撤销最近#次的修改
        *   U:撤销光标落在此行后所有的修改(**必须光标一直落在该行,如果光标移动到他行,再回来,缓存中会清空该行的撤销记录,无法撤销**)
        *   Ctrl +r 重做最后撤销掉的操作
        *   .重复前一次的操作
        *   n. 重复前一个操作N次
    
    命令连用模式
    100iddz [ESC] 粘贴“ddz” 100次
    <start position><command><end position>
    Command:
    y 复制、 d 删除、 gU 变大写、 gu 变小写
    例如 0y$ 命令意味着:
    0 → 先到行头
    y → 从这里开始拷贝
    $ → 拷贝到本行最后一个字符
    这时按p就可以拷贝这些数据
    

    在底线命令模式下:

    *   地址定界:匹配到指定的行 格式:start_pos,end_pos
        *   # : 跳转到具体第#行,例如2表示第2行
        *   #,# 从左侧#表示起始行,到右侧#表示结尾行
        *   #,+# 从左侧#表示的起始行,加上右侧#表示的行数。(例如2,+3 表示2到5行
            . 当前行
        *   $ 最后一行(.,$-1 从当前行到倒数第二行)
        *   % 全文, 相当于1,$
        *   /pat1/,/pat2/(pat1和pat2为正则表达式,代表 
            从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束。比如:  #,/pat/ , /pat/,$ , /^b/,/^l/d:删除以“b”开头到以“l”开头的行 )
            使用方式:后跟一个编辑命令
            d(删除):2,5d—删除第2到第5行
            y(复制):2,5y—复制第2到第5行
            w file: 将范围内的行另存至指定文件中
            r file:在指定位置插入指定文件中的所有内容
    *   查找命令
        *   /PATTERN:从当前光标所在处向文件尾部查找
        *   ?PATTERN:从当前光标所在处向文件首部查找
        *   n:与命令同方向
        *   N:与命令反方向
    *   查找并替换内容
        *   格式: s/要查找的内容/替换的内容/替换模式修饰符
        *   要查找的内容:可使用模式(可使用正则表达式匹配)
        *   替换为的内容:不能使用模式,但可以使用1, 2, …等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容
        *   修饰符
        *   i:忽略大小写
        *   g:全局替换(默认情况下每一行只替换第一次匹配到的)
        *   查找替换符中的分隔符/可替换为其他字符 :如 s#haha#hehe#g
    

    可视化模式

    *   允许选择的文本块
    *   v 面向字符
    *   V 面向行
    *   ctrl-v 面向块
    *   可视化键可用于与移动键结合使用:w ) } 箭头等,突出显示的文字可被删除,复制,变更,过滤,搜索,替换等 。
    

    4.文件配置 – 定制自己专属的VIM

    我们可以创建自己的配置文件,来配置VIM,让我们更便捷的进行文档编辑工作。配置文件需要放置在以下路径。

    *   全局:/etc/vimrc
    *   个人:~/.vimrc
    

    相关参数:

    *   行号
        *   显示:set number, 简写为set nu
        *   取消显示:set nonumber, 简写为set nonu
    *   忽略字符的大小写
        *   启用:set ic
        *   不忽略:set noic
    *   自动缩进
        *   启用:set ai
        *   禁用:set noai
    *   智能缩进
        *   启用:smartindent 简写 set si
        *   禁用:set nosi
    *   高亮搜索
        *   启用:set hlsearch
        *   禁用:set nohlsearch
    *   语法高亮
        *   启用:syntax on
        *   禁用:syntax off
    *   显示Tab和换行符 ^I 和$显示
        *   启用:set list
        *   禁用:set nolist
    *   文件格式
        *   启用windows格式:set fileformat=dos
        *   启用unix格式:set fileformat=unix
        *   简写: set ff=dos|unix
    *   设置文本宽度
        *   启用: set textwidth=65 (vim only)
        *   禁用: set wrapmargin=15
    *   设置光标所在行的标识线
        *   启用:set cursorline,简写cul
        *   禁用:set no cursorline
    *   复制保留格式
        *   启用: set paste
        *   禁用: set nopaste
    

    自定义VIM配置

  • 相关阅读:
    大话设计模式笔记 观察者模式
    nginx限速
    枚举实现的单例模式
    Nginx负载均衡
    插件lombok的介绍安装
    ThreadLocal类
    CopyOnWriteArrayList并发容器
    ConcurrentHashMap实现原理
    elasticsearch配置文件
    sql优化
  • 原文地址:https://www.cnblogs.com/ddz-linux/p/10463484.html
Copyright © 2020-2023  润新知