Vim 函数跳转详解

回忆上节课内容🤔

#首先下载文本找到tomsawyer.txt
git clone http://gitee.com/overmind1980/oeasyvim.git
#然后把文本打开
cd oeasyvim
vi oeasy.java

括号间跳转 %

  • 当我们的鼠标在小括号内部时
    • 比如在 public static void main(String[] args) 中的 小括号(
      • 我们可以使用 % 跳转到括号对的前半部分
      • 然后我们可以使用 % 在这对儿括号的两个位置指间跳转
  • 这个 % 不但对于小括号有用,对于成对的大括号、中括号也都有用
    • 对于c语言的 / ... / 注释的头尾 ୧(﹒︠ᴗ﹒︡ )୨有用
    • 对于 #if,#ifdef,#else,#elif,#endif 也有用
    • 这个 % 不支持 [count]

图片描述

小括号跳转

图片描述

  • 方向

    • [ 往上
      • [( 进挨着的上一个(
    • ] 往下
      • ]) 近挨着的下一个)
  • 如果是大括号呢?

括号跳转

图片描述

  • [( 跳转到上一个没配对的 (

  • ]) 跳转到下一个没配对的 )

  • [{ 跳转到上一个没配对的 {

  • ]} 跳转到下一个没配对的 }

  • 支持 [count]

  • 向上就是[

  • 向下就是]

函数中的跳转

图片描述

  • 方向
    • [ 往上
      • [{ 紧挨着的上一个{
      • [[ 本块的第一行
    • ] 往下
      • ]} 近挨着的下一个}
      • ]] 本块的最后一行

注释的头尾

  • 注释跳转
    • [/[*上一个注释/* .... */的头
    • ]*]/下一个注释/* .... */的头

图片描述

函数间跳转

图片描述

  • 函数跳转
    • ]m下一个函数开头
    • ]M下一个函数结尾
    • [m上一个函数开头
    • [M上一个函数结尾
    • 支持 [count]
      • 3]m 可以往下跳到第 3 个函数开头
    • [m]m 这两个其实还挺好用的

跳到定义

图片描述

  • 找到本地定义
  • gd - goto global declaration

图片描述

  • 和 * 不一样的是它会往前找到第一个
  • [[ 的范围内的第一个

没有配对的 #if 宏定义

  • 这个是针对宏定义里面的内容来的
    • [# 上一个没有配对的 #if#else
    • ]# 下一个没有配对的 #else#endif

图片描述

标签跳转

#查找matchit.vim
sudo find / -name matchit.vim
# 把match.vim插件放到系统插件文件夹
sudo cp /usr/share/vim/vim81/macros/matchit.vim /usr/share/vim/vim81/plugin
#打开一个网页
vi oeasy.html

图片描述

  • 这个matchit可以支持标签的跳转
  • 比如在 <html> 处按下 % 就可以到配对的 </html>
  • 挺好玩的
  • 试试吧 🤪

总结

  • 括号间跳转

    • 成对括号间跳转 %
    • 不成对括号间跳转
      • [[ 跳转到本块第一行
      • ]] 跳转到本块最后一行
      • [{ 跳转到上一个的 {
      • ]} 跳转到下一个的 }
  • 函数间跳转

    • ]m 下一个函数开头
    • [m 上一个函数开头
    • ]M 下一个函数开头
    • [M 上一个函数结尾
  • #if#else#endif 没有配对的

    • [# 上一个没有配对的 #if#else
    • ]# 下一个没有配对的 #else#endif
  • 注释的头尾

    • [/[* 上一个注释 /* .... */ 的头
    • ]*]/ 下一个注释 /* .... */ 的头
  • 如果我想快速找到某个东西怎么办呢?🤔

  • 下次再说 👋

教程来源于Github,感谢overmind1980大佬的无私奉献,致敬!

技术教程推荐

快速上手Kotlin开发 -〔张涛〕

安全攻防技能30讲 -〔何为舟〕

检索技术核心20讲 -〔陈东〕

A/B测试从0到1 -〔张博伟〕

Python自动化办公实战课 -〔尹会生〕

MySQL 必知必会 -〔朱晓峰〕

说透低代码 -〔陈旭〕

大厂设计进阶实战课 -〔小乔〕

大型Android系统重构实战 -〔黄俊彬〕