Vim命令大全(超详细,适合反复阅读学习)

Vim命令大全

  • Vim简介
  • Vim中的模式
  • 光标移动命令
  • 滚屏与跳转
  • 文本插入操作
  • 文本删除操作
  • 文本复制、剪切与粘贴
  • 文本的修改与替换
  • 文本的查找与替换
  • 撤销修改、重做与保存
  • 编辑多个文件
  • 标签页与折叠栏
  • 多窗口操作
  • 总结

Vim是一款文本编辑器,是Vi编辑器的增强版。Vim的特点是快速、高效、定制强、编辑功能强大、可扩展性好等。作为一款强大而又具有学习曲线的文本编辑器,Vim有很多命令需要掌握。在本篇博客中,将向您介绍Vim的基础概述,并提供Vim命令的详尽列表,以供您参考。

Vim简介

Vim最初是为Unix系统编写的,但如今Vim已被移植到许多不同的操作系统平台上。使用Vim可以以非常高效的速度编辑各种编程语言、标记语言、文本等文件。除了高效、可扩展和具有强大的编辑功能之外,Vim还具有许多值得一提的特点:

  • 模式指导: 与其他文本编辑器不同的是,Vim具有多种模式。例如,插入模式、命令模式、可视化模式等等。每个模式都提供了不同的编辑功能,并允许您以不同的方式与文本进行交互。
  • 快捷键: Vim的命令使用快捷键,旨在使您最大化地提高效率。有些命令可以使用单个键和单个单词快速执行,而其他的可以使用两个或更多的键。
  • 扩展性: Vim具有灵活性和可扩展性。Vim的功能可以通过插件进行定制和扩展,这使得Vim成为编码和文本编辑的最佳选择之一。

Vim中的模式

Vim共有以下6种常见的模式:

  • 普通模式(Normal mode): 这是使用Vim打开一个文件时,Vim的默认模式。在普通模式下,您可以使用各种命令来移动光标、删除、复制、粘贴和其他编辑操作。
  • 插入模式(Insert mode): 在插入模式下,您可以像在其他文本编辑器中一样输入和编辑文本。按下键盘上的插入键(通常是 iaoInsert 键)即可进入插入模式。
  • 可视模式(Visual mode): 可视模式允许您选择、高亮并操作文本块。您可以使用各种移动命令来选择文本。在普通模式下敲击键盘的 v 键即可进入可视模式,然后移动光标就可以选中一块文本,常用来完成文本的复制、粘贴、删除等操作。
  • 替换模式(Replace mode): 在替换模式下,您可以直接替换光标所在位置的字符。在普通模式下敲击键盘上的 R 键即可进入替换模式。
  • 命令行模式(Command-line mode): 命令行模式允许您执行各种命令。您可以在命令行中输入命令,例如保存文件、退出Vim、显示行号等。在普通模式下敲击 : 键即可进入命令行模式。
  • Ex 模式(Ex mode): Ex 模式是Vim的可选模式,它是命令行模式的扩展。Ex 模式提供了更多高级命令和编辑选项。可以一次执行多个命令。

Vim的各种工作模式可以通过不同的键进行切换,均需使用Esc键返回到普通模式

光标移动命令

在Vim中,可以使用光标移动命令来在普通模式下操作光标位置。下面是一些常用的光标移动命令:

单个字符的移动:

  • h:向左移动一个字符
  • l:向右移动一个字符
  • j:向下移动一行
  • k:向上移动一行
  • xh:向左移动x个字符距离

单词的移动:

  • w:向后移动一个单词,移动到下一个单词的开头
  • b:向前移动一个单词,移动到前一个单词的开头
  • e:将光标移动到下一个单词的词末,如果光标不在当前单词的词尾时会移动到当前单词的词尾
  • E:移动到单词的结尾(忽略标点符号)
  • ge:将光标移动到上一个单词的词末
  • xw:指定移动的x次数

行的移动:

  • 0:将光标移动到当前行的行首。
  • $:将光标移动到当前行的行尾。
  • ^:将光标移动到当前行的第一个非空字符处(行首和当前行非空字符不是一个位置)。
  • 2|:将光标移动到当前行的第二个字符处。| 表示列。
  • fx:在当前行中向前查找字符 x,将光标定位到下一个出现的字符位置。
  • 3fx:在当前行中向前查找字符 x,将光标定位到第三个出现的字符位置。
  • tx:在当前行中向前查找字符 x,将光标定位到下一个出现的字符前一个位置(即停在字符 x 前一个位置)。
  • %:在匹配的括号间进行跳转,比如在括号或引号的一对匹配中,移动到相匹配的括号或引号处。

