oeasy教您玩转vim - 32 - # 函数跳转

码途觅雪鹤
• 阅读 1121

程序移动

回忆上节课内容🤔

  • 上次内容很简单,主要针对文本类素材
  • 移动段落

    • { 向前
    • } 向后
  • 移动句子

    • ( 向前
    • ) 向后
  • 如果我想程序中快速移动
  • 怎么办?🤔
#首先下载文本找到tomsawyer.txt
git clone http://github.com/overmind1980/vimtutorial.git
#然后把文本打开
cd vimtutorial
vi oeasy.java

括号间跳转 %

  • 当我们的鼠标在小括号内部时

    • 比如在 public static void main(String[] args) 中的 小括号(

      • 我们可以使用 % 跳转到括号对的前半部分
      • 然后我们可以使用 % 在这对儿括号的两个位置指间跳转
  • 这个 % 不但对于小括号有用,对于成对的大括号、中括号也都有用

    • 对于c语言的 / ... / 注释的头尾 ୧(﹒︠ᴗ﹒︡ )୨有用
    • 对于 #if,#ifdef,#else,#elif,#endif 也有用
    • 这个 % 不支持 [count]

oeasy教您玩转vim - 32 - # 函数跳转

小括号跳转

oeasy教您玩转vim - 32 - # 函数跳转

  • 方向

    • [ 往上

      • [( 进挨着的上一个(
    • ] 往下

      • ]) 近挨着的下一个)
  • 如果是大括号呢?

括号跳转

oeasy教您玩转vim - 32 - # 函数跳转

  • [( 跳转到上一个没配对的 (
  • ]) 跳转到下一个没配对的 )
  • [{ 跳转到上一个没配对的 {
  • ]} 跳转到下一个没配对的 }
  • 支持 [count]
  • 向上就是[
  • 向下就是]

函数中的跳转

oeasy教您玩转vim - 32 - # 函数跳转

  • 方向

    • [ 往上

      • [{ 紧挨着的上一个{
      • [[ 本块的第一行
    • ] 往下

      • ]} 近挨着的下一个}
      • ]] 本块的最后一行

注释的头尾

  • 注释跳转

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

oeasy教您玩转vim - 32 - # 函数跳转

函数间跳转

oeasy教您玩转vim - 32 - # 函数跳转
-函数跳转

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

跳到定义

oeasy教您玩转vim - 32 - # 函数跳转

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

oeasy教您玩转vim - 32 - # 函数跳转

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

没有配对的 #if 宏定义

  • 这个是针对宏定义里面的内容来的

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

oeasy教您玩转vim - 32 - # 函数跳转

标签跳转

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

oeasy教您玩转vim - 32 - # 函数跳转

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

总结

  • 括号间跳转

    • 成对括号间跳转 %
    • 不成对括号间跳转

      • [( 跳转到上一个没配对的 (
      • [) 跳转到下一个没配对的 )
      • [{ 跳转到上一个没配对的 {
      • [} 跳转到下一个没配对的 }
  • 函数间跳转

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

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

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

[Github地址] (https://github.com/overmind19...)
[Gitee地址] (https://gitee.com/overmind198...)
[蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/course...)

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java中Arraylist和LinkList的区别
   1、Arraylist使用数组方式存储,允许直接按照序号索引元素。但是插入元素或者删除元素需要移动等内存操作。所以查询速度快而插入数据慢。   2、Linklist是双向列表方式存储,按照序号索引向前或者向后遍历。但是插入数据时候只要记录前后项,所以插入数据速度快但是查询慢。ArrayList和LinkList在性能上各有优缺点,但
简
4年前
Flutter 跨平台演进及架构开篇
版权声明:本站所有博文内容均为原创,转载请务必注明作者与原文链接,且不得篡改原文内容。一、移动跨平台技术演进1\.引言移动互联网发展十余年,伴随着Android、iOS等智能手机的不断普及,移动端已逐步取代PC端,成为兵家必争之地。正所谓“得移动端者得天下”,移动端已成为互联网领域最大的流量分发入口,一
Stella981 Stella981
3年前
App唤起微信小程序和回调
在同一开放平台账号下的移动应用及小程序无需关联即可完成跳转,非同一开放平台账号下的小程序需与移动应用(APP)成功关联后才支持跳转。可在“管理中心移动应用应用详情关联小程序信息”,为通过审核的移动应用发起关联小程序操作。唤起App打开下程序他有两种方式:1,通过App分享小程序卡片到微信,然后在微信上点击小程序卡片打开小程序,
Wesley13 Wesley13
3年前
Unity 子弹移动以及碰撞条件
一、子弹移动游戏物体移动最主要的是获取一个刚体组件,再对这个刚体组件添加一个向前的力;具体代码:publicclassBulletCtrl:MonoBehaviour{publicintdamage20;publicfloatspeed1000.0F;
Wesley13 Wesley13
3年前
VI必记指令
命令模式下的指令必记:1.光标移动h或向左方向键光标向左移动一个字符j或向下方向键光标向下移动一个字符k或向上方向键光标向上移动一个字符l或向右方向键光标向右移动一个字符Ctrlf屏幕向前翻一页(常用)Ctrlb屏幕向后翻一页(常用)0(是数字0)动到这一行的第一个字符处(常用)$
Stella981 Stella981
3年前
Emacs常用快捷键
快捷键M系列组合键:操作由语言定义的单位(如此、句子、段落等)C系列组合键:操作与语言无关的基本单位(如字符、行等)移动到下一屏:Cv移动到上一屏:Mv光标所在行移动到屏幕中间:Cl上一行:Cp下一行:Cn向左移:Cb向右移:Cf向前移动一个词:Mf向后移动一个词:Mb移动到行首:C
Stella981 Stella981
3年前
Python文件倒读,主要用于日志分析
!/usr/bin/envpython\coding:utf8\"""思路:先将指针移动到文件最后f.seek(0,2)向前移动2位读一位f.seek(2,1)f.read(1)f.tell()1 到达文件顶部退出循环文件内容:abcd
Wesley13 Wesley13
3年前
Vim常用编辑命令记录
ge向后移动一个单词,光标停在单词尾部Ctrle,Ctrly滚动一行%跳转到相配对的括号c2w从当前光标往后删除2个单词,并进入插入模式cc修改一整行,仍保留原来的缩进S同cc
Stella981 Stella981
3年前
Linux命令(干货)
@vim编辑快捷键ctrln是自动补齐ctrlp是往上选择ctrlf是下一屏幕ctrlb是上一屏幕w:是移动一个单词b:是向前一个单词d^:当前行中,删至行首d$:当前行中,删至行尾y^:当前到行头的内容y$:复制当前到行尾的内容
新支点小玉 新支点小玉
1年前
软件兼容性测试要考虑什么?
兼容性测试兼容性测试报告软件兼容性测试要考虑什么?1、向前兼容和向后兼容。向前兼容是指可以使用软件的未来版本,向后兼容是指可以使用软件的以前版本。并非所有的软件都要求向前兼容和向后兼容,这是软件设计者需要决定的产品特性。2、不同版本之间的兼容。不同版本之间
码途觅雪鹤
码途觅雪鹤
Lv1
我住长江头,君住长江尾;日日思君不见君,共饮长江水。
文章
8
粉丝
0
获赞
0