在工程中最常用的 vim使用技巧

  • 学习交流加(可免费帮忙下载CSDN资源):
  • 个人微信: liu1126137994
  • 学习交流资源分享qq群1(已满): 962535112
  • 学习交流资源分享qq群2: 780902027

文章目录

  • 1、vim编辑常用快捷键
  • 2、文件索引工具( cscope-indexer)
    • 2.1 利用cscope-indexer建立源码文件索引关系
    • 2.2 在vim中快速进入到函数定义的位置
    • 2.3 在vim中快速找到函数被调用的位置
    • 2.4 在vim中快速进入到文件开头或者结尾
    • 2.5 在vim中快速替换字符串
  • 3、总结

本文记录vim编辑器的代码编辑常用快捷键与在vim中如何进行函数跳转等快捷操作。可以查看右侧目录快速找到你所需要的内容。

主要学习以下内容:

  • .vimrc配置文件
  • cscope-indexer 文件索引组件
  • 使用上述两个组件更加快捷的编辑代码

1、vim编辑常用快捷键

当我们使用vim打开一个文件的时候,刚进到文件,是处于命令行模式(就是无法编辑代码)。

当按下键盘上的 i 或者 a 都可以进入编辑模式。进入编辑模式就可以移动光标进行代码编辑。但是vim中的编辑模式,很不好编辑,比如我们想要复制一行内容到另一行,还要用鼠标右键进行复制粘贴。这很不方便。但是不是在编辑模式下,也就是去命令行模式下,可以有一些快捷键来满足我们的一些快捷的需求。

在编辑模式下按下键盘上的 Esc 按键进入到命令行模式。在命令行模式下,有如下快捷键(注意一定是命令行模式):

  • 拷贝某一行的内容:yy (让鼠标的光标在某一行停留,连续按下键盘上的 y 两次,即可复制该行的内容)
  • 剪切某一行的内容:dd (让鼠标的光标在某一行停留,连续按下键盘上的 d 两次,即可剪切该行的内容,剪切后该行的内容消失,相当于删除)
  • 粘贴:p (当执行完yy或者dd后,将光标移动到你想粘贴的位置,按下p,即可粘贴内容)
  • 拷贝多行的内容: 按下v + 光标移动选中一些行,选好后松开v,然后按下y,即可拷贝选中的行的内容。
  • 剪切多行的内容:按下v + 光标移动选中一些行,选好后松开v,然后按下d,即可剪切选中的行的内容。剪切后,选中的内容消失,相当于删除。
  • 列模式:ctrl + v 后,移动光标可以选择列的内容
  • 删除:dd可以看成是删除单独行,v + 光标移动选中内容再按下d可以看成是删除多行内容。
  • 显示行号:进入命令行模式下,按下Shift + :,然后输入set nu
  • 去掉行号:进入命令行模式下,按下Shift + :,然后输入set nonu

2、文件索引工具( cscope-indexer)

使用这个cscope-indexer工具,可以使用宋老师提供的 .vimrc
配置文件(点击下载 .vimrc 配置文件点击下载),或者你自己去网上搜一下看如何配置。下载好之后将它拷贝到你的Linux系统的home目下(~ 目录下),替换你原来的配置文件。

然后还需要下载cscope-indexer工具:$ sudo apt install cscope

2.1 利用cscope-indexer建立源码文件索引关系

在一些大工程中,如果你想去查看函数的定义位置,或者找到调用该函数的位置,在vim中,使用cscope-indexer工具比较好用。

比如我想查看我的内核源码,我就需要先在内核源码的目录下,输入命令:

  $   cscope-indexer -r

这个命令就让内核目的所有文件都建立了一个索引。

2.2 在vim中快速进入到函数定义的位置

然后我们用vim打开一个文件。进入命令行模式。
输入Shift + : 进入可以手动输入命令的状态。然后输入:
在这里插入图片描述

回车!
就可以找到start_kernel函数的定义位置。可能有多处定义位置,输入数字选择进入到哪一个定义的函数位置。

或者使用如下快捷键也可以达到上述的效果:

ctrl + \ 抬起来后按下g  前提是光标在start_kernel处放着

2.3 在vim中快速找到函数被调用的位置

输入Shift + : 进入可以手动输入命令的状态。然后输入:
在这里插入图片描述

或者使用如下快捷键也可以达到上述的效果:

ctrl + \ 抬起来后按下 c ,前提是光标在该函数处

2.4 在vim中快速进入到文件开头或者结尾

光标在某一处,如何快速移动到文件的末尾:命令行模式下,大写打开,按下G。光标在某一处,如何快速移动到文件的开头:命令行模式下,小写打开,按下gg。

2.5 在vim中快速替换字符串

如何替换某一个文件中的一个字符串?

进入命令行模式,输入Shift + : 进入可以手动输入命令的状态。然后输入:
在这里插入图片描述

其中ostr是想要替换掉的字符串,nstr是新字符串。

或者使用如下快捷键也可以达到上述的效果:

ctrl + \ 抬起来后按下r 然后将ostr换成原始字符串,nstr换成新字符串

3、总结

学会使用vim。

学习探讨加个人:
qq:1126137994
微信:liu1126137994

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

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

相关文章

动态规划过程

动态规划过程应用背包问题:分享一下 有一个背包,容量是4磅,现有如下产品 1)要求达到的目标为装入的背包的总价值最大,并且要求重量不能超出 2) 要求转入的物品不能重复 思路分析:算法其实是模型建立的过程 …

