本篇文章介绍 vim 的一些使用技巧:

  • 在程序代码中快速跳转
  • 在文件内跳转到变量定义处

在程序代码中快速跳转

在 vim 中查看代码文件时,可以使用下面命令在程序代码中快速跳转,提高效率。

  • %
    跳转到光标所在括号的另一个配对括号上,适用于小括号()、大括号{}、方括号[]。
    例如当前光标在左大括号 { 上,输入 % 命令,光标会跳转到配对的右大括号 } 上。
    这个命令也适用于C语言的条件编译宏,可以在配对的 #if、#ifdef、#else、#elif、 #endif 之间快速跳转光标。
  • [m
    跳转到当前光标往上的最近一个函数开头,停在左大括号上。
    如果光标在函数内,就是跳转到当前函数的开头左大括号。
    如果光标在函数外,则跳转到上面最近一个函数的开头左大括号。
  • [M
    跳转到当前光标往上的最近一个函数结尾,停在右大括号上。
    无论当前光标在函数内、还是函数外,都是跳转到上面最近一个函数的末尾右大括号。
  • ]m
    跳转到当前光标往下的最近一个函数开头,停在左大括号上。
    无论当前光标在函数内、还是函数外,都是跳转到下面最近一个函数的开头左大括号。
  • ]M
    跳转到当前光标往下的最近一个函数结尾,停在右大括号上。
    如果光标在函数内,就是跳转到当前函数的末尾右大括号。
    如果光标在函数外,则跳转到下面最近一个函数的末尾右大括号。
  • [{
    跳转到当前光标往上最近一个没有匹配的左大括号,停在左大括号上。
    例如光标在 if 语句内,则跳转到 if 语句开头左大括号。
  • ]}
    跳转到当前光标往下最近一个没有匹配的右大括号,停在右大括号上。
    例如光标在 if 语句内,则跳转到 if 语句末尾右大括号。
  • [(
    跳转到当前光标前面最近一个没有匹配的左小括号,停在左小括号上。
    例如光标在一个小括号 () 内,则跳转到左边最近的左小括号。
  • ]) 跳转到当前光标后面最近一个没有匹配的右小括号,停在右小括号上。
    例如光标在一个小括号 () 内,则跳转到右边最近的右小括号。

