我记不住的那些vim操作2

news2024/10/7 4:25:53

背景:最近在重新学习vi/vim,发现这个编辑器的用法真是太灵活了,所能掌控的也太多了,这次学习了一些之前没有学习过的内容,之前都是移动鼠标、编辑、复制、粘贴、保存等等(点我查看),本次将介绍 标签、区域、跳转、选项页、收缩/展开代码、文件浏览等。

1.标签marks

标签用于记录你当前光标的位置,这样有利于你快速返回到某个位置,但这种标签不会在屏幕上显示。文件内部的区域可以使用a-z,多个文件的区域可以使用A-Z,还有一些特殊的标签,例如:反向跳或向回跳,使用两个单引号即可 ''

比如:我们直接在某个文件的某一行mA,然后:q 然后输入vim后,然后按 'A即可打开原来的文件。

我们可以使用a-z在某个文件中做标签marks,

CommandDescription
ma在当前光标所在地方进行标记,在m是marks的缩写,而这个标记是a
'a跳到a标记这行的首字母的位置,这是和反引号`a 的主要区别
`a跳到a标记这行的那一列的位置,例如:之前标记了第二行第三列,此时会回到第二行第三列
d'a删除从当前行和a标记的那个行的整个区域,包括当前行和a所指向的那行,即当前行->a标记的行的区域,或从a标记的行 到 当前行的区域
d`a删除从当前行当前列 到 a标记的那个行那个列的整个区域,或从a标记的那个行那个列到 当前行当前列  
c'a改变从当前行到a标记的那一行的内容,亦或是从a标记的那一行到当前行的内容,然后输入变更的文字即可
c`a改变从当前行当前列 到a标记的那一行那一列的内容,然后输入变更的文字即可
y'a复制当前行到a标记的那一行的内容,或a标记的那一行到 当前行
y`a复制从当前行当前列 到a标记的那一行那一列的内容,或从 a标记的那一行那一列到当前行当前列
:marks查看所有标记
]'下一个标记的那一行的行首
['上一个标记
]` 下一个标记的那一行那一列
[` 上一个标记的那一行那一列

上面是以a标记进行举例,同理a-z都适用

特殊标记

