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

什么是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 FILENAME,vim将把该部分内容保存至当下目录下的文件FILENAME中

  • :r FILENAME:读取文件FILENAME中的内容并粘贴在当前光标之下;:r ![external command]:执行外部命令,并将返回的结果粘贴在当前光标之下

  • o:在当前行的下方插入一个新行,并进入插入模式;O:在当前行的上方插入一个新行,并进入插入模式

  • v进入选择模式,选择好目标内容后,按y进行复制,按p进行粘贴

  • :help:进入在线帮助系统;CTRL-W:页面之间的切换;:q:离开帮助页面;:help [command]:具体命令

输入模式

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

底线命令模式

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

  • :w:保存文件
  • :q:退出Vim编辑器
  • :wq:保存文件并退出Vim编辑器
  • :q!:不保存修改强制退出Vim编辑器

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}@@ 可以重复最近一次的宏执行

相关推荐
ykjhr_3d1 小时前
华锐云空间展销编辑器:开启数字化展示新时代
编辑器
许白掰1 小时前
Linux入门篇学习——Linux 工具之 make 工具和 makefile 文件
linux·运维·服务器·前端·学习·编辑器
longze_75 小时前
Ubuntu连接不上网络问题(Network is unreachable)
linux·服务器·ubuntu
Dirschs5 小时前
【Ubuntu22.04安装ROS Noetic】
linux·ubuntu·ros
qianshanxue115 小时前
ubuntu 操作记录
linux
AmosTian8 小时前
【系统与工具】Linux——Linux简介、安装、简单使用
linux·运维·服务器
这我可不懂11 小时前
Python 项目快速部署到 Linux 服务器基础教程
linux·服务器·python
车车不吃香菇11 小时前
java idea 本地debug linux服务
java·linux·intellij-idea
tan77º11 小时前
【Linux网络编程】Socket - TCP
linux·网络·c++·tcp/ip
kfepiza12 小时前
Linux的`if test`和`if [ ]中括号`的取反语法比较 笔记250709
linux·服务器·笔记·bash