【注意】ft 命令与字符相关,而数字前缀(如 23)表示执行多次操作。

文本块的移动:

  • (:将光标移动到当前 \ 上一个句子的开头。句子以句号、问号或感叹号结尾。
  • ):将光标移动到下一个句子的开头。
  • {:将光标移动到当前 \ 上一个段落的开头。段落由空行或一系列连续的非空行组成。
  • }:将光标移动到下一个段落的开头。
  • [[:将光标移动到当前 \ 上一个函数或块的开头。
  • ]]:将光标移动到下一个函数或块的开头。

在屏幕中的移动

  • gg:移动到文件的第一行
  • G:移动到文件的最后一行
  • xG:将光标移动到文件的第 x 行,其中 x 是行号
  • H:移动到当前屏幕的顶部行
  • M:移动到当前屏幕的中间行
  • L:移动到当前屏幕的底部行
  • Ctrl+f:向前翻页
  • Ctrl+b:向后翻页

滚屏与跳转

  • Ctrl+u:向屏幕上方滚动半个屏幕的高度。
  • Ctrl+d:向屏幕下方滚动半个屏幕的高度。
  • Ctrl+b:向屏幕上方滚动一个屏幕的高度。
  • Ctrl+f:向屏幕下方滚动一个屏幕的高度。
  • zt:将当前行移动到屏幕顶部。
  • zz:将当前行移动到屏幕中间。
  • zb:将当前行移动到屏幕底部。
  • :N:将光标移动到第 N 行。

文本插入操作

  • i:在光标所在位置插入文本。
  • I:在当前行的第一个非空字符插入文本。
  • a:在光标位置之后插入文本。
  • A:在当前行的行末插入文本。
  • o:在光标所在行的下一行插入新行,并进入插入模式。
  • O:在光标所在行的上一行插入新行,并进入插入模式。
  • s:删除当前光标下的字符,并进入插入模式,可以立即开始编辑替换的文本。
  • S:删除当前行,并进入插入模式,可以立即开始编辑替换的文本。相当于先按 dd 删除当前行,再按 i 进入插入模式。
  • u:撤销最近的修改操作。

在插入模式下,可以使用以下命令退出插入模式:

  • Esc:回到普通模式。
  • Ctrl+C:同样是回到普通模式,但较 Esc 更不易误触。

在插入模式下,还可以用以下命令进行编辑:

  • Ctrl+H:删除前一个字符(等同于 Backspace 键)。
  • Ctrl+W:删除前一个单词。
  • Ctrl+U:清空当前行之前的所有输入。
  • Ctrl+E:将编辑器中光标所在行的下一行显示在屏幕上。

文本删除操作

字符的删除:

  • x:删除光标所在位置的字符。
  • X:删除光标前面的字符(相当于 Backspace 键)。

单词的删除:

  • dw:删除从光标所在位置到下一个单词开头的所有字符。
  • d$:删除从光标所在位置到行末的所有字符。
  • daw:删除包括光标所在的单词的所有字符(包括前后空格)。
  • diw:删除光标所在单词内的所有字符(不包括前后空格)。
  • d2w:删除当前单词和下一个单词。
  • d0:删除从行首到光标位置的所有字符。
  • d1:删除从行首到光标位置的第一个字符,等同于x。
  • dh:删除光标前一个字符,等同于X。

行的删除:

  • dd:删除当前行,并将其保存到寄存器中以备粘贴。
  • 5dd:删除当前行及其下面的 4 行。
  • D:删除从光标位置到行末的所有字符。
  • :n1,n2d:删除从行号 n1n2 的所有行。
  • dgg:删除从当前行到文件开头的所有行。
  • dG:删除从当前行到文件末尾的所有行。

行的合并:

  • J:将当前行和下一行合并为一行。

文本复制、剪切与粘贴

复制:

  • yy:复制当前行,并将其保存到寄存器中以备粘贴。
  • yw:复制从光标所在位置到单词末尾的所有字符。
  • y$:复制从光标所在位置到行末的所有字符。
  • 3yw:复制从光标所在位置开始的 3 个单词(包括空格)。
  • :n1,n2y:复制从行号 n1n2 的所有行。

剪切:

  • dd:删除当前行,并将其保存到寄存器中以备粘贴。
  • dw:删除从光标所在位置到下一个单词开头的所有字符。
  • d$:删除从光标所在位置到行末的所有字符。
  • 3dw:删除从光标所在位置开始的 3 个单词(包括空格)。
  • :n1,n2d:删除从行号 n1n2的所有行。

粘贴:

  • p:在光标下方插入已复制或剪切的文本。
  • P:在光标上方插入已复制或剪切的文本。

