【Linux】vim的操作大全

目录

vim的5种常用模式:

一、命令模式

二、替换模式

三、底行模式

四、视图模式

五、补充

总结



vim的5种常用模式:

  • 常见的5种模式:命令模式、插入模式、替换模式、底行模式、视图模式
  • 图中箭头上的字符表示模式转换需要按下的按键:
  • 首先我们vim打开任意一个文本文件,默认就是命令模式。
  • 从命令模式可以进入其他任意模式,其他任意模式下按ESC即可返回命令模式。
  • **插入模式:**在命令模式下按 a 或 i 或 o 键,即可进入插入模式,该模式就是我们进行文本编写的模式,使用方式和和使用记事本一样,就不多说了,此模式下按ESC即可返回命令模式。
  • 其他模式以及对应的命令用法,下面我们来一一介绍:

ps:vim模式不止这些,但这些是最常用的,了解并熟练掌握后即可使用vim快速编写代码和文本


一、命令模式

进入vim默认是命令模式,也可以在任何模式下按ESC进入该模式

1.gg

  • **功能:**将光标定位到文本开头

2.G(shift+g)

  • **功能:**将光标定位到文本末尾

3.数字+gg / 数字+G

  • **功能:**都是将光标定位到数字对应的那一行开头位置

如:3+gg


4.$(shift+4)

  • **功能:**将光标定位到当前行末尾处

5.^(shift+6)

  • **功能:**将光标定位到当前行的行首处

6.h、j、k、l、w、b

  • **h:**光标向左移动一格
  • **j:**光标向下移动一格
  • **k:**光标向上移动一格
  • **l:**光标向右移动一格
  • **w:**光标向左以单词为长度进行移动(数字+w可以控制跳过单词个数)
  • **b:**光标向右以单词为长度进行移动(数字+b可以控制跳过单词个数)

补充:方向键也是控制光标的,效果一样


7.yy / p

  • **功能:**复制粘贴
  • **yy:**复制当前行
  • **p:**粘贴到当前行的下一行
  • **数字 + p:**粘贴n行相同内容

如:10p

  • **数字+yy:**一次性复制n行内容(光标处往下n行)

如:在首行7yy复制后,p粘贴在第8行


8.u / ctrl+r

  • **u功能:**撤销上一步操作

如:撤销10p操作

  • **ctrl+r功能:**对u进行撤销,恢复撤销前的操作

9.dd

  • **功能:**剪切或删除当前行,搭配p使用可以将剪切内容粘贴

如:将printf语句剪切到第7行

  • **数字+dd:**剪切或删除n行

如:在首行上7dd,然后p在第6行


10.x / X

  • **x功能:**删除光标处的单个字符
  • **X功能:**删除光标前一个字符
  • **数字 + x/X:**可以控制一次性删除字符个数

