【Linux】编辑器之神vim使用教程

server/2025/1/15 0:50:11/

什么是Vim?

  Vim是从vi发展而来的文本编辑器,代码补全、编译以及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,下图为Vim的键盘图

在这里插入图片描述

Vim的使用

  基本上vi/vim共分为三种模式:命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)

  三种工作模式的切换方法如下:

在这里插入图片描述

命令模式

  当用户通过命令vim [FILENAME] <enter>进入vim或按下ESC时,便进入了命令模式,此状态下敲击键盘动作会被识别为命令,而非输入字符,以下是命令模式常用的几个命令

  • h:光标向左移动一个字符
  • j:光标向下移动一个字符
  • k:光标向上移动一个字符
  • l:光标向右移动一个字符
  • [num]+[command]:光标向目标方向移动num个字符
    • 30j是向下移动30行
    • 2w移动光标至此后第二个单词的首字母
    • 3e移动光标至此后第三个单词的结尾
    • 0移动光标至行首
  • x:删除当前光标所在处的字符
  • i:切换到输入模式,在光标之前开始输入文本
  • a:进入插入模式,在光标下一个位置开始输入文本
  • a:切换到输入模式,在当前光标下一个位置开始输入文本
  • d [num] motion:完成删除操作,其中[motion]包括以下几种模式
    • dw:删除当前单词光标所在位置到下一个单词的首字母前在这里插入图片描述

    • de:删除当前单词光标所在位置到空格前在这里插入图片描述

    • d$:删除当前光标所在处到该行的最后一个字符

    • dd:剪切当前光标所在行(无所谓光标位置)

  • u:撤销上一命令;U:将光标所在行恢复初始状态;CTRL-R:撤销上一次撤销
  • p:粘贴剪切板内容到光标下方;P:粘贴剪切板内容到光标上方
  • r[x]:用x取代光标所在字符;R[x]:一直处于取代模式,直到按下ESC为止
  • c [num] motion:完成取代操作,其中[motion]包括以下几种模式
    • cw:清除光标所在位置到下一个单词的首字母前并进入输入模式
    • ce:清除光标所在位置到单词结尾并进入输入模式
    • c$:清除光标所在处到该行最后一个字符并进入输入模式
    • cc:清除光标所在行并进入输入模式(无所谓光标在行内位置)
  • CTRL+g:会在底线输出当前光标所在行在这里插入图片描述
    G:移动到当前文本的最后一行,gg:移动到当前文本的第一行;[num]G:移动到当前文本的第[num]
  • 搜索替换:
    • /string:向光标之下寻找名称为string的字符串
    • ?string:向光标之上寻找名称为string的字符串;n向下搜索,N向上搜索
    • %:寻找与光标所在位置匹配的括号
    • :n1,n2s/word1/word2:在第n1与n2行之间寻找字符串word1,并将第一个取代为word2
    • :n1,n2s/word1/word2/g:在第n1与n2行之间寻找字符串word1,并将其全部取代为word2
    • :n1,n2s/word1/word2/gc:在第n1与n2行之间寻找字符串word1,并将其取代为word2,且在取代前显示提示字符给用户确认是否需要取代
    • :%s/word1/word2/g:1,$s/word1/word2/g:从第一行到最后一行进行替换
    • :set ic:忽略大小写匹配;:set noic:大小写匹配
    • :set hls is:匹配结果高亮;:set nohlsearch:取消匹配结果高亮
  • :![external command]:执行外部命令,按ENTER返回
  • v:保存当前文本中的部分内容。将光标移动至想要保存的内容的开始,按下v后,移动光标至保存内容的结尾,该部分文本会被高亮,按:,底线将出现:'<,'>,这时输入w FILENAMEvim将把该部分内容保存至当下目录下的文件FILENAME中
  • :r FILENAME:读取文件FILENAME中的内容并粘贴在当前光标之下;:r ![external command]:执行外部命令,并将返回的结果粘贴在当前光标之下
  • o:在当前行的下方插入一个新行,并进入插入模式;O:在当前行的上方插入一个新行,并进入插入模式
  • v进入选择模式,选择好目标内容后,按y进行复制,按p进行粘贴
  • :help:进入在线帮助系统;CTRL-W:页面之间的切换;:q:离开帮助页面;:help [command]:具体命令
