我记不住的那些vim操作2

背景:最近在重新学习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行手动设置为 折叠

zf'a                      //   将当前行到'a标记的行 手动设置为 折叠

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.mzph.cn/news/230522.shtml

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

相关文章

【Python基础】生成器

文章目录 [toc]什么是生成器生成器示例生成器工作流程生成器表达式send()方法和close方法send()方法close()方法 什么是生成器 在Python中&#xff0c;使用生成器可以很方便地支持迭代器协议生成器通过生成器函数产生&#xff0c;通过def定义&#xff0c;但不是通过return返回…

亚马逊云科技re:Invent推出生成式AI技术堆栈及关键服务和工具

亚马逊云科技于29日推出“生成式AI技术堆栈”后&#xff0c;又在30日的re:Invent 2023大会上宣布了一系列支持这一全新堆栈的关键服务和工具。 亚马逊云科技数据和人工智能副总裁Swami Sivasubramanian在主题演讲中&#xff0c;将生成式人工智能与“超新星爆炸”进行了比较&am…

Python计算圆的面积,几何学技法大解析!

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是彭涛&#xff0c;今天为大家分享 Python计算圆的面积&#xff0c;几何学技法大解析&#xff0c;全文3800字&#xff0c;阅读大约15分钟。 在本文中&#xff0c;将深入探讨如何使用 Python 计算圆的面积&…

css画饼图

<template slot-scope"scope"> <div class"pie" :style"{--p: scope.row.rate}" style"--p:10;--b:10px;--c:#FFAB79;"> <!-- --p&#xff1a;这个变量应该包含百分比值作为一个数字&#xff08;不带%符号&#xff09;…

深入理解Python装饰器:丰富函数功能的强大工具

导语&#xff1a;装饰器是Python非常强大的功能之一&#xff0c;它们允许程序员修改或增强已有函数或方法的行为&#xff0c;而无需更改其本身的代码&#xff0c;这篇文章&#xff0c;让我们一起来看看&#xff08;我自己这里理解的也不是很透彻&#xff09; ----------更正---…

ansible远程操作主机功能和自动化运维

ansible 两个功能&#xff1a;1、远程操作主机功能 2、自动化运维&#xff08;play 剧本 yaml&#xff09; 简述&#xff1a; 是基于python开发的配置管理和应用部署工具。在自动化运维中&#xff0c;现在是异军突起。 Asible能批量配置&#xff0c;部署&#xff0c;管理上千…

【从零开始学习JAVA集合 | 第一篇】深入解读HashMap源码(含面试题)

目录 目录 前言&#xff1a; HashMap简介&#xff1a; HashMap的常用常量和变量&#xff1a; HashMap的重要考点&#xff1a; HashMap的存储过程&#xff1a; HashMap的扩容过程&#xff1a; HashMap的初始化&#xff1a; 常见面试题&#xff1a; 总结&#xff1a;…

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

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

「Verilog学习笔记」交通灯

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 timescale 1ns/1nsmodule triffic_light(input rst_n, //异位复位信号&#xff0c;低电平有效input clk, //时钟信号input pass_request,output wire[7:0]clock,output reg…

使用Alpha Vantage API和Python进行金融数据分析

Alpha Vantage通过一套强大且开发者友好的数据API和电子表格&#xff0c;提供实时和历史的金融市场数据。从传统资产类别&#xff08;例如股票、ETF、共同基金&#xff09;到经济指标&#xff0c;从外汇汇率到大宗商品&#xff0c;从基本数据到技术指标&#xff0c;Alpha Vanta…

扫雪铲冰,绿萝护航平安出行

为保护行人出行安全&#xff0c;确保道路干净整洁&#xff0c;绿萝党员志愿者带头行动&#xff0c;号召志愿者积极参与扫雪铲冰。2023年12月16日&#xff0c;绿萝志愿服务队与拱辰集体林场携手在昊天碳中和公园开展了志愿扫雪活动。 行动是最好的融雪剂。大雪过后的道路是最为寒…

自动驾驶TPM技术杂谈 ———— 交通事件分类与编码

文章目录 介绍交通事件分类交通事件分类顺序码交通事故交通灾害交通气象路面状况道路施工活动重大事件其他 介绍 1. 交通事件 —— 由于人、车辆、设施、环境之间的不协调导致正常交通秩序的突发性混乱事件。  2. 交通管制 —— 公安机关交通管理部门根据法律、法规&#xff0…

2.1 数据操作

声明&#xff1a; 注意&#xff01;&#xff01;&#xff01; 本博客仅用于本人学习笔记作用&#xff0c;所有资料来源都来自于李沐大神&#xff0c;博客中图片为沐神书上的图片。如有侵权&#xff0c;请联系本人删除&#xff0c;谢谢。 资料来源&#xff1a;https://zh-v2.d2…

什么是通讯芯片?通讯芯片又分什么种类?

通讯芯片是指在通讯系统中起到连接和传输信号的重要组成部分。根据通讯芯片的功能和应用,可以将其分为以下几类: 1、收发器芯片 2、窄带中频放大器芯片 3、卫星接收器LNB芯片 4、电话机芯片 5、压缩扩展器芯片 以上是通讯芯片的一些分类&#xff0c;随着通讯技术的不断发展…

patchless amsi学习(中)

DR7 DR7被称为“调试控制寄存器”&#xff0c;允许对每个硬件断点进行精细控制。其中&#xff0c;前8位控制是否启用了特定的硬件断点。偶数位&#xff08;0、2、4、6&#xff09;称为L0-L3&#xff0c;在本地启用了断点&#xff0c;这意味着仅在当前任务中检测到断点异常时才…

接口自动化测试实战教程

实现思路 使用excel管理用例用例信息&#xff0c;requests模块发送http请求&#xff0c;实现了记录日志&#xff0c;邮件发送测试报告的功能 目录结构如下&#xff1a; 下面直接上代码&#xff1a; 统筹脚本 # -*- coding:utf-8 -*-import osfrom interface import Interfa…

Android Termux安装MySQL数据库并通过内网穿透实现公网远程访问

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备&#xff0c;尽管最初并非设计为服务器&#xff0c;但是随着技术的进步我们可以将Android配置为生产力工具&#xff0c;变成一个随身…

【MongoDB】--MongoDB的Sort排序问题

目录 一、问题背景描述1.1、问题背景1.2、问题分析 二、建立索引支持深度翻页查询2.1、调整sort排序的内存限制【不建议】2.2、创建索引2.3、拓展--组合索引什么时候失效 二、聚合查询解决深度翻页查询 一、问题背景描述 1.1、问题背景 现实系统页面翻页到20000页之后&#x…

Improving IP Geolocation with Target-Centric IP Graph (Student Abstract)

ABSTRACT 准确的IP地理定位对于位置感知的应用程序是必不可少的。虽然基于以路由器为中心(router-centric )的IP图的最新进展被认为是前沿的,但一个挑战仍然存在:稀疏IP图的流行(14.24%,少于10个节点,9.73%孤立)限制了图的学习。为了缓解这个问题,我们将目标主机(ta…

【LeetCode刷题笔记(8-2)】【Python】【接雨水】【单调栈】【困难】

文章目录 引言接雨水题目描述提示 解决方案2&#xff1a;【单调栈】结束语 【接雨水】 【LeetCode刷题笔记&#xff08;8-1&#xff09;】【Python】【接雨水】【动态规划】【困难】 引言 编写通过所有测试案例的代码并不简单&#xff0c;通常需要深思熟虑和理性分析。虽然这…