vim 入门教学4(命令行模式教学)

news/2025/9/24 13:15:02/文章来源:https://www.cnblogs.com/zxc-cppnb/p/19104797

normal模式下的命令行模式

在vim中除了normal模式能进入命令行模式,也可以在visual模式下进入。两者有所不同visual模式下进入会自动识别范围

normal模式进入命令行模式

: 单次进入命令行模式,此时光标会在窗口下方的边缘的上面(也就是状态栏的下面),执行一次命令自动退会normal模式
Q 进入命令行模式,可以一直执行命令,直到打visual指令会退出命令行模式

操作文件命令

接下来规定一下命令描述格式,方括号[]代表可以省略,花括号{}代表参数必须出现,省略号...表示重复前面的参数
命令名字前的:表示进入命令行模式,使用这种格式说好听点就是和官方手册对接,说不好听点就是本人技术比较差需要参考手册

:w[rite] [++opt] 保存当前文件缓冲区
:w[rite]! [++opt] 强制保存当前文件缓冲区
:w[rite] [++opt] {file} 将当前缓冲区保存到{file}文件
:w[rite]! [++opt] {file} 将当前缓冲区强制保存到{file}文件
:[range]w[rite] [++opt] {file} 将[range]范围内的内容保存到{file}文件
:[range]w[rite]! [++opt] {file} 将[range]范围内的内容强制保存到{file}文件
:r[ead] [++opt] [name] 将文件[name]中的所有内容复制到当前光标下,不指定[name]默认为本文件
:{range}r[ead] [++opt] [name] 将文件[name]中的{range}范围内的文本复制到当前光标下,不指定[name]默认为本文件
:{range}r[ead] [++opt] !{cmd} 执行一条shell指令将指令的结果复制到当前光标下
:edit 编辑当前文件。当文件在 Vim 之外被修改时,此命令可用于重新编辑当前文件。执行此命令必须当前文件已经保存了
:ar[gs] 显示文件参数列表,当前文件用方括号括起。
:ar[gs] [++opt] [+cmd] {arglist} 将 {arglist} 定义为新的参数列表并编辑其中的第一个文件。丢弃当前缓冲区的所有修改。

看起来非常乱,但是实际上[++opt]和[+cmd]选项比较少用大多数可以省略。以后再讲这两个选项。比如:
<cr>表示回车

:w<cr> 保存当前文件
:w test<cr> 将当前缓冲区保存到test文件中
:e test<cr> 编辑test文件

范围range

其中的[range]和{range}是指一个范围,范围的制定有以下这几种方式:

{number} 第{number}行
. 当前行
$ 最后一行
% 整个缓冲区
't 标记t的那一行
/{pattern}/ 向下搜索到{pattern}的那一行
?{pattern}? 向上搜索到{pattern}的那一行
/ 向下搜索到上一次搜索的内容的那一行
? 向上搜索到上一次搜索的内容的那一行

例子:

15,$w test<cr> 从15行到最后一行保存到test文件中
%w test<cr> 和w test<cr>一样
?test?,/node/w test<cr> 将向上搜索到test的那行,到向下搜索到node那行写入到test文件中
.,$w test<cr> 或者缩写为,$w test<cr>将当前行到最后一行保存到test中

文本操作指令

:[range]y[ank] [x] 将范围[range]中的文本复制到x寄存器中,[range]默认为当前行,x默认为0
:[range]d[elete] [x] 将范围[range]中的文本剪切到x寄存器中,[range]默认为当前行,x默认为"
:[range]co[py] {address} 将[range]中的文本复制到{address}行下
:[range]m[ove] {address} 将[range]中的文本移动到{address}行下

这些命令比较简单就不做例子了,接下来看比较重要的:

:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
将[range]范围内的搜索到的{pattern}替换成{string},没有指定[range]默认为本行,如果指定[count]但是没指定[range]默认从本行向下替换[count]行
如果指定[count]并且[range]也指定了,是从[range]从最后一行向下替换[count]行
其中[flags]可以指定:
& 和上次的选项一样
c 询问确认每一个替换
g 替换所有(如果不指定此选项默认一行只替换一个)
i 关闭大小写敏感
I 开启大小写敏感
n 不做真正的替换,显示一共搜索到多少个符合{pattern}的字符串例子:
:%s/\v(foo|bar)/test/g 此文件所有foo和bar替换成test
:3,$s/(foo)//g 将3到最后一行的(foo)删除掉,注意这里没有开启very magic模式所以()没有特殊意义
:%s/\v\a+//gn 显示此文件有多少个单词
:s/\v\d+//gn 显示当前行有多少数字
:s/\v(foo|bar)/\1ar/g 将此行出现的foo和bar后面加上ar高级用法:
在{string}中如果开头写\=此时就不是简单的替换文本功能了,\=后面写的会被当作vimscript语句执行,返回值被替换出来,返回值必须是string,数字会自动
转化为string,你可以用submatch()函数获取捕获组的内容例如:
:%s/\v(foo|bar)/\={"foo":"bar","bar":"foo"}[submatch(1)]/g
此命令用于将文件中所有的foo和bar互换,原理是用{"foo":"bar","bar":"foo"}创建一个字典,每一个key对应要替换的内容value,然后用[submatch(0)]
索引字典的key中的value
:s/\v<test>/\=toupper(submatch(0))/g
将此行test单词全部大写,<是单词开头,>是单词末尾,详细请看教程3。toupper是vim内置函数用来将字符串中出现的字母变为大写

对于{pattern}请看教学3

:[range]g[lobal]/{pattern}/[cmd]
将[range]范围内搜索到{pattern}的行执行一条[cmd]指令,[range]默认为全文件,[cmd]默认为print指令例如:
:g/foo/d 将整个文件匹配到foo的行删除
:g/bar/y A 将整个文件匹配到bar的行累加复制到A寄存器

有关寄存器的操作请看教学2

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

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

相关文章

制作个人免费网站展示设计设计学校

在 C 中&#xff0c;operator"" 是用户定义字面量&#xff08;User-Defined Literals&#xff09;的一部分&#xff0c;它允许程序员扩展现有的字面量类型或者创建新的字面量类型。用户定义字面量是在 C11 标准中引入的特性&#xff0c;主要用于提供更易读、更具表达…

使用.NET标准库实现多任务并行处理的详细过程 - 实践

使用.NET标准库实现多任务并行处理的详细过程 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&quo…

下载类网站做多久才有流量郴州网红

4000 还是E2140&#xff1f;两大人气CPU对决互联网 发布时间&#xff1a;2009-04-21 01:31:37 作者&#xff1a;佚名 我要评论今夏攒机&#xff0c;双核处理器无疑是网友们的第一选择。由于Intel和AMD的大力推广&#xff0c;双核处理器的价格目前已经跌到了一个大众消费…

完整教程:Redis的java客户端(SpringDataRedis)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

模型训练中 平均损失值和平均准确率的深入理解

aver_loss 总损失的计算 对于求平均损失来说 需要先求总损失 而求总损失 就需要求一个批次中的损失 对于一个bs来说 损失的计算是利用 loss=criterion(out,labels)计算得出 而criterion 使用的nn.crossentropy 得出来…

一篇了解 Git 运用方式

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

现在有什么网站做设计或编程兼职域名自动更新中

目录 关键词平台说明一、VFB1.1VFB是什么1.1VFB的好处1.2VFB的坏处 二、VFB在ECU内部的描述2.1Components2.2 Port-Interfaces2.3 Port2.4 Compositions 关键词 嵌入式、C语言、autosar、VFB 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C&#xff0…

torch.max函数在分类问题中的使用 学习