Know more about RAC GES STATISTICS

GES 全称为Global Enqueue Services是RAC中重要的全局队列锁服务,V$GES_STATISTICS 动态性能视图汇聚了主要的GES STATISTICS 统计信息。为了更好地理解GES STATISTICS ,我们可以通过下表理解这些统计项的含义: V$GES_STATISTICS Reference…

【剑指offer - C++/Java】5、用两个栈实现队列

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 牛客网题目链接:用两个栈实现队列 文章目录1、题目分析2、代码Java代码:C代码3、总结题目描述: 用两个栈来实现一…

【剑指offer - C++/Java】6、旋转数组的最小数字

题目链接:旋转数组的最小数字 文章目录1、题目描述2、题目分析3、代码3.1 Java代码3.2、C代码4、总结1、题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小…

求一个有限长度字符串 最长的有序可重复字符串长度

求一个有限长度字符串 最长的有序可重复子串package acm;/*** author qxl*/ public class SequenceCharMax {/*** 输入一可重复的整数数组,求最长升序数组长度** 比如:* 输入:[1, 2, 3, 4]* 输出:4* 输入:[1, 5, 2, 3,…

发消息给非windows窗体程序

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; var WM_SHUTDOWN_THREADS: Cardinal; //无符号32位 type TForm1 class(TForm) Button1: TButton; Button2: TButton; Memo1: TMem…

设计模式-责任链模型

责任链模式场景: OA审批系统 CEO 审批项目 经费 500万<x ≤\leq≤ 1000万总监 审批的经费 300万 < x ≤\leq≤ 500万总监秘书 审批的经费 100万< x ≤\leq≤ 300万研发经理 审批的经费 50万 <x ≤\leq≤ 100万 传统方式 是 (接收到请求后&#xff0c;根据相应金额&…

【OS学习笔记】三 计算机的启动过程

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 上一篇文章迈进了汇编的大门&#xff0c;点击链接查看上一篇文章&#xff1a;汇编语言和汇编软件 上一篇文章大概学会以下内容&#xff1a; 了解汇编…

sm115

sm115 sm115 for firefox 作者: clowwindy版本: 0.4安装地址: https://addons.mozilla.org/zh-CN/firefox/addon/235279/ 使用说明: Firefox安装本扩展后&#xff0c;115在高峰时段也会直接显示下载链接&#xff0c;不需要使用优蛋。 点击“继续提取”按钮&#xff0c;可以再…

从zip中读取文件 合并到指定的文件中

从zip中读取文件 合并到指定的文件中引入 commons-io 版本可以选择更高的版本 <dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency>具体代码如下&#xff1a;…

【OS学习笔记】四 什么是虚拟机

虚拟机是软件 对于第一次听说虚拟机&#xff08;Virtual Machine&#xff0c;VM&#xff09;的人来说&#xff0c;可能以为还要再花钱买一台计算机&#xff0c;这恐怕是他们最担心的。所谓虚拟机&#xff0c;就是在你的计算机上再虚拟出另一台计算机来。这台虚拟出来的计算机&…

TCP/IP协议族之运输层(TCP流量控制和拥塞控制 [1])

TCP的流量控制 1. 利用滑动窗口实现流量控制 如果发送方把数据发送得过快&#xff0c;接收方可能会来不及接收&#xff0c;这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快&#xff0c;要让接收方来得及接收。 利用滑动窗口机制可以很方便地在TCP连接上实现…

英语词源记忆法

英语词源记忆法后续持续更新中

【OS学习笔记】五 VirtualBox的下载、安装和配置

上一篇文章学习了&#xff1a;计算机的启动过程&#xff08;点击链接查看上一篇文章&#xff09; 今天来接着上一篇文章&#xff0c;解决我们学习中的实验环境问题。 参考&#xff1a;X86汇编语言-从实模式到保护模式。作者李忠。纯学习笔记。如有侵权请联系我删除 1、下载O…

iframe透明

<iframe allowtransparency"true" src"A.html"></iframe> A.html body { background-color:transparent; } 转载于:https://www.cnblogs.com/mattins/archive/2010/10/13/1850098.html

spring体系思维导图

spring体系思维导图1. spring 思维导图2. springboot 思维导图3. springcloud 思维导图之前整理的&#xff0c;后续持续更新中1. spring 思维导图 2. springboot 思维导图 3. springcloud 思维导图

【数据结构与算法-java实现】一 复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?

今天开始学习程序的灵魂&#xff1a;数据结构与算法。 本文是自己学习极客时间专栏-数据结构与算法之美后的笔记总结。如有侵权请联系我删除文章。 我们都知道&#xff0c;数据结构和算法本身解决的是“快”和“省”的问题&#xff0c;即如何让代码运行得更快&#xff0c;如何…

sleep和wait的区别

考中2次了&#xff0c;再错第三次&#xff0c;我改姓&#xff01;天天笔试面试连轴转&#xff0c;查错的心情都没有&#xff01;不能再笨下去了&#xff01; from&#xff1a;http://nneverwei.javaeye.com/blog/494280 http://zhidao.baidu.com/question/75503928.html?frala…

idea模板

idea模板1.类注解模板2.方法注解模板3.自定义代码生成模板每次下载新版本的idea 或者换笔记本都需要重新&#xff0c;配置注解&#xff0c;而且从网上找了很多都或多或少有问题&#xff0c;每次要花费一些时间配置&#xff0c;这里整理一下。自定义代码生成模版&#xff0c;设置…