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

相关推荐
tokepson1 天前
Mysql下载部署方法备份(Windows/Linux)
linux·服务器·windows·mysql
zz_nj1 天前
工作的环境
linux·运维·服务器
极客先躯1 天前
如何自动提取Git指定时间段的修改文件?Win/Linux双平台解决方案
linux·git·elasticsearch
suijishengchengde1 天前
****LINUX时间同步配置*****
linux·运维
qiuqyue1 天前
基于虹软Linux Pro SDK的多路RTSP流并发接入、解码与帧级处理实践
linux·运维·网络
切糕师学AI1 天前
Linux 操作系统简介
linux
sun03221 天前
【VSCode基础】VSCode快捷键总结、工程导入配置等
ide·vscode·编辑器
南烟斋..1 天前
GDB调试核心指南
linux·服务器
爱跑马的程序员1 天前
Linux 如何查看文件夹的大小(du、df、ls、find)
linux·运维·ubuntu
oMcLin1 天前
如何在 Ubuntu 22.04 LTS 上部署并优化 Magento 电商平台,提升高并发请求的响应速度与稳定性?
linux·运维·ubuntu