这些命令都可以在前面加上数字,表示跳转级数. 例如:

  • 3[m
    将跳转到当前光标往上的第三个函数开始处,停在左大括号上。
    如果光标在函数内,则当前函数是第一个函数,会再往上跳两个函数。
  • 3[{
    将跳转到当前光标往上的第三级大括号开始处,停在左大括号上。

可以使用 :help [( 命令查看 [( 的说明。% 的说明在 [( 的上面。
可以使用 :help [m 命令查看 [m 的说明。
其他命令的说明可以类似查看。

在文件内跳转到变量定义处

在当前文件内,可以使用下面命令来快速跳转到变量定义处。

  • gd
    在当前函数内查找当前光标下的单词,如果找到,就跳转到该单词在函数内第一次出现的地方。
    对局部变量来说,也就是跳转到变量定义处。
    如果光标下的单词对应全局变量,这个命令不会跳转到全局变量定义处,而是会跳转到函数内第一次用到该变量的地方。
    这个命令本身没有进行语法解析,只是简单的执行字符串搜索并跳转。在实际使用时可用来查找任意单词,不限于查找变量。
  • gD
    在当前文件内查找当前光标下的单词,如果找到,就跳转到该单词在文件内第一次出现的地方。
    对全局变量来说,也就是跳转到全局变量定义处。
    对局部变量来说,也能跳转到局部变量定义处。
    如果变量是在文件外定义,就只能跳转到当前文件内第一次用到该变量的地方。

实际测试,gd 命令只能在函数内搜索,不会跳转到全局变量定义处。gD 命令是在整个文件内搜索,可以跳转到全局变量定义处,也能跳转到函数内的局部变量定义处。

如果不确认要搜索的单词是全局变量,还是局部变量,统一用 gD 命令即可。如果变量是在当前文件内定义,gD 命令一定能跳转到文件内的变量定义处,比 gd 命令要方便。

可以用 :help gd:help gD 命令来查看帮助说明,这两个命令的帮助说明是相邻的。

vscode 快速调到定义处_vim技巧:在程序代码中快速跳转,在文件内跳转到变量定义处...相关推荐

  1. excel排名_表格技巧—如何在Excel中快速计算排名

    在利用excel统计成绩的时候,往往会使用它的排名,如果一个一个排会造成工作效率非常低,那么如何快速排名呢?今天我们和大家分享的就是如何在excel中快速计算排名. 首先打开一张我们需要排名的exce ...

  2. vs中列表分页符代码_电脑办公技巧Excel中Ctrl+K的使用技巧(十二)/Word2016中快速删除分页符与空白页的方法...

    ctrl+k是超链接的快捷键,你可以批量创建超链接,学会使用这个方法你可以快速在文件之间快速跳跃了,无比方便快捷,感兴趣的小伙伴一起看下去吧! 1.在Excel中打开另一个Excel文件(其他类型文件 ...

  3. 技巧:在Silverlight中如何访问外部xap文件中UserControl

    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://terrylee.blog.51cto.com/342737/87094 ...

  4. 两步实现在C代码中快速集成gtest进行单元测试

    我平时的技术支持工作主要是快速阅读和调试代码,没有太多的代测试和验证需求,所以对单元测试一直没有留意. 直到我开始从头写一些密码学的基本功能代码,例如各种哈希算法,分组密码算法,流密码算法,分组密码的 ...

  5. php要求输入是个数求平均值、_Excel表格技巧—如何在 Excel 中快速完成求和、平均值、百分比...

    我们平时在使用WPS表格进行日常办公时,经常需要制作各种各样的表格,今天来给大家介绍表格当中的基础运算,具体为求和.平均值.百分比的计算,学会了这些,基础的表格制作就难不倒你啦,一起来学习一下吧. ( ...

  6. 10个重构小技巧,去掉代码中的S味

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | https://urlify.cn/yme6Vz 本次我 ...

  7. php 如何宏定义,[PHP] PHP源码常用代码中的宏定义

    PHP源码常用代码宏定义: #define 宏名 字符串 #表示这是一条预处理命令,所有的预处理命令都以#开头.define是预处理命令.宏名是标识符的一种,命名规则和标识符相同.字符串可以是常数.表 ...

  8. [小技巧]ASP.NET Core中如何预压缩静态文件

    原文地址:Pre-compressed static files with ASP.NET Core 作者:Gunnar Peipman 译者:Lamond Lu 译文:https://www.cnb ...

  9. cmake编译多个文件夹_CMake应用技巧:在一个工程中编译运行多个文件

    CMake是最稳妥的C语言编译器了,但在Clion中使用与传统的微软C编译器并不一样,很多新手上手并不习惯使用,尤其是不了解如何像使用VisualStudio一样在同一个工程中新建源代码,那么如何在同 ...

最新文章

  1. ZZmsvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义
  2. Ice “Hello World”的实现
  3. 浏览器无法访问虚拟机的服务器
  4. ios 静态方法是否能被重写_小米新系统亮相,比苹果iOS更干净,21款手机支持升级...
  5. php监控系统,php 系统监控 | 学步园
  6. Django之ORM
  7. 部署Docker----解决删除none镜像问题
  8. 记一些Python(Pymysql)建表、增删改查等基础操作(小白适用)
  9. Python与自然语言处理搭建环境
  10. oracle 内部表连接方式,ORACLE 表连接方式
  11. jQuery插件编写,
  12. oracle数据库sqlloader,Oracle SQL Loader(sqlldr)
  13. python3.4 安装numpy报错_python安装numpy报错怎么解决
  14. 从Gauss-Newton算法到 LM算法 (详细推导及MATLAB实现、多自变量问题)
  15. 20个PCB快捷键操作,提升绘图效率
  16. 飞机大战-玩家飞机被击中
  17. Codeforces1575 D. Divisible by Twenty-Five(dp)
  18. 直播服务器不能正常运行,解决人人商城互动直播通信服务无法通信问题
  19. ppi 各代iphone_iPhone
  20. aix查看lv_AIX中的硬盘、PP、VG、LV、文件系统

热门文章

  1. .Net Core中的日志组件(Logging)
  2. 迁移后的Net Standard版本的类库测试和多平台项目实测
  3. 拥抱.NET Core系列:MemoryCache 缓存选项
  4. 体验 PHP under .NET Core
  5. 基于ZKWeb + Angular 4.0的开源管理后台Demo
  6. ASP.NET Core MVC四种枚举绑定方式
  7. MySQL在EF Core下的Scaffolding操作
  8. IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API
  9. 程序员求职面试三部曲之二:提高面试的成功率
  10. oracle listagg方法,Oracle实现字符串拼接和分离功能的方法(LISTAGG函数),oraclelistagg...