vim常用快捷键

CentOS / Ubuntu 系统上,会经常用到vim但是想用快捷键的比较多,每次查询比较麻烦,所以整理一下,喜欢的小伙伴欢迎点赞👍+收藏❤️+评论噢~

vim 是一个非常常用的文本编辑器,它提供了大量快捷指令和命令来帮助用户快速编辑文件。以下是一些常用的 vim 快捷指令,分为基本操作、模式切换、光标移动、文本编辑等多个部分。

1. 模式切换

  • 命令模式 (默认模式):在该模式下可以执行删除、复制、粘贴等操作,启动 vim 后默认进入该模式。
  • 插入模式 :可以进行文本编辑。
    • i:进入插入模式,在当前光标位置之前插入。
    • I:进入插入模式,在行首插入。
    • a:进入插入模式,在当前光标位置之后插入。
    • A:进入插入模式,在行尾插入。
  • 可视模式 :选择文本块进行操作。
    • v:进入可视模式,按光标移动键选择字符。
    • V:进入可视行模式,选择整行。
  • 退出插入模式 :按 Esc 退出插入模式,返回到命令模式。

2. 文件操作

  • :w:保存文件。
  • :w filename:另存为指定文件名。
  • :q:退出 vim
  • :q!:强制退出 vim,不保存。
  • :wqZZ:保存并退出 vim
  • :e filename:打开一个新的文件进行编辑。
  • :set nu:显示行号。
  • :set nonu:隐藏行号。

3. 光标移动

  • h:向左移动一个字符。
  • j:向下移动一行。
  • k:向上移动一行。
  • l:向右移动一个字符。
  • 0:移动到当前行的行首。
  • $:移动到当前行的行尾。
  • gg:移动到文件的开头。
  • G:移动到文件的末尾。
  • H:移动到屏幕的顶部。
  • M:移动到屏幕的中间。
  • L:移动到屏幕的底部。
  • Ctrl + f:向下翻页。
  • Ctrl + b:向上翻页。

4. 文本编辑

  • 删除
    • x:删除当前光标所在的字符。
    • dw:删除从光标位置到下一个单词开头。
    • d$:删除光标到行尾的内容。
    • dd:删除整行。
  • 复制与粘贴
    • yyY:复制当前行。
    • p:在光标后粘贴。
    • P:在光标前粘贴。
  • 替换
    • r:替换当前光标下的字符。
    • R:进入替换模式,覆盖文本,直到按下 Esc 退出。
  • 撤销与重做
    • u:撤销上一步操作。
    • Ctrl + r:重做撤销的操作。
  • 修改文本
    • cw:修改一个单词,从光标位置到单词结尾,然后进入插入模式。
    • C:删除当前光标到行尾的内容,然后进入插入模式。
    • cc:删除整行并进入插入模式。

5. 搜索与替换

  • 搜索
    • /pattern:向下搜索指定的字符串 pattern
    • ?pattern:向上搜索指定的字符串 pattern
    • n:重复上一次的搜索(向下)。
    • N:重复上一次的搜索(向上)。
  • 替换
    • :s/old/new/g:替换当前行中所有匹配的 oldnew
    • :%s/old/new/g:替换整个文件中所有的 oldnew
    • :%s/old/new/gc:替换整个文件中的 oldnew,并在每次替换前进行确认。

6. 缩进与格式化

  • >>:右缩进当前行。
  • <<:左缩进当前行。
  • =:自动对齐代码。
  • gg=G:格式化整个文件。

7. 窗口操作

  • :split filename:sp filename:水平分割窗口并打开文件。
  • :vsplit filename:vsp filename:垂直分割窗口并打开文件。
  • Ctrl + w + w:在窗口之间切换。
  • Ctrl + w + q:关闭当前窗口。

8. 退出 Vim

  • :q:退出编辑器(如果未修改文件)。
  • :q!:强制退出,不保存修改。
  • :wqZZ:保存并退出。
  • :x:与 :wq 类似,保存并退出。

9. 其他实用命令

  • :noh:关闭高亮搜索结果。
  • J:合并当前行与下一行。
  • .:重复上一次的操作。

总结

这些是 vim 的常用快捷指令和命令,通过熟练掌握这些快捷键,可以大幅提高在 vim 中编辑文件的效率。如果你刚开始使用 vim,建议从最常用的光标移动和基本编辑命令开始,逐步掌握更多高级功能。

直到上班后才明白"少壮不努力,老大图伤悲"的真正含义

相关推荐
Mortal_hhh几秒前
VScode的C/C++点击转到定义,不是跳转定义而是跳转声明怎么办?(内附详细做法)
ide·vscode·stm32·编辑器
hjjdebug42 分钟前
linux 下 signal() 函数的用法,信号类型在哪里定义的?
linux·signal
其乐无涯43 分钟前
服务器技术(一)--Linux基础入门
linux·运维·服务器
Diamond技术流44 分钟前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
斑布斑布1 小时前
【linux学习2】linux基本命令行操作总结
linux·运维·服务器·学习
Spring_java_gg1 小时前
如何抵御 Linux 服务器黑客威胁和攻击
linux·服务器·网络·安全·web安全
✿ ༺ ོIT技术༻1 小时前
Linux:认识文件系统
linux·运维·服务器
会掉头发1 小时前
Linux进程通信之共享内存
linux·运维·共享内存·进程通信
我言秋日胜春朝★1 小时前
【Linux】冯诺依曼体系、再谈操作系统
linux·运维·服务器