11.~(shift+`)

  • **功能:**将光标处的字符转为大写字符。

12.shift+zz

  • **功能:**保存并退出vim

二、替换模式

  • 在命令模式下,按 shift+r 也就是 R,可以进入替换模式。
  • 在该模式下,可以进行连续替换字符。输入字符可以替换光标所在处的字符,并且光标自动移到下一位。

如:将printf语句全替换成1。

  • 该模式可以在某行文本或代码有误的情况下进行替换操作
  • 按键盘上的删除按键(backspace),如果删除的字符位置上之前存在字符,那么就会恢复替换前的字符:

如:一直按住删除按键直到开始替换的位置,就能恢复替换前的代码

按ESC即可退出替换模式,回到命令模式


三、底行模式

  • 在命令模式下,按 shift+; 也就是 : (冒号),进入底行模式,底行模式有专门的输入框。
  • 底行模式输入命令后需要回车才能起效,每次回车后都会退出底行模式到命令模式,下一次执行底行命令依旧需要先按 shift+; 进入底行模式。

1.w / q

  • **w:**保存文本
  • **q:**退出vim
  • **wq:**保存并退出vim
  • **w!:**强制保存
  • **q!:**强制退出vim
  • **wq!:**强制保存并退出vim
  • 平时使用最多的就是wq了,在一些配置文件中,普通的wq可能无法保存退出,此时就需要带上 ! 强制退出了

2.set nu / set nonu

  • **set nu:**设置行号
  • **set nonu:**取消行号

set nu 是 set number 的缩写,效果一样


3./ + 需要搜索的内容

  • 功能:/ 具有搜索的功能,/ 后面接需要搜索的内容即可高亮显示被搜索到的内容。

如:/main

  • 如果有多个匹配的搜索项,此时按下 n 键,即可把光标跳转到下一个匹配项

4.! + command(指令)

  • **功能:**可以在不退出vim的情况下执行系统指令
  • 如:在底行模式中输入 !ls,即可查看当前目录下的所有文件
  • 如:!gcc test.c,即可不退出vim进行编译当前代码
  • 如:接着底行模式输入 !./a.out,即可运行编译好的可执行程序

5.vs + 其他文件名

  • 功能:支持多开文件,可以同时编写多个文件的内容

**如:**在test.h中,底行模式输入 vs test.c 打开test.c文件

  • 命令模式下输入 ctrl+ww 即可来回切换光标操控不同文件
  • 光标在哪个文件就是操控哪个文件,在光标指示的文件中即使关闭文件也不会把另一个文件退出,文件间命令互不干扰。

6.%s/需要替换的字符串/新字符串/g

  • **功能:**批量化修改字符串
  • 如:想把下面代码中的所有 printf 改为 print:
  • 在底行模式中输入 %s/printf/print/g 然后回车即可:
  • 如果更改后黄色高亮没消失,底行模式中输入 nohl 即可取消上面的黄色高亮显示。

更多命令可以在需要时,使用AI进行查找


四、视图模式

  • 在命令模式下,按 ctrl+v 即可进入视图模式,视图模式可以完成以下操作:

ps:以下操作中,hjkl的效果和命令模式中一样是控制光标移动方向的,当然方向键效果也一样

1.批量化注释代码

  • 批量化注释代码演示:首先光标停在需要注释的代码前,然后 ctrl+v 进入视图模式,再按 j 向下选择注释多少行:
  • 随后按 shift+i,也就是大写 I,进入插入模式,随后光标会回退到开始位置,在该位置输入 // 注释掉该行代码:
  • 最后,按下ESC即可将刚才选中的代码全部注释
  • 注释全部代码:只需要把光标定位到第一行的行首(gg),然后 ctrl+v -> shift+g -> shifit+i-> // -> ESC 即可。不同点就是在选择注释内容时直接 shift+g(G) 跳到最后一行就行:

2.批量化取消注释

  • 首先光标定位到需要取消注释那一行的行首,然后 ctrl+v 进入视图模式,按 j 向下选中需要取消注释的代码的第一根 /,
  • 然后还需要按一下 l 向左选中第二根 / :
  • 最后按 d 即可批量化删掉注释字符 //:
  • 当然先 l 选择第二根/,在 j 往下选择需要注释的行,效果一样。

3.批量化的修改操作

  • 依旧先把光标定位到需要修改的起始位置,然后 ctrl+v 进入视图模式,接着使用 hjkl 选中需要批量修改的内容,比如下面演示将代码中的 "hello world" 改成 "你好 世界":
  • 先选中 "hello world" 的区域,方向键怎么动都行,只要能选中需要修改的区域就行:
  • 然后按 d 删掉,接着重新 ctrl+v 进入视图模式,使用方向键选中需要批量化输入的区域:
  • 再按 shift+i 进入插入模式,光标会回退到开始位置,此时输入 "你好 世界",最后按下 ESC 即可完成批量化修改操作:

shift+i 可从视图模式转到插入模式,对应文章开头那张图中的绿线
小结:

  • 视图模式下可以完成很多批量化操作,只要你想就可以试试,万变不离其宗,一般都是 ctrl+v 进入视图模式起手,然后使用 hjkl 或者方向键选择需要批量化处理的区域,再进一步操作,最后就是ESC见证奇迹,当然有时候需要多次批量化,也就是多次 ctrl+v 进入视图,再选区等等。

五、补充

1.vim [文件名] [+数字]

  • **效果:**进入文件后光标自动定位在第n行,也就是你输入的数字那一行
  • **适用场景:**当文件编译报错后,可以快速定位错误的位置:
  • 虽然不是特别准确,但是在附近就行,特别是大型文件中很好用

2.! + 指令首字母

  • **效果:**可以快速执行最近的该字母开头的指令
  • 如:我们刚刚使用了 gcc 编译了某个文件,修改文件后,需要重新编译,此时输入 !g 即可快速完成编译:
  • 这个 ! + 指令首字母主要是加快我们操作速度的。适合那些又长,使用上方向键需要翻几次才能找到,短时间内使用次数较多的指令。

3.配置vim

  • 我们直接使用vim就会发现它和普通的记事本没什么区别,如果我们想把vim变得更好用,就可以编写配置文件对vim进行配置
  • 在根目录/etc/下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效,不过不建议配置该文件,我们只需要对自己常用的普通账户进行配置即可。
  • 每个用户的家目录下,都可以自己建立私有的配置文件,命名为:".vimrc"。例如,/root 目录下,通常已经存在⼀个.vimrc⽂件, 如果不存在,则用vim创建之。不过root账户最好也不用配置,默认即可,平时用得少。
  • 我们进入自己普通账户的家目录,配置自己的.vimrc文件(vim .vimrc):
  • vim下粘贴外部代码可能会格式混乱,在底行模式下输入下面两个命令即可避免出现粘贴格式错误的情况:
bash 复制代码
:set noautoindent  " 关闭自动缩进
:set paste         " 进入粘贴模式(避免自动处理缩进)
  • 以下是一些参考的配置:
bash 复制代码
set number          " 显示行号(类似VS的行号显示)
set mouse=a         " 启用鼠标支持(复制粘贴、点击跳转等)
set tabstop=4       " 一个制表符显示为4个空格
set shiftwidth=4    " 自动缩进和手动缩进(>>/<<)的空格数
set softtabstop=4   " 按Tab键时实际插入的空格数
set autoindent      " 新行自动继承上一行的缩进(基础自动缩进)
set smartindent     " 智能缩进(针对C/C++等语言,如{}后自动缩进)
  • 最后wq保存退出,再使用vim随便打开一个文件就能看到效果了,比如行号可以自动显示了。想要更多的配置清单可以借助AI进行生成再筛选,当然还有很多的功能需要插件进行支持。如果你需要一套完整的配置清单,网上一搜就有很多选择,这里就不做推荐了。
  • 如果要安装vim插件,就需要先在家目录中 mkdir .vim 创建一个.vim的目录,vim的插件就是安装在该目录下。

总结

以上就是本文的全部内容了,感谢支持!

相关推荐
云动雨颤3 小时前
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
linux·运维·服务器
亮子AI3 小时前
【Ubuntu】清理空间的几种方法
linux·运维·ubuntu
赵渝强老师4 小时前
【赵渝强老师】Docker容器的资源管理机制
linux·docker·容器·kubernetes
Maple_land5 小时前
Linux进程第五讲:PPID与bash的关联、fork系统调用的原理与实践操作(上)
linux·运维·服务器·centos·bash
青草地溪水旁6 小时前
进程“悄悄话”函数——`socketpair`
linux·进程间通信
风为你而吹6 小时前
【玩泰山派】4、制作ubuntu镜像-(6)使用鲁班猫的sdk去制作镜像
linux·运维·ubuntu
running thunderbolt6 小时前
项目---网络通信组件JsonRpc
linux·服务器·c语言·开发语言·网络·c++·性能优化
_OP_CHEN7 小时前
Linux 系统编程:(一)从历史演进到 XShell 远程登录实操
linux·运维·服务器·centos·unix·xshell
夜月yeyue7 小时前
STM32 Flash 访问加速器详解(ART Accelerator)
linux·单片机·嵌入式硬件·uboot·bootloard