zoukankan      html  css  js  c++  java
  • vim使用基础

    vi/vim编辑器使用

    前言

    There is an old joke about a visitor to New York City asking a passerby for directions to the city’s famous classical

    music venue:

    Visitor: Excuse me, how do I get to Carnegie Hall?
    Passerby: Practice, practice, practice!

    译文:有⼀个古⽼的笑话,说是⼀个在纽约的游客向⾏⼈打听这座城市中著名古典⾳乐场馆的⽅向:
    游客: 请问⼀下,我怎样去卡内基⾳乐⼤厅?
    ⾏⼈: 练习,练习,练习!

    学习 Linux 命令⾏,就像要成为⼀名造诣很深的钢琴家⼀样,它不是我们⼀下午就能学会的技能。这需要 经历⼏年的勤苦练习。在这⼀章中,我们将介绍 vi(发⾳“vee eye”)⽂本编辑器,它是 Unix 传统中核⼼程序之⼀。 vi 因它难⽤的⽤户界⾯⽽有点声名狼藉,但是当我们看到⼀位⼤师坐在钢琴前开始演奏时,我们的确成了 伟⼤艺术的⻅证⼈。虽然我们在这⾥不能成为 vi ⼤师,但是当我们学完这⼀章后, 我们会知道怎样在 vi 中弹奏像“Chopsticks”那样的钢琴⼩品。

    首先我们在terminal输入vi或者vim进入编辑器,此时可以看到如图界面:

    接着,我们按照提示按下键盘上的F1进入帮助界面:

    emmm,看不懂,算了,本博文放弃!!!

             
             
             
             
             

             
             
             
             
             
             
             
             
             
             

             
             
             
             
             

    哈哈,开个玩笑,学习还是要继续的,下面跟着我的步伐一起探究一下vim的强大吧!


    新手上路

    虽然vim的帮助文档看起来很高大上(看不懂)的样子,但是我们同样也可以发现一个问题,vim支持

    高亮!

    高亮!

    高亮!

    嗯,没错,vim凭借着优秀的显示效果以及可拓展性获得了广泛程序员的青睐,对于部分编程语言来说,抛弃耗存较大的ide,采用vim也是不错的选择。那么今天,我们一起来谈论一下vim的基本使用方法。

    • vim filename可以打开浏览并编辑文件

      若打开的文件不存在,则会看到:

      "not.txt" [New File]
      

      其中的"not.txt"即为我所打开的 文件,因为并不存在此文件,所以会显示[new file]字样,若编辑输入文字后保存,则会看到:

      "not.txt" [New] 4L, 36C written  
      

      此时代表你的文字已写入文件,退出后将会在本目录下看到not.txt文件

      那么问题来了,你说的倒是简单,可是我一个新手你让我如何保存、退出啊!!!

    哈哈,不要着急,这个环节咱们接下来会说


    初窥门径

    在这个环节,我们将一起讨论vim的三大模式,以及各种模式下的操作

    1. 命令模式
    2. 编辑模式
    3. 底线命令模式(底行模式)

    通过图示我们可以很清晰的看出,vim的三种模式之间的切换,当使用vim打开文件时,默认处于命令模式,此时我们可以使用命令快速定位、查找到我们想要的内容区域,通过iao命令进入编辑模式,从而对文本进行编辑修改,当确认无误后,按ESC键退回命令模式,并使用进入底行模式,对修改的文件进行保存退出。

    接下来,我们一起探讨一下三种模式的相关操作:

    1. 命令模式

    在命令模式下可以控制光标的移动,对文本进行复制粘贴、删除、查找

    控制光标:

    按键 说明
    l或右箭头 向右移动一个字符
    h或左箭头 向左移动一个字符
    j或下箭头 向下移动⼀⾏
    k或上箭头 向上移动⼀⾏
    0 (零按键) 移动到当前⾏的⾏⾸
    ^ 移动到当前⾏的第⼀个⾮空字符
    $ 移动到当前⾏的末尾

    gg:移动光标到顶部

    G:移动光标到底部

    复制:先使用命令v,后移动光标选择文本域,选中后使用yxd可分别进行复制、剪切、删除操作,p可对复制/剪切的数据进行粘贴,注意粘贴的位置从当前光标所在位置开始

    查找:在命令模式下使用/str或者?str(str为预查找的连续字符串,如使用/小姐姐,会匹配到所有小姐姐相关部分)来分别进行从上至下、从下至上查找,匹配文本会被高亮显示,此时使用nN命令可以分别执行向下向上查询

    删除:dd命令可以删除光标当前行,先输入一个数字后再使用dd命令可以删除向下删除输入数字的行数

    u:撤销

    ctrl + z:撤销 撤销操作

    下面我们来看一个ndd(n代表输入的数字,dd即敲击两次d键)删除操作的实例:

    假设我有一个文件并已写如入以下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    ~                                                                                                         ~                                                                            
    
    

    若此时光标在首行,此时处于命令模式,则当我输入数字3后再输入dd命令后:

    4
    5
    6
    7
    8
    ~                                                                                                         ~                                                                            
    
    

    2. 编辑模式

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

    3. 底行模式

    博主第一次使用vim编辑器的时,辛辛苦苦将文本修改成想要的内容时,却发现不知道怎么保存!!!

    底行模式下的常用参数

    :w 将编辑的数据写入文件中(常用)
    :w! 若文件属性为(只读)时,强制写入该文件。不过,到底能不能写入, 还是跟你对该文件的文件权限有关啊!
    :q 退出 vim
    :q! 若曾修改过文件,又不想保存,使用强制离开不保存文件。
    :set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
    :set nonu 与 set nu 相反,为取消行号
    :noh 取消查找文本的高亮

    vim中的替换操作

    :1,3 s/aa/cc 替换1至3行之间的aa,替换成cc
    :s/aa/cc     替换当前光标所在行的aa,替换成cc
    :%s/aa/cc    替换全局每一行出现的第一个匹配字符串,aa替换成cc
    :s/aa/cc/g   替换当前行出现的所有含aa的,替换成cc
    

    牛刀小试

    任务目标,使用vim创建一个名为demo.txt的文件,并向其写入:

    小哥哥
    小姐姐
    按G进入坦克
    乔碧罗
    

    操作:

    1.使用查找命令定位到小姐姐,定位到之后取消文本的高亮

    • /小姐姐

    • /noh

    2.在命令模式下使用相关命令删除最后一行内容

    • 在命令模式下使用G命令定位到文档底部
    • 使用dd命令删除光标当前行

    3.使用替换命令将文件中的G*替换成F,将小姐姐替换成如花**(光标移到起始位置)

    • :%s/小G/F
    • :%s/小姐姐/如花:%s/小姐姐/如花/g

    注意此步操作,光标处于起始位置,所以我们的替换要工作在全局操作下

    操作完成后:

    小哥哥
    如花
    按F进入坦克
    

    渐入佳境

    技术的学习需要大量的实践和练习,熟能生巧,只有经常使用才能掌握其用法,本博文仅介绍部分基础使用方法,vim的底蕴远不止如此,博主也会在今后的学习中慢慢积累、学习,大家一起努力、加油!

    本文部分参考:菜鸟教程

  • 相关阅读:
    android 11中报new Handler()已过时
    My WelcomeApplet
    设计模式(五):抽象工厂方法(多个工厂方法的组合)
    [Redis知识体系] 一文全面总结Redis知识体系
    RocketMq的事务消息发送方法,消息零丢失的实现方式,代码流程讲解,干货分享
    充血枚举的用法
    Rocketmq的启动jvm配置解析-runbroker.sh
    springboot+mybatis整合,基本框架
    rabbitmq单机入门安装教程(ubuntu环境 亲测有效)
    常用表单验证插件
  • 原文地址:https://www.cnblogs.com/xbroad/p/11290279.html
Copyright © 2011-2022 走看看