`.跳转至当前文件的最后被修改的那一行
`"跳转至当前文件上一次退出的那一行
`0跳转至上一次已退出的文件的 被修改的那一行
''跳转至上一个位置的那一行
``跳转至上一个位置的那一行那一列
`[ or `]跳转到被修改或被复制的区域的开头或末尾
`< or `>跳转至可视化选项的开头或末尾

删除标记

 :delmarks或:delm命令,其实并不需要删除,只需要重新定义即可即ma或等等

CommandDescription
:delm a删除标记 a
:delm a-d删除标记 abcd
:delm abxy删除标记 abxy
:delm aA删除标记 aA
:delm!删除当前buffers中的所有a-z的标记

2. 区域

'<   可视化选择模式下,选择区域的开始的地方

'>   可视化选择模式下,选择区域的结束的地方

例如:

v进入可视化按字符的选择模式,然后j或l进行选择,此时输入 :  会在底部看到'<,'> 代表当前选择的一个区域

:'<,'>d                //对所选区域进行删除

:'<,'>w abc.txt    //对所选区域如没有文件则新建文件并写入,如存在文件则进行强行写入到abc.txt文件中,或追加到abc.txt

:'<,'>w! abc.txt 强制写入到abc.txt

:'<,'>w>> abc.txt 追加到abc.txt

:'<,'>s/old/new/g    //对所选区域进行替换,由old替换为new

:1,10s/old/new/g    //对第一行到第十行进行替换,由old替换为new

:s/old/new/g           //对当前行进行替换,由old替换为new

:%s/old/new/g        //对所有的行进行替换,由old替换为new

:w my.txt                //默认是将所有行写入到my.txt中

:'a,'bs/old/new/g     //对标签a到标签b的区域进行替换,由old替换为new

:'a,'bd                     //对标签a到标签b的区域进行删除

:'a,'bw abc.txt         //对标签a到标签b的区域进行写入到abc.txt

:'a,'bw >> abc.txt    //对标签a到标签b的区域进行追加到abc.txt    

RangeDescriptionExample
21第21行:21s/old/new/g
1第一行:1s/old/new/g
$最后一行:$s/old/new/g
.当前行:.w single.txt
%所有行:%s/old/new/g
21,25从第21行到第25行:21,25s/old/new/g
21,$从第21行到最后一行:21,$s/old/new/g
.,$从当前行到最后一行:.,$s/old/new/g
.+1,$从当前行的下一行到最后一行:.+1,$s/old/new/g
.,.+5从当前行到当前行后的5行:.,.+5s/old/new/g
.,.5同上,从当前行到当前行后的5行:.,.5s/old/new/g
:1,.-1d删除第一行到当前行的前一行的内容
:.+1,$d删除当前行下一行到最后一行的内容
:21,25co 30复制第21行到第25行到第30行
:21,25m 30移动第21行至第25行到第30行
:g/old/列出匹配old的所有行

3.跳转

在单个文件中进行跳转,这些跳转信息保存到jumplist中,是一个栈,可以通过:jumps查看栈中的跳转信息。

ctrl-o  将光标向上跳

ctrl-i   将光标向下跳,或使用tab键

:jumps                   查看跳转列表

:clearjumps           清除跳转列表

注意: 普通的hjkl不会被记录到jumplist中,同时 底部输入命令: 42回车像这种也不会被记录到jumplist中,而是 nG会被记录,例如: 42G 转到第42行

还有哪些能修改jumplist呢?

第一种是: 搜索或查找   /pattern 从当前行向下面查找 或   ?pattern从当前行向上面查找

第二种是: *或#,用于查找当前这个词汇,*向下进行查找,#向上进行查找

第三种是: %  可以在大括号、中括号之间进行跳转

第四种是:Any inter-file navigation like gf

4.选项页

vim -p abc.txt xyz.txt  同时在不同的标签中打开多个文件

:tabnew                          // 创建一个新的空白的未命名的标签

:tabnew filename           //  在标签中打开一个filename文件

:tabe[dit]   filename       //  在一个新的选项卡打开filename文件

:tabf[ind]   filename       //  在一个新的选项卡找filename然后打开filename

:tabnext                         //  切换到下一个选项卡,或快捷键gt

:tabprev                         //  切换到上一个选项卡,或快捷键gT

:tabfirst                          //   切换到第一个选项卡

:tablast                          //    切换到最后一个选项卡

:tabclose                        //  关闭当前选项卡

:tabc[lose]   n                 //  关闭选项卡n,从1开始,tabc是缩写

:ntabc                            //   或是先输入 n 然后关闭选项卡

:tabo[nly]                        //  只保留当前选项卡,关闭其他选项卡         

ngt                                 //   切换到第n个选项卡,无需输入:,从1开始

:tabs                              //   查看所有的选项卡

:tabm[ove]  n                 //   将当前选项卡移动到第n个位置

:help tab-page-intro

:tabdo %s/foo/bar/g

5. 收缩/展开代码

收缩或展开代码的首字母都是z,从一侧看起来像折叠的报纸,这是为什么z开头。

折叠fold是一个记号,用于标记从哪一行开始到哪一行结束的区域为折叠fold,使用zf命令进行定义。

一共分为 6 种不同的折叠方式,一般默认是 手动manual 进行折叠的这种方式。

  • zd  移除当前光标的折叠
  • zD  递归的删除当前光标的折叠
  • zE  移除所有的折叠
  • zo  打开当前光标的折叠,可以看到当前的代码
  • zc  关闭当前光标的折叠,代码将会被折叠,无法看到
  • zR 打开所有的折叠,可以看到全貌的代码
  • zM 关闭所有的折叠,可以看到最简化的文件
  • za  对当前光标的进行打开fold和关闭fold的toggle开关
  • zO 递归的打开当前光标的折叠
  • zC 递归的关闭当前光标的折叠

我们可以输入命令:

: 1,10fold                //  选择从第一行到第十行进行折叠

: 1,10foldo[pen]     //   从第一行到第十行将折叠进行打开,可以看到代码

: 1,10foldc[lose]     //   从第一行到第十行将折叠进行关闭,将代码进行折叠

或 通过 可视化方式 v或V或<C-v>进行选择,然后 zf 即可。

或  zfj                       //  将当前行和下一行手动设置为 折叠

zf10j                    //  将当前行和以下10行手动设置为 折叠

6.NerdTree

安装NerdTree,我是在vim8版本及以上进行安装:

git clone https://github.com/preservim/nerdtree.git ~/.vim/pack/vendor/start/nerdtree
vim -u NONE -c "helptags ~/.vim/pack/vendor/start/nerdtree/doc" -c q

然后再.vimrc 中设置快捷键

nnoremap <C-t> :NERDTreeToggle<CR>

这样<C-t>就能快速呼出NerdTree,而不用手动再输入:NERDTreeToggle了。

<C-w>h        光标向左移动

<C-w>l         光标向右移动

<C-w>w       光标左右移动

?                显示帮助信息

分为 文件节点、目录节点、标签、目录树导航、文件系统、树过滤、其他快捷键

参考文献:

1. Vim documentation: fold

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

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

相关文章

设计模式-单例设计模式详解

生命无罪&#xff0c;健康万岁&#xff0c;我是laity。 我曾七次鄙视自己的灵魂&#xff1a; 第一次&#xff0c;当它本可进取时&#xff0c;却故作谦卑&#xff1b; 第二次&#xff0c;当它在空虚时&#xff0c;用爱欲来填充&#xff1b; 第三次&#xff0c;在困难和容易之…

一文图解 Transformer,小白也看得懂(完整版)

原作者&#xff1a;Jay Alammar 原链接&#xff1a;https://jalammar.github.io/illustrated-transformer 1.导语 谷歌推出的BERT模型在11项NLP任务中夺得SOTA结果&#xff0c;引爆了整个NLP界。而BERT取得成功的一个关键因素是Transformer的强大作用。谷歌的Transformer模型最…

043.Python异常处理_自定义上下文管理器

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

ESP32 核心闪存损坏

问题描述&#xff1a;使用Platform 开发ESP32-S3 报错通过串口打印报错提示为核心闪存损失具体报错如下。 ELF file SHA256: 25c739c3d81d8f15 E (183) esp_core_dump_flash: Core dump flash config is corrupted! CRC0x7bd5c66f instead of 0x0 Rebooting... ESP-ROM:esp32s3…

Python项目——表白照片墙

1、介绍 利用女神的照片&#xff0c;组成女神的名字&#xff0c;向女神表白。如下图&#xff1a; 原理&#xff1a;获取每个像素点的颜色&#xff0c;白色不贴图&#xff0c;黑色贴图。 2、工具 语言&#xff1a;python3.11编译器&#xff1a;PyCharm包&#xff1a;pygame p…

【IOS开发】传感器 SensorKit

资源 官方文档 https://developer.apple.com/search/?qmotion%20graph&typeDocumentation SensorKit 使应用程序能够访问选定的原始数据或系统从传感器处理的指标。 步骤信息加速度计或旋转速率数据用户手腕上手表的配置物理环境中的环境光有关用户日常通勤或旅行的详细…

java SpringCloud版本b2b2c鸿鹄云商平台全套解决方案

使用技术&#xff1a; Spring CloudSpring BootMybatis微服务服务监控可视化运营 B2B2C平台&#xff1a; 平台管理端(包含自营) 商家平台端(多商户入驻) PC买家端、手机wap/公众号买家端 微服务&#xff08;30个通用微服务如&#xff1a;商品、订单、购物车、个人中心、支…

项目实操四-性能测试过程实时监控分析

这里写目录标题 一、JMeter性能测试技巧1、CSV文件驱动2、定时器a、泊松随机定时器b、固定定时器c、高斯随机定时器d、均衡随机定时器e、同步定时器f、固定吞吐量定时器g、精准吞吐量定时器 3、全局变量 - 跨线程数据传递4、Debug调试器5、JMeter执行机端口被占用 二、JMeter性…

Linux集群实用脚本

现有三台虚拟机&#xff0c;例如&#xff1a;node2、node3、node4 三台虚拟机配置了免密登录&#xff0c;安装了hadoop等软件。 相关集群实用脚本命令 统一执行jps命令 jpsall #!/bin/bash ​ for host in node2 node3 node4 doecho $host ssh $host jps done ​ 统一执行命…

JVM日常故障排查小结

前置知识 jstack简介 jstack是JVM自带的工具&#xff0c;用于追踪Java进程线程id的堆栈信息、锁信息&#xff0c;或者打印core file&#xff0c;远程调试Java堆栈信息等。 而我们常用的指令则是下面这条: # 打印对应java进程的堆栈信息 jstack [ option ] pid option常见选…

AI摄影绘画与PS优化:重塑数字艺术的未来

文章目录 《AI摄影绘画与PS优化从入门到精通》内容简介作者简介楚天 目录前言/序言 在科技日新月异的今天&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到我们生活的各个领域&#xff0c;包括艺术创作。AI摄影绘画和Photoshop&#xff08;PS&#xff09;优化是这个领…

[AI工具推荐]AiRestful智能API代码生成

智能API代码示例生成工具AiRestful 一、产品介绍二、如何使用1、第一步(必须):2、第二步(可选):3、第三步(智能生成): 三、如何集成到您的网站(应用)1、开始接入2、接入案例 四、注意点 一、产品介绍 AiRestful是一款基于智能AI的,帮助小白快速生成任意编程语言的API接口调用示…

中国经济增长:全球复苏的引擎

近年来&#xff0c;中国经济以其强劲的增长势头成为全球经济的重要引擎。中国的经济崛起不仅对自身国家发展具有重要意义&#xff0c;而且也对全球经济复苏和稳定有着积极影响。本文将从多个角度探讨中国经济增长对全球经济的影响及其作为全球复苏的引擎。 首先&#xff0c;中国…

基于SpringBoot的房屋租赁系统 附源码

基于SpringBoot的房屋租赁系统 附源码 文章目录 基于SpringBoot的房屋租赁系统 附源码 一.引言二.系统设计三.技术架构四.功能实现五.界面展示六.源码获取 一.引言 本文介绍了一个基于SpringBoot的房屋租赁系统。该系统利用SpringBoot框架的优势&#xff0c;实现了用户注册、登…

【C++】封装:练习案例-点和圆的关系

练习案例&#xff1a;点和圆的关系 设计一个圆形类&#xff08;Circle&#xff09;&#xff0c;和一个点类&#xff08;Point&#xff09;&#xff0c;计算点和圆的关系。 思路&#xff1a; 1&#xff09;创建点类point.h和point.cpp 2&#xff09;创建圆类circle.h和circle…

如何搭建企业管理系统Odoo并远程访问管理界面【内网穿透】

文章目录 前言1. 下载安装Odoo&#xff1a;2. 实现公网访问Odoo本地系统&#xff1a;3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件&#xff0c;是一个一站式全功能ERP及电商平台。 开源性质&#xff1a;Odoo是一个开源的ERP软件&#xff0c;这意味着企…

SearchWP WordPress高级网站内容搜索插件(包含所有专业扩展)

点击阅读SearchWP WordPress高级网站内容搜索插件(包含所有专业扩展)原文 SearchWP WordPress高级网站内容搜索插件是一个非常强大的工具&#xff0c;可以显着增强您网站的搜索功能。通过向网站访问者提供高度相关和精确的搜索结果&#xff0c;它可以有效地简化他们的搜索过程…

回归预测 | MATLAB实现IBL-LSSVM【23年新算法】逻辑优化算法优化最小二乘支持向量机的数据回归预测 (多指标,多图)

回归预测 | MATLAB实现IBL-LSSVM【23年新算法】逻辑优化算法优化最小二乘支持向量机的数据回归预测 &#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现IBL-LSSVM【23年新算法】逻辑优化算法优化最小二乘支持向量机的数据回归预测 &#xff08;多指标…

苹果个人开发者如何实现应用下载安装

作为苹果个人开发者&#xff0c;你可以为iOS设备用户提供应用程序&#xff0c;而用户将能够通过下载和安装这些应用来丰富他们的设备体验。本文将详细介绍个人开发者实现应用下载安装的步骤&#xff0c;包括开发和上架应用程序到App Store。 图片来源&#xff1a;苹果个人开发者…

【轮式移动机器人课程笔记3】移动机器人运动学简介

文章目录 写在前面L3 移动机器人运动学简介3.1 运动学概述3.2 研究机器人运动学的意义3.3 机器人运动的描述3.4 机器人正微分运动学3.5 机器人逆微分运动学3.6 总结 写在前面 前两节课介绍了移动机器人、机械手、类型&#xff0c;本节课重点讲解移动机器人运动学相关知识&…