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

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

本文记录vim编辑器的代码编辑经常使用快捷键与在vim中如何进行函数跳转等快捷操做。能够查看右侧目录快速找到你所须要的内容。web

主要学习如下内容:vim

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

一、vim编辑经常使用快捷键

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

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

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

  • 拷贝某一行的内容: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

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

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

而后还须要下载cscope-indexer工具:$ sudo apt install cscope工具

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

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

好比我想查看个人内核源码,我就须要先在内核源码的目录下,输入命令:.net

$   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换成新字符串

三、总结

学会使用vim。

学习探讨加我的: qq:1126137994 微信:liu1126137994