输入模式

  在命令模式下按下i就进入了输入模式,使用ESC可以返回命令模式,此模式下即正常的键盘输入模式。

底线命令模式

  在命令模式下按下:(英文冒号)就可以进入底线命令模式,底线命令模式的基本命令有:

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

Vim实用技巧进阶(动态更新)

  在通过sudo apt-get install vim安装完成vim后,可以通过命令vimtutor命令打开vim的指导书,边看边练习

宏指令

用来对一组相似的行,段落甚至文件做重复的变更

  宏的执行有两种方式

  • 串行的在每个目标上执行
  • 并行的在多个目标上执行
宏录制

  录制语法 q{register}[commands]q

  • q开始录制
  • {register}表明寄存器的名称
  • [commands]一组操作命令(一系列的键盘按键)
  • q停止录制,最后把[commands]以文本形式存到前面的寄存器里面
  • :reg a查看寄存器a里的内容
  • :registers列出所有的寄存器
  • "<register>[commands]将文本复制到寄存器中
  • "<register>p从寄存器中粘贴文本
宏执行

  执行语法 @{register}@@ 可以重复最近一次的宏执行


http://www.ppmy.cn/server/158100.html

相关文章

一学就废|Python基础碎片,文件读写

文件处理是指通过编程接口对文件执行诸如创建、打开、读取、写入和关闭等操作的过程。它涉及管理程序与存储设备上的文件系统之间的数据流&#xff0c;确保数据得到安全高效的处理。 Python 中的文件模式 打开文件时&#xff0c;我们必须指定我们想要的模式&#xff0c;该模式…

Kotlin 协程基础十 —— 协作、互斥锁与共享变量

1、协程间的协作与等待 本节将介绍在协程间如果有先后执行、互相等待的需求时&#xff0c;应该怎样去处理这种等待和协作的工作。更会与 Java 的线程的协作工作对比&#xff0c;从而说明&#xff0c;在线程中通常不太简单的协作操作&#xff0c;在协程中很容易实现。 从运行角…

CPU缓存架构详解与Disruptor高性能内存队列实战

引言 现代计算机系统的性能很大程度上取决于CPU与内存之间的交互效率。随着处理器技术的发展&#xff0c;CPU的速度远超主内存&#xff0c;为了弥补这种速度差异&#xff0c;引入了多级高速缓存&#xff08;Cache&#xff09;。然而&#xff0c;在多核环境下&#xff0c;缓存一…

C#中的Null注意事项

一、开启 C# 的 null 探险之旅 在 C# 编程的奇妙世界里&#xff0c;null 就像是一个神秘莫测的幽灵&#xff0c;时不时冒出来给我们制造一些意想不到的 “惊喜”。它看似简单&#xff0c;仅仅表示 “没有值”&#xff0c;却常常在不经意间引发各种让人头疼的错误&#xff0c;让…

MDX语言的正则表达式

MDX语言中的正则表达式 引言 MDX&#xff08;Multidimensional Expressions&#xff09;是微软开发的一种用于分析服务的查询语言&#xff0c;主要用于处理多维数据集。MDX在商业智能和数据分析领域得到了广泛应用&#xff0c;尤其是在使用SQL Server Analysis Services&…

Shader -> SweepGradient扫描渐变着色器详解

XML文件 <com.example.myapplication.MyViewxmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_gravity"center"android:layout_height"400dp"/>自定义View代码 c…

Qt天气预报系统实现HTTP请求

Qt天气预报系统实现HTTP请求 1、添加网请求络模块2、声明一个网络请求对象3、实例化一个网络请求对象4、连接网络请求获取的信号与槽5、新建一个网络请求获取的槽函数6、定义一个获取天气数据的函数7、在构造中&#xff0c;请求天气数据8、请求天气数据9、网络请求获取10 .h文件…

详解数据增强中的平移shft操作

Shift 平移是指在数据增强&#xff08;data augmentation&#xff09;过程中&#xff0c;通过对输入图像或目标进行位置偏移&#xff08;平移&#xff09;&#xff0c;让目标在图像中呈现出不同的位置。Shift 平移的目的是增加训练数据的多样性&#xff0c;从而提高模型对目标在…