• 【Vim】模式的切换、常用命令总结


    参考总结自:
    https://blog.csdn.net/qq_39147299/article/details/108972206
    https://www.cnblogs.com/mabingxue/p/10281132.html
    https://zhidao.baidu.com/question/277761048.html

    使用vi 打开文件时,默认是命令行模式(普通),编辑模式、尾行模式的切换都需要经过命令行模式。
    在这里插入图片描述

    命令行模式

    默认打开文件是为命令行模式,从其他模式按一次或多次ESC返回到命令行模式。
    进入vi的命令

        vi filename :打开或新建文件,并将光标置于第一行首
        vi n filename :打开文件,并将光标置于第n行首
        vi /pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
        vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
        vi filename....filename :打开多个文件,依次进行编辑
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在命令模式下,从键盘上输入的任何字符都被当作编辑命令来解释,如果输入的字符是合法的vi命令,则vi就会完成相应的动作;否则vi会响铃警告。

    命令行模式光标移动

    H  J  K  L
    左 下 上  右
    
    • 1
    • 2

    命令行模式下的快捷命令

    • gg、G
      gg是回到第一行,G是回到最后一行,nG是去到指定的第n行。
      如果想要回到第20行,那就 " 20G "

    • dd 剪切(删除)光标所在行
      如果想要删除20行,那就 " 20dd "

    • d1G、dG
      d1G是删除当前行前面的所有数据,dG是删除当前行之后的全部数据

    • x、X
      x是删除下一个字符,X是删除上一个字符
      如果想删除10个字符,那就" 10x "

    • yy 复制光标所在行
      如果想要复制20行,那就 " 20yy "

    • y1G、yG
      y1G是复制当前行前面的所有数据,yG是复制当前行之后的全部数据

    • p、P p是粘贴到下一行,P是粘贴到上一行。3p就是重复粘贴三次。

    • u 撤销上一步操作,uuu撤销三步操作…

    • Ctrl+r 反撤销

    • w 光标移动到下一个单词首部(每个标点符号算一个单词)。w可以结合其他命令一起使用,如yw复制单词,dw、cw

    • e 光标移动到下一个单词尾部

    • b 光标回到上一次停留的单词处

    • dw 删除光标所在的一个单词

    • cw 改变一个单词

    • .(小数点) 重复上一个动作

    编辑模式

    从命令行进入编辑模式:

    • i, I (或insert键)
      i 为『在光标前的位置输入』, I 为『在光标所在行的最前输入』
    • a, A
      a 为『在光标后的位置输入』, A 为『在光标所在行的末尾输入』
    • o, O
      o 为『在光标所在行的下一行输入』; O 为『在光标所在行的上一行输入』
    • r, R 进入取代模式(或两次insert键)
      r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止
    • s
      从当前光标位置处开始,以输入的文本替代指定数目的字符

    从编辑模式回到命令行模式只需要一次ESC。

    尾行模式

    从命令行模式进入尾行模式需要按 shift+冒号/分号。可以使用命令保存、替换、退出、显示行号等等;
    也可以使用/ 进入尾行模式并搜索内容。

    尾行模式的操作命令:

    :w 将编辑过的文本保存
    :w! 强制保存
    :q 退出vim
    :q! 不保存退出。 (或直接命令行模式下的 ZQ)
    :wq 保存并退出 。(或直接命令行模式下的 ZZ)
    :w [filename] 文档另存为filename
    :r [filename] 在当前光标所在行的下面读入filename文档的内容

    :n1,n2 w [filename] 将n1到n2的内容另存为filename这个文档

    :e! 放弃所有修改,从上次保存文件开始再编辑

    :! [command] 暂时离开vim并运行某个linux命令

    :set nu 显示行号 (也可以在vim永久配置set number)
    :set relativenumber 显示相对行号
    :set nonu 取消显示行号

    :/搜索的文本 ,搜索到的内容会高亮显示
    :%s/要替换的字符/替换后的字符/g ,全局替换文本

    tips:
    实现将文件的最后一行删除,可以不经过编辑模式:全程在命令行模式下,按G去到最后一行,按dG是删除当前行以及之后行,按 ZZ保存并退出。

    在尾行模式执行完命令,或两次ESC就能回到命令行模式。

    视觉模式

    从命令行模式进入视觉模式
    命令行模式输入v、V、Ctrl+v 就进入视觉模式,同时移动光标(方向键或hjkl都可以)就能选中对应的区域

    • v 是光标起始和结束之间的文本会被选中
    • V 是光标起始和结束之间的所有行被选中
    • Ctrl+v 是光标起始和结束之间构成的矩形区域被选中

    选中的文本可以使用d删除。

    恢复文件:

    vi在编辑某一个文件时,会生成一个临时文件,这个文件以 . 开头并以 .swp结尾。正常退出该文件自动删除,如果意外退出例如忽然断电,该文件不会删除,我们在下次编辑时可以选择一下命令处理:

    O只读打开,不改变文件内容

    E继续编辑文件,不恢复.swp文件保存的内容

    R将恢复上次编辑以后未保存文件内容

    Q退出vi

    D删除.swp文件

    或者使用vi -r 文件名来恢复未保存的内容

  • 相关阅读:
    6.2 网络钓鱼攻击
    【algorithm】算法学习----堆
    Python----程序的基本结构、顺序结构、分支结构、循环结构
    nodejs+vue客户管理管理系统的设计与实现-微信小程序-安卓-python-PHP-计算机毕业设计
    一次搞定:借助Hutool封装代码快速解决webservice调用烦恼
    UML中用例和用例图的概念
    DocuWare 移动劳动力解决方案可帮助您构建新的生产力模式:随时随地、任何设备
    webpack 中 require.context() 的用法
    分布式计算框架Flink核心基石介绍
    二氧化硅纳米微球光子晶体乳液聚合聚苯乙烯核壳结构/中空二氧化硅/钛纳米微球的制备方法
  • 原文地址:https://blog.csdn.net/qq_45494908/article/details/126349030