复制文本块

  1. 进入可视块模式:
    • 按下 Ctrl + V 进入可视块模式。
    • 使用上下左右方向键或 hjkl 键移动光标,选择要复制的文本块。
  2. 复制文本块:
    • 按下 y 键复制选择的文本块。复制的内容将被保存在寄存器中,以供后续粘贴使用。
  3. 粘贴文本块:
    • 将光标移动到要粘贴的位置。
    • 按下 p 键将文本块粘贴到当前光标位置的下方。
    • 按下 P 键将文本块粘贴到当前光标位置的上方。

文本的修改与替换

  • cw:用于修改当前光标所在的单词。
  • cb:将光标移动到当前单词的开始处。
  • cc:用于删除整行并进入插入模式,可以输入替换的文本。
  • ~:用于更改当前所在位置的字符的大小写(大写转小写、小写转大写)。
  • r:用于替换单个字符,将当前光标所在的字符替换为一个新的字符。
  • R:用于进入替换模式,将会替换光标后的的所有字符。
  • xp:用于交换当前光标所在位置的字符和其下一个字符的位置。

文本的查找与替换

查找

  • /pattern:在 Vim 中,可以使用 / 后跟要查找的模式进行搜索。例如,输入 /keyword 可以在文本中查找关键字 “keyword”。
  • ?pattern:与上述类似,不同之处在于在问号后查找模式,例如 ?keyword
  • n:在查找模式下,按下 n 键可以跳转到下一个匹配项。
  • N:在查找模式下,按下大写的 N 键可以跳转到上一个匹配项。

替换

  • :s/pattern/replacement/:这是 Vim 中进行替换的基本格式。其中 pattern 是要查找的模式,replacement 是要替换成的内容。例如,:s/old/new/ 会将当前行中的第一个 “old” 替换为 “new”。
  • :s/pattern/replacement/g:在后面添加 g 标志,会替换所有匹配项,而不仅仅是每行的第一个匹配项。
  • :%s/pattern/replacement/g:在 % 前加上 : 号,可以对整个文档执行全局替换,而不只是当前行。

撤销修改、重做与保存

在文本编辑过程中,撤销修改和重做操作是非常重要的。此外,保存文本是确保你的更改被永久保存的一种方式。下面是一些常见的命令和操作:

撤销修改

  • u:按下 u 键可以撤销最近的修改。每按一次 u 键,就会撤销上一次的修改。
  • Ctrl + r:按下 Ctrl + r 键可以重做被撤销的修改。每按一次 Ctrl + r 键,就会重做上一次被撤销的修改。

保存文本

  • :w:这是 Vim 中保存文本的基本命令。在命令模式下,输入 :w 可以将当前文本保存到文件中。如果没有指定文件名,则会保存到原始文件中。
  • :w filename:如果你想将文件保存为特定的文件名,可以在 :w 命令后面加上文件名。例如,:w newfile.txt 将会将文件保存为名为 “newfile.txt” 的文件。
  • :saveas filename:这个命令会将当前文本保存到指定的文件名,类似于另存为。输入命令 :saveas newfile.txt 将会在当前目录下创建一个名为 “newfile.txt” 的副本,并将文本保存到该文件中。
  • U:按下大写的 U 键可以撤销对整行的所有修改,将行恢复到上一次保存时的状态。
  • q:在命令模式下,输入 q 可以退出 Vim。如果有未保存的修改,Vim 会发出警告并阻止退出。你可以按下 q! 来强制退出 Vim,丢弃未保存的修改。
  • wq:这是组合命令,可以将文本保存并退出 Vim。在命令模式下,输入 :wq 将会将文本保存到文件中,并退出 Vim 编辑器。
  • wq!:类似于上述的 wq 命令,但加上了 ! 表示强制保存。即使文件是只读模式或者没有写权限,也会强制保存并退出。
  • e!:该命令用于放弃当前的修改并重新加载文件。在命令模式下,输入 :e! 将会放弃所有未保存的修改,并重新加载原始文件。

编辑多个文件

  1. 打开多个文件

    • vim file1.txt file2.txt:在启动 Vim 时,可以通过在命令行上指定多个文件名来打开多个文件。例如,这个命令会同时将 “file1.txt” 和 “file2.txt” 文件加载到 Vim 中。
  2. 在已打开的文件之间切换

    • :n:在普通模式下,输入 :n 可以跳到下一个打开的文件。
    • :N:在普通模式下,输入 :N 可以跳到上一个打开的文件。
  3. 在已打开的文件之间切换并保存

    • :n 或者 :wn:在普通模式下,输入 :n 或者 :wn 可以切换到下一个文件并保存当前文件。
    • :N 或者 :wN:在普通模式下,输入 :N 或者 :wN 可以切换到上一个文件并保存当前文件。
  4. 查看已打开的文件列表

    • :ls:在命令模式下,输入 :ls 可以列出当前已打开的文件列表。
  5. 在已打开的文件之间切换编辑区域

    • Ctrl + ww:在正常模式下,按下 Ctrl + ww 可以在不同的分割窗口中切换编辑区域。