适用于在pytorch的张量上,求某一维度的最大值。 一般在模型测试阶段,求模型预测输出类别的时候使用。 假设是10分类问题,比如mnist 对于一个批次的输入 images 将它传入net(images) 会得到输出out(bs,10) 但是第二个…

手机p2p网站江西省网站建设公司

教程介绍 旨在降低网络防范黑客的入门门槛&#xff0c;适合所有中小企业和传统企业。罗列常见的攻击手段和防范方法&#xff0c;让网站管理人员都具备基本的保护能力。Python 编程的简单实现&#xff0c;让网络运维变得更简单。各种黑客工具的理论和原理解剖&#xff0c;让人知…

网站开发人力成本电子商务营销方案

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

网站开发实训总结致谢网站源码怎么用

来源&#xff1a;非正式组织概要&#xff1a;在Yann LeCun、Yoshua Bengio和Geoffrey Hinton三巨头nature深度学习综述《deep learning》文章中提到&#xff0c;这段期间神经网络模型被主流的计算机视觉和学术界所抛弃。一、前言深度学习的发展大致分为这么几个学期&#xff1a…

vultr做网站怎么样WordPress登录提醒

redis设置&#xff1a;修改redis服务器的配置文件vim /usr/local/redis/bin/redis.confbind 0.0.0.0 protected-mode no重新启动redissystemctl restart redis.service #重新启动服务注意&#xff1a;服务器的话需要设置安全组开放端口1.导入依赖org.springframework.boot …

react native 国际化 react-i18next 和 i18n,运用高级组件的形式。 - 指南

react native 国际化 react-i18next 和 i18n,运用高级组件的形式。 - 指南2025-09-24 12:57 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x:…

godot3.6字典遍历

godot3.6字典遍历for key in Global.dataJson["game"]:if Global.dataJson["game"][key]["status"] == "在看":game_watch_count+=1

国产DevOps工具链崛起:Gitee领衔的本土化技术生态全景解读

国产DevOps工具链崛起:Gitee领衔的本土化技术生态全景解读 在全球数字化转型加速的背景下,企业技术团队正积极寻求高效、安全的软件开发与运维解决方案。DevOps(开发运维一体化)作为提升软件交付效率的关键实践,正…

安装 elasticsearch-9.1.4的 IK分词器

前提 IK 分词器的文档中描述,在 Elasticsearch 中可以使用命令来安装操作,如下图所示操作过程如下挑选主节点的机器,操作如下[es@lab10 elasticsearch-9.1.4]$ bin/elasticsearch-plugin install https://get.infin…

已收录的网站不好优化wordpress企业营销

拆分Transformer注意力&#xff0c;韩国团队让大模型解码提速20倍AI正在颠覆AI上市不到两年&#xff0c;蜗牛游戏可能要退市了&#xff1f;世界人工智能大会结束了&#xff0c;百花齐放&#xff0c;但也群魔乱舞“串联OLED”被苹果带火了&#xff0c;比OLED强在哪里&#xff1f…

免费医院网站源码静态网页效果图

内容 本次入门内容是调用OpenAI的聊天机器人功能。 实现原理是使用OpenAI提供的API&#xff0c;通过向其发送请求来生成回复文本。 首先&#xff0c;导入ChatOpenAI类&#xff0c;这个类是用于实现与OpenAI聊天机器人交互的。 pip install langchain-openai2. 编写调试代码 …

react性能优化

memo 如下所示例子中,因为App内部状态的更新,总会牵连其无辜子组件Demo的更新。 const Demo = () => {console.log(Demo render);return (<div>我是子组件</div>); };const App = () => {console.…

从研发效能到知识中枢:Gitee Wiki如何重塑企业知识管理范式

从研发效能到知识中枢:Gitee Wiki如何重塑企业知识管理范式 在数字化浪潮席卷全球的当下,企业知识管理正经历着从简单文档存储向智能中枢的范式转变。某研发团队经过长达两年的实践探索,对Notion、Confluence和Gite…