• 学习交流加(可免费帮忙下载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

在工程中最常用的 vim使用技巧相关推荐

  1. LaTeX中一些常用符号及编写技巧

    博客中阅读效果更佳哦:LaTeX中一些常用符号及编写技巧 希腊字母 小写形式 代码 大写形式 代码 α \alpha A \Alpha β \beta B \Beta δ \delta Δ \Delt ...

  2. ACM/OI中C++常用优化(实用/调试/技巧)代码(语法)

    一.C++万能编译头文件 #include<bits/stdc++.h> 从 #include <iostream> #include <cstdio> #incl ...

  3. Javascript中最常用的一些经典技巧

    1. οncοntextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键 <table border οncοntextmenu ...

  4. 开发中一些常用的css小技巧

    2019独角兽企业重金招聘Python工程师标准>>> 一.清除图片下方和两侧几像素的缝隙 例子复现: 需求结果: html结构: <div class="img-b ...

  5. ML之FE:特征工程中的特征拼接处理(常用于横向拼接自变量特征和因变量特征)(daiding)

    ML之FE:特征工程中的特征拼接处理(常用于横向拼接自变量特征和因变量特征) 目录 特征工程中的特征拼接处理(常用于横向拼接自变量特征和因变量特征) 输出结果 实现代码 特征工程中的特征拼接处理(常用 ...

  6. ML之FE:特征工程中常用的五大数据集划分方法(特殊类型数据分割,如时间序列数据分割法)讲解及其代码

    ML之FE:特征工程中常用的五大数据集划分方法(特殊类型数据分割,如时间序列数据分割法)讲解及其代码 目录 特殊类型数据分割 5.1.时间序列数据分割TimeSeriesSplit 特殊类型数据分割 ...

  7. ML之FE:特征工程中常用的一些处理手段(缺失值填充、异常值检测等)及其对应的底层代码的实现

    ML之FE:特征工程中常用的一些处理手段(缺失值填充.异常值检测等)及其对应的底层代码的实现 目录 特征工程中常用的一些处理手段(缺失值填充.异常值检测等)及其对应的底层代码的实现

  8. ios之Xcode工程中添加文件常用快捷键

    1.Xcode某个工程中添加文件 有两种方式: 方式一:"command"+"n",弹出添加文件对话框. 方式二:在需要添加文件的工程目录下右键,选择" ...

  9. [vue-cli] vue-cli工程中常用的npm命令有哪些

    [vue-cli] vue-cli工程中常用的npm命令有哪些 npm install:下载 node_modules 资源包的命令 ==思考问题:== 为什么下载资源包要用npm install? ...

最新文章

  1. webrtc android ndk,webrtc 针对 android 平台的编译和运行
  2. Ajax监测开始执行及结束执行
  3. mysql的多master调度_innodb中master线程的调度的算法改进(mysql 5.6.26)
  4. 【NLP】创建强大聊天机器人的初学者指南
  5. SUN JAVA面试笔试题
  6. FPGA基础之LUT详解
  7. curl put方法 测试http_HTTP接口调试利器!4.8万Star的HTTP命令行客户端!
  8. Linux下用dump实现备份和还原
  9. 香港科技大学TensorFlow速成(1)
  10. 如何理解什么是放射?
  11. Access denied for user 'root'@'localhost' Could not obtain connection
  12. jQuery增加删除修改tab导航特效
  13. 与大数据同行—学习和教育的未来 - 电子书下载(高清版PDF格式+EPUB格式)
  14. app invento2r wxbit版 快速开发简单蓝牙上位/蓝牙串口助手
  15. 52周存钱挑战2.0
  16. explain的使用
  17. FTP服务器、部署YUM仓库与NFS共享服务
  18. JAVA系列:SimpleDateFormat解析带T字符的时间格式( yyyy-MM-ddTHH:mm:sssZ )
  19. 最新华农c语言教材答案,华农C语言题目及答案完整版
  20. java毕业设计鸿鹄教育培训(附源码、数据库)

热门文章

  1. CSS之flex需要知道的一切(二)
  2. python xml添加命名空间_XML的命名空间与python解析方法
  3. python知识图谱可视化_知识图谱可视化
  4. python loadtxt_Python 数据科学入门2:Matplotlib
  5. Spring-boot(一)
  6. require与include的区别
  7. javascript 类型及类型判断
  8. mysql数据到导入导出
  9. VC返回文件所在的路径
  10. 设计模式学习笔记一——开篇