Vim编辑器常用命令

2023-11-19

没用过vim编辑器,记录一下命令

Vim三种工作模式(命令模式、输入模式和编辑模式)

  • 使用Vim编辑文件时,默认处于命令模式。此模式下,可使用方向键(上、下、左、右)或k、j、h、i移动光标位置,还可以对文件内容进行复制、粘贴、替换、删除等操作;
  • 输入模式下,Vim可以对文件执行写操作,类似于在Windows系统的文档中输入内容。使Vim进行输入模式的方式是在命令模式状态下输入i、I、a、A、o、O等插入命令,当编辑温江完成后按Esc键即可返回命令模式;
    在这里插入图片描述
  • 编辑模式用于对文件中的指定内容执行保存、查找或替换等操作。使Vim切换到编辑模式的方法是在命令模式状态下按“:”键,此时Vim窗口的左下方出现一个“:”符号,这时就可以输入相关指令进行操作了;
  • 指令执行后,Vim会自动返回命令模式。如果想直接返回命令模式,按Esc即可;

Vim打开文件

  • 使用Vim打开文件,

    $ vim test.txt &
    

    用【vim】文件会在terminal打开,【gvim】文件会在gui界面打开
    &表示当前进程打开,但不影响在终端敲其他命令

Vim快捷方向键和以单词为单位移动

w/W:可以移动到下一个单词的首
e/E:可以移动到下一个单词的尾
b/B:可以移动到上一个单词的首

Vim插入文本

  • 从命令模式进入输入模式使用不同的键:
    i:在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
    I:在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行i命令
    o:在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
    O:在光标所在行的上面插入新的一行。光标停在空行首,等待输入文本
    a:在当前光标所在位置之后插入随后输入的文本
    A:在当前光标所在行尾插入随后输入的文本,相当于光标移动到行尾再执行a命令

Vim查找文本

/abc:从光标所在位置向前朝朝字符串abc
/^abc:查找以abc为行首的行
/abc$:查找以abc为行尾的行
?abc:从光标所在位置向后查找字符串abc

查找快捷键:【shift+*】,等同于第二种

在这里插入图片描述

在这里插入图片描述

  • :set nohls:取消永久高亮
  • :set hls:打开永久高亮
  • :noh:取消当前高亮内容

Vim替换文本

r:替换贯标所在位置的字符,只能替换一个
R:从光标所在位置开始替换字符,其输入内容会覆盖掉后面等长的文本内容,按“Esc”可以结束
: s/a1/a2/g:将当前光标所在行中的所有a1用a2替换

Vim删除文本

x:删除光标所在位置的字符
dd:删除光标所在行
ndd:删除当前行(包括此行)后n行文本
dG:删除光标所在行到文件末尾的所有内容
D:删除光标位置到行尾的内容
:a1,a2d:删除从a1行到a2行的文本内容

选中当前单词:【viw】

vim复制和粘贴文本

p:将剪贴板中的内容粘贴到光标后
P:将剪贴板中的内容粘贴到光标前
y:复制已选中的文本到剪贴板
yy:将光标所在行复制到剪贴板,此命令前可以加数字n,可复制多行
yw:将光标位置的单词复制到剪贴板

Vim保存退出文本

:wq:保存并退出Vim编辑器
:wq!:保存并强制退出Vim编辑器
:q:不保存就退出Vim编辑器
:q!:不保存就强制退出Vim编辑器
:w:保存但是不退出Vim编辑器
:w!:强制保存文本
:w filename:另存到filename文件
x!:保存文本,并退出Vim编辑器
ZZ:直接退出Vim编辑器

Vim光标移动

  • 移动至行首或行尾
    【0】或^:光标移动到当前行的行首
    【$】:光标移动到当前行的行尾
    n $:光标移动至当前行只有n行的行尾,n为数字
  • 移动至指定行
    【gg】:光标移动到文件开头
    【G】:光标移动至文件末尾
    nG:光标移动到第n行,n为数字
    【:n】:编辑模式下使用的快捷键,可以将光标快速定义到指定行的行首
  • 光标移动到匹配的括号处
    程序员在编辑程序时,经常会为将光标移动到与一个“(”匹配的“)” (对于[ ]和{ }也是一样的)处而感到头疼。Vim里面提供了一个非常方便地查找匹配括号的命令,这就是%
    【%】:可以查看匹配的“(”和“)”、“{”和“}”、“begin”和“end”、“case”和“endcase”等
    【e】:向后,跳转到单词末尾
    【w】:向后,跳转到单词首
    【b】:向前,跳转到单词首