标签页与折叠栏

标签页(Tabs)

  • 创建标签页:

    • :tabnew:在当前标签页中创建新的空白标签页。
    • :tabnew filename:在当前标签页中创建一个以指定文件名命名的新标签页。
  • 标签页切换:

    • gt:在普通模式下,按下 gt 可以切换到下一个标签页。
    • gT:在普通模式下,按下 gT 可以切换到上一个标签页。
  • 标签页操作:

    • :tabs:在命令模式下,输入 :tabs 可以列出当前打开的标签页。
    • :tabclose:在命令模式下,输入 :tabclose 可以关闭当前标签页。
    • :tabonly:在命令模式下,输入 :tabonly 可以关闭所有标签页,除了当前标签页。

折叠栏(Folds)

  • 创建折叠:

    • zf:在普通模式下,先使用移动光标命令移动到要折叠的行,然后输入 zf 可以创建折叠。
    • zF:在普通模式下,选中多行文本后,输入 zF 可以创建一个包含选中文本的折叠。
  • 打开/关闭折叠:

    • zo:在普通模式下,将光标移动到已折叠的行上,然后按下 zo 可以展开折叠。
    • zc:在普通模式下,将光标移动到已展开的折叠行上,然后按下 zc 可以关闭折叠。
  • 操作折叠:

    • zc:折叠当前的折叠。
    • zC:递归折叠当前折叠下的所有折叠。
    • zd:删除当前折叠。
    • zE:删除当前折叠下的所有折叠。

多窗口操作

  1. 水平分割窗口

    • :split 或者 Ctrl + w + s:在当前窗口的下方创建一个新的水平分割窗口。
    • :split filename:在当前窗口的下方创建一个新的水平分割窗口,并打开指定的文件。
  2. 垂直分割窗口

    • :vsplit 或者 Ctrl + w + v:在当前窗口的右侧创建一个新的垂直分割窗口。
    • :vsplit filename:在当前窗口的右侧创建一个新的垂直分割窗口,并打开指定的文件。
  3. 在窗口之间切换

    • Ctrl + w + w:在正常模式下,按下 Ctrl + w + w 可以在不同的窗口之间切换焦点。
    • Ctrl + w + h:在正常模式下,按下 Ctrl + w + h 可以将焦点切换到左边的窗口。
    • Ctrl + w + j:在正常模式下,按下 Ctrl + w + j 可以将焦点切换到下方的窗口。
    • Ctrl + w + k:在正常模式下,按下 Ctrl + w + k 可以将焦点切换到上方的窗口。
    • Ctrl + w + l:在正常模式下,按下 Ctrl + w + l 可以将焦点切换到右边的窗口。
  4. 关闭窗口

    • :close:在当前窗口中,输入 :close 命令会关闭当前窗口。
    • :q:在当前窗口中,输入 :q 命令也可以关闭当前窗口(如果只剩下一个窗口,则关闭 Vim)。
  5. 调整窗口大小

    • Ctrl + w + +/-:在正常模式下,按下 Ctrl + w 后接 +- 可以增加或减小当前活动窗口的高度。
    • Ctrl + w + >/<:在正常模式下,按下 Ctrl + w 后接 >< 可以增加或减小当前活动窗口的宽度。

在这里插入图片描述

总结

感谢大家阅读这篇关于Vim命令操作的指南。通过本文,详细介绍了Vim中各种常用的命令操作,包括光标移动、文本编辑、多窗口操作等功能,希望这些内容能够帮助你更高效地使用Vim编辑器进行文本处理和编程工作。

Vim作为一个强大灵活的文本编辑工具,拥有丰富的功能和操作方式,使得它成为许多开发者和系统管理员钟爱的利器。通过不断地练习和使用,相信你也能够熟练掌握Vim的各种技巧,从而提高工作效率并享受到编程的乐趣。

如果你喜欢这篇博客或者有任何疑问、建议,欢迎在评论区与我分享。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/287228.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对于新手学习嵌入式开发,有哪些重要的要点?