多行编辑

使用Ctrl+v进入visual block模式,上下键选择要编辑的行,大写“I”进入编辑模式,输入要插入的内容,完成后esc退出

在行尾编辑,每一行的行尾添加“word”内容
在这里插入图片描述
回车后,文件改写了
在这里插入图片描述

正则替换文本内容 行尾添加

:[range]s/s1/s2/g
在这里插入图片描述

:473,478s/test/word/g

在这里插入图片描述
:473,478s/$/dog
在这里插入图片描述

大小写转换

【Ctrl + v】进入visual block模式,上下左右选择要转换的文本范围
【viw】:选中当前单词
【gu】:转小写
【gU】:转大写

文本代码折叠

方法很多,能用就行
【创建折叠】:
zf28G:创建从当前行起到28行的代码折叠
10zf / 10zf↓ / zf10↓ :创建从当前行起到后10行的代码折叠
10zf↑:创建从当前行起到之前10行的代码折叠
zf%:创建从当前行起到对应的匹配的括号上的代码折叠
【展开当前折叠】:zo / za
【折叠当前折叠】:zc / za
【展开/关闭所有折叠】:zi
【删除当前折叠】:zd

删除和检索相关行

【:v/test/d】:删除没有关键字test的行;保留test
【:g/test/d】:删除有关键字test的行;删除test

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vim编辑器常用命令 的相关文章

  • vim 中的切换功能

    基本上我想做的是 map e call ToggleEssayMode
  • 使用 vim 处理文本文件中的 \r \n ^M ​​^@

    当我将 excel 文件中的数据行保存为制表符分隔的 txt 文件 然后在 VIM 中打开这些文件时 我发现 excel 中曾经的多行文件现在是 VIM 中的单行文件 可以使用一些替换命令在 VIM 中分隔 行 s M r n g 此后 线
  • 如何跳转到 vim 中不同选项卡内的标记?

    我使用 MacVim 通常会打开许多 选项卡 我希望能够在任何打开的文件中放置标记并在它们之间跳转 mK and K当标记位于同一个选项卡中时效果很好 但我必须使用gt找到选项卡 然后K找到标记 一定有更好的方法吗 这是一个快速而肮脏的技巧
  • 在 Vim 中将 DOS/Windows 行结尾转换为 Linux 行结尾

    如果我打开在 Windows 中创建的文件 所有行都以 M 如何一次性删除这些字符 dos2unix https sourceforge net projects dos2unix是一个可以执行此操作的命令行实用程序 In Vim s M
  • 你能强制 Vim 在文件末尾显示一个空行吗?

    当我在记事本中打开文本文件时 如果包含文本的最后一行末尾有回车符 则会显示一个空行 然而 在 Vim 中它不显示这个空行 我注意到的另一件事是 Vim 编辑器默认在最后一行添加回车符 即使它没有显示 我可以这么说 因为如果我在记事本中打开在
  • 如何只在当前行进行搜索和替换?

    I see 如何在特定行中搜索和替换 https stackoverflow com questions 17319557 search and replace in vim in specific lines 按行号指定 以及如何使用当前
  • vim:无法加载库 libpython

    我不让 vim 与 python 支持一起工作 我使用以下配置编译 vim 7 4 972 configure enable shared with features huge enable multibyte enable cscope
  • Vim:用字符填充行

    如何在一行或多行末尾重复添加字符 将行填充到特定列 例如 x 代表第 40 列 不是该行上的字符 并且文本后没有空格或制表符 line one x line two x line three x line eleventy billion
  • 如何在vim中每隔几行添加一行

    我想使用 vim 编辑器在文件 大约 1000 行 中每 3 行添加一行 有人可以帮我吗 谢谢 艾丽莎 有一个 vim 特定的正则表达式可以做到这一点 s n n n 0 r g s 是 vim ex 命令来替换整个文件 n 是包含行尾的一
  • 在插入模式下移至行首

    我知道我可以使用 Home in insert mode Esc i to exit insert mode and enter it again effectively going to the beginning of line But
  • vim:视觉明星搜索未按预期工作

    我复制了这个函数来进行视觉搜索 and function s VSetSearch cmdtype let temp s norm gv sy let V substitute escape s a cmdtype n n g let s
  • 如何取消 Vim 中的粘贴操作?

    每当我不小心在 Putty 中右键单击 打开 Vim 时 我的剪贴板上就有相当多的文本 并且 Vim 启动了粘贴操作 该操作已经持续了大约十分钟 我不想丢失未保存的工作 有没有办法指示 Vim 停止粘贴文本 If you re in nor
  • 切换 git 分支时如何处理 vim 缓冲区?

    因此 我在 vim 缓冲区中打开了大量文件 并且正在使用 git 处理功能分支 突然 我意识到我需要恢复到主分支来进行快速修复 提交后 我将 vim 会话保持打开状态并切换回 master 分支 但是 当我尝试从缓冲区加载我需要的文件时 我
  • 文件保存期间语法突出显示随机消失

    我正在使用 vim 编辑一些 python 文件 最近偶尔会出现在 vim 中保存缓冲区后语法高亮消失的情况 我尝试重置syntax on and set filetype python但无济于事 我根本不知道是什么原因导致了这个问题 所以
  • 有没有办法用 Vim 自动重新格式化大括号?

    我想重新格式化一些代码 如下所示 if cond foo to if cond foo 由于这是C代码 所以我一直在看cindent cinoptions与使用 但它似乎不处理多行规则 我一直在看formatoptions与使用gq 而且似
  • 当vim进入可视模式时运行命令

    我使用一个小脚本来触发插入模式以更改行号颜色 function CursorLineNrColorInsert mode Insert mode blue if a mode i highlight CursorLineNr ctermfg
  • Vimscript 检查当前缓冲区是否有未保存的更改

    我目前已设置状态行 使其在插入模式下为橙色 否则为白色 如果文件有任何未保存的更改 我想让它在我回到正常模式时变成另一种颜色 因为我经常在兔子洞里走一会儿 想知道为什么我的更改没有生效 小 还不够打我的脸 我找不到任何以 buf 开头且看起
  • 有没有办法在 Vim 中映射 Ctrl 句点和 Ctrl 逗号?

    我似乎找不到绘制地图的方法
  • Pathogen 不加载插件

    病原体对我不起作用 我正在遵循 Adam Lowe 发布的提示here http www adamlowe me 2009 12 vim destroys all other rails editors html 还有更多 没有任何成功 我
  • Linux 上 的默认键绑定是什么? Mac 将此绑定到命令

    Vim 的一些示例设置 例如janus https github com carlhuda janus 将命令键绑定到某些命令 例如 Command Shift F for Ack map

随机推荐

  • 【项目实战】复旦微MCU+RT-thread+Moudbus(1)

    前言 手头存货FM33LC046芯片 复旦微提供的是freertos和rthread nano的例子 一直想使用RTThread完整版 MCU由于ROM有限 项目因此不可能太复杂 怕后期资源不够 第一步 git源码https gitee c
  • Activiti-设置全局变量的四种方法

    1 在流程启动的时候设置全局变量 在流程启动时设置全局变量 Test public void startProcessInstance 得到runtimeService RuntimeService runtimeService proce
  • 如何在Controller层实现事务管理?

    在spring aop 事务管理中发现 我们是在service层实现的事务管理 现在有如下场景 大家讨论下看如何实现 ControllerA ControllerB ControllerC 共同依赖ServiceA ServiceB 上述C
  • Java特训的第一天——开篇

    我是一名刚入门的Java菜鸟 我选择Java的原因是因为其语法简单 功能强大 从web 到桌面 到嵌入式 无所不能 下面我将谈一谈我对Java语言的认识 Java语言概述 关于Java的介绍网上有很详细的阐述 我在这里就不再细述了 下面只简
  • 非谓语动词

    文章目录 1 to 动词原形或动词原形 ing 1 1 动词不定式 1 2 动名词 2 假主语 真主语和不定式 动名词的否定式 2 1 形式主语 2 2 形式宾语 2 3 动名词或不定式否定 3 to不定式表示目的 4 常见的不定式和动名词
  • 【vue网站优化】秒开网页

    vue网站优化 网页渲染速度快到极致 在将打包后的dist目录上传到服务器时 往往会出现首次加载页面速度较慢的情况 以下给出几点优化意见 在路由配置文件中 采用路由懒加载 当打包构建应用时 JavaScript 包会变得非常大 影响页面加载
  • SQL注入的常见方式

    目录 联合查询 union 函数介绍 order by union select 操作 布尔盲注 and or 函数介绍 mid 从中间截取字符 left 从左开始截取字符 ord ascii 转成ascii码 length 统计长度 an
  • 循环嵌套与简单调用

    循环嵌套与简单调用 一 循环嵌套 1 循环嵌套 for 条件初始化 条件判断 条件变化 重复执行的代码 for 条件初始化 条件判断 条件变化 重复执行的代码 重复执行的代码 特点 外层循环执行一次 内层小循环执行一轮 从开始到结束 外层循
  • C0202 [2010普及组-A]数字统计(C语言写)

    题目描述 请统计某个给定范围 L R 的所有整数中 数字 2 出现的次数 比如给定范围 2 22 数字 2在数 2 中出现了 1 次 在数 12 中出现 1 次 在数 20 中出现 1 次 在 数 21中出现 1 次 在数 22 中出现 2
  • QT5.15编译2

    准备工作 必须 第一步 Qt 源码下载 https download qt io official releases qt Qt Creator 源码下载 https download qt io official releases qtc
  • RabbitMQ重复消费

    文章目录 前言 重复消费问题 方法一 消息幂等性 方法二 消息去重 前言 解决 RabbitMQ 重复消费问题是消息队列应用中非常重要的一部分 在实际应用中 可能会出现消费者因某种原因 例如网络问题 应用崩溃等 在处理消息时失败 然后重新开
  • 4.2.1测试网络基础结构配置

    测试网络基础结构配置 ID WSTG CONF 01 总结 互连和异构 Web 服务器基础结构 可能包括数百个 Web 应用程序 的内在复杂性使得配置管理和审查成为测试和部署每个应用程序的基本步骤 只需要一个漏洞就可以破坏整个基础架构的安全
  • HTTP(GET/POST)请求过程中的编码问题

    一 问题 编码问题是JAVA初学者在web开发过程中经常会遇到问题 网上也有大量相关的文章介绍 但其中很多文章并没有对URL中使用了中文等非ASCII的字 符造成服务器后台程序解析出现乱码的问题作出准确的解释和说明 本文将详细介绍由于在UR
  • MATLAB中的eps的详细解释及用法

    1 首先 eps是一个函数 它表示的是一个数可以分辨的最小精度 默认时它表示1到它下一个浮点数之间的距离的一半 而正好等于最大小于1的浮点数到最小大于1的浮点数之间的距离 eps 2 2204e 16 下面是eps的默认精度 注 以下演示环
  • git高级用法之rebase

    rebase的高级用法 这里介绍两种高级用法 1 合并连续的或者不连续的两个提交记录 删除任意一个提交记录 改变提交记录的先后顺序 2 通过rebase合并分支 合并连续的两个提交 如下图的场景 gl是git log的缩写 不过也没这么简单
  • mybatis 循环集合查询

    数据库语句为 select from user where 张三 李四 王五 那么想用mybatis Mapper y entity 定义一个集合属性作为参数 private List searchName dao层 定义一个映射mappe
  • 使用MobaXterm连接到远程服务器

    仅供参考 文章目录 TOC 文章目录 一 前期准备 二 步骤 1 点击上册工具栏的Session 在弹出的窗口里选择SSH 2 点击Network settings 再点击中间的jump host 3 在弹出界面填入所需信息 并点击OK保存
  • 云原生服务更换二进制调测方法

    当前我们开发的服务基本都是云原生的服务 都跑在容器中 在开发过程中 想更换二进制文件调测就相当麻烦了 今天写了一个脚本 供大家参考 bin bash set ex appName testApp appPath home appName c
  • SpringBoot整合Druid-Mybatis&SpringSecurity使用

    SpringBoot整合JDBC 创建springBoot项目时首先需要导入JDBC的支持 以及MySQL驱动
  • Vim编辑器常用命令

    Vim编辑器常用命令 Vim三种工作模式 命令模式 输入模式和编辑模式 Vim打开文件 Vim快捷方向键和以单词为单位移动 Vim插入文本 Vim查找文本 Vim替换文本 Vim删除文本 vim复制和粘贴文本 Vim保存退出文本 Vim光标