今日话题&#xff0c;对于新手学习嵌入式开发&#xff0c;有哪些重要的要点&#xff1f;首要任务是熟练掌握一门编程语言。在众多编程语言中&#xff0c;我特别推荐初学者学习C语言。C语言是嵌入式开发的基础&#xff0c;易于理解&#xff0c;而且具有广泛的应用。为了帮助你入…

I.MX6ULL_Linux_驱动篇(48)linux I2C驱动

I2C 是很常用的一个串行通信接口&#xff0c;用于连接各种外设、传感器等器件。本章我们来学习一下如何在 Linux 下开发 I2C 接口器件驱动&#xff0c;重点是学习 Linux 下的 I2C 驱动框架&#xff0c;按照指定的框架去编写 I2C 设备驱动。本章同样以 I.MX6U-ALPHA 开发板上的 …

Leetcode—454.四数相加II【中等】

2023每日刷题&#xff08;六十四&#xff09; Leetcode—454.四数相加II 实现代码 class Solution { public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {unordered_map&l…

在 VMware 虚拟机上安装黑苹果(Hackintosh):免费 macOS ISO 镜像下载及安装教程

在 VMware 虚拟机上安装黑苹果(Hackintosh)&#xff1a;免费 macOS ISO 镜像下载及安装教程 VMware 虚拟机解锁 macOS 安装选项使用 macOS iso 系统镜像安装使用 OpenCore 做引导程序安装 在 VMware 虚拟机上安装黑苹果(Hackintosh)&#xff1a;免费 macOS ISO 镜像下载及安装…

蓝凌OA getLoginSessionId.html 信息泄露漏洞

文章目录 产品简介漏洞概述指纹识别漏洞利用修复建议 产品简介 蓝凌核心产品EKP平台定位为新一代数字化生态OA平台&#xff0c;数字化向纵深发展&#xff0c;正加速构建产业互联网&#xff0c;对企业协作能力提出更高要求&#xff0c;蓝凌新一代生态型OA平台能够支撑办公数字化…

Windows系统搭建VisualSVN实现公网访问本地服务

文章目录 前言1. VisualSVN安装与配置2. VisualSVN Server管理界面配置3. 安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4. 固定公网地址访问 前言 SVN 是 subversion 的缩写&#xff0c;是一个开放源代码的版本控制系统…

【Java】如何改变线程池的工作模式

改变线程池的工作模式,你试过吗 1.线程池默认的工作模式 有任务来了才创建核心线程&#xff1b; 当核心线程满了之后把任务堆积到工作队列中&#xff1b;当工作队列满了后扩容线程池&#xff0c;一直到线程个数达到 maximumPoolSize 为止;如果队列已满且达到了最大线程后还有…

【组合数学】生成函数

目录 1.形式幂级数2.生成函数性质3.生成函数求解递推关系4.生成函数在计数问题中的应用 1.形式幂级数 生成函数是解决计数问题的一种有效方法&#xff0c;它的中心思想是&#xff1a;对于一个有限或无限数列 a 0 , a 1 , a 2 , . . . {a_0,a_1,a_2,...} a0​,a1​,a2​,...&am…

Numpy教程(一)—— ndarray:多维数组对象

前言 该numpy学习笔记参考了菜鸟教程网、b站up主 孙兴华zz 的《孙兴华中文讲python数据分析三部曲》以及《北理-python数据分析与展示》&#xff0c;课本推荐使用《利用python进行数据分析》 Numpy简介&#xff1a; NumPy(Numerical Python) 是 Python 语言的一个扩展程序库&a…

Python----进程的注意点

1. 进程的注意点介绍 进程之间不共享全局变量主进程会等待所有的子进程执行结束再结束 2. 进程之间不共享全局变量 import multiprocessing import time# 定义全局变量 g_list list()# 添加数据的任务 def add_data():for i in range(5):g_list.append(i)print("add:&…

性能测试什么时候开始?性能测试流程介绍

性能测试什么时候开始? 一般在系统功能稳定没有大的缺陷之后开始执行。但前期准备工作可以从系统需求分析时就开始&#xff1a;性能目标制定、场景获取、环境申请等。 一、制定性能测试目标 在特定的并发用户数下测试特定场景的响应时间 在一定的响应时间的要求下来测试特…

STM32单片机项目实例:基于TouchGFX的智能手表设计(5)硬件驱动层程序设计

STM32单片机项目实例&#xff1a;基于TouchGFX的智能手表设计&#xff08;5&#xff09;硬件驱动层程序设计 目录 一、 概述 二、 新建工程与外设配置 三、 TouchGFX配置 四、 增加TouchGFX关键驱动 一、 概述 本文内容主要进行工程新建&#xff0c;硬件外设的配置以及添加…