程序移动

回忆上节课内容

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

  • 移动段落

  • {向前

  • }向后

  • 移动句子

  • (向前

  • )向后

  • 如果我想程序中快速移动

  • 怎么办?

#首先下载文本找到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]

小括号跳转

  • 方向

  • ]) 近挨着的下一个)

  • [( 进挨着的上一个(

  • [ 往上

  • ] 往下

  • 如果是大括号呢?

括号跳转

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

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

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

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

  • 支持 [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插件放到系统插件文件夹 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地址] (https://github.com/overmind1980/vimtutorial) [Gitee地址] (https://gitee.com/overmind1980/vimtutorial) [蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/courses/2840)

oeasy教您玩转vim - 32 - # 函数跳转的更多相关文章

  1. oeasy教您玩转vim - 56 - # 字符可视化模式

    ​ 可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...

  2. oeasy教您玩转vim - 57 - # 行可视化

    ​ 可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...

  3. oeasy教您玩转vim - 53 - # 批量替换

    查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...

  4. oeasy教您玩转linux010203显示logo

    我们来回顾一下 上一部分我们都讲了什么?

  5. oeasy 教您玩转linux010101查看内核uname

    linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...

  6. oeasy教您玩转python - 006 - # hello world

    ​ Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...

  7. oeasy教您玩转linux010202软件包管理apt

    顾一下 上一部分我们都讲了什么?

  8. oeasy教您玩转linux010201持续输出yes

    我们来回顾一下 上一部分我们都讲了什么?

  9. oeasy教您玩转linux010108到底哪个which

    到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?

  10. oeasy教您玩转linux-010110内容回顾

    我们来回顾一下 我们都讲了什么?

随机推荐

  1. RabbitMQ系列(五) RabbitMQ的文件和目录位置

    概述 每个RabbitMQ节点使用一些文件和目录,用于加载配置.存储数据 / 元数据 / 日志文件等等.这些文件和目录的位置是可以自定义的. 本指南涵盖: 1)如何自定义RabbitMQ节点所使用的各 ...

  2. zfile 在线云盘、网盘、OneDrive、云存储、私有云、对象存储、h5ai、上传、下载

    基于 Java 的在线网盘程序,支持对接 S3.OneDrive.SharePoint.又拍云.本地存储.FTP.SFTP 等存储源,支持在线浏览图片.播放音视频,文本文件.Office.obj(3d ...

  3. QShop商城-快速开始-uni-app小程序

    QShop商城-快速开始-uni-app小程序 工具准备 HBuilderX 此项目为UniApp开发,开发工具为HBuilderX,下载地址: https://hx.dcloud.net.cn/Tu ...

  4. React 中的 useRef 与 useState

    React 是一个流行的 JavaScript 库,用于构建用户界面.它提供了几个钩子,使开发人员能够管理状态并执行副作用. React 中两个常用的钩子是 useRef 和 useState .虽然 ...

  5. 搭建高可用k8s

    搭建k8s高可用 高可用只针对于api-server,需要用到nginx + keepalived,nginx提供4层负载,keepalived提供vip(虚拟IP) 系统采用openEuler 22 ...

  6. java.sql.SQLException: MONTH 报错解决方法

    idea控制台报错:java.sql.SQLException: MONTH Error attempting to get column 'xxx' from result set. Cause: ...

  7. 解决 Https 站点请求 Http 接口服务后报 the content must be served over HTTPS 错误的问题

    问题分析 之前将自己所有的 Http 站点全部更新为 Https 站点,但是在请求后台接口服务的时候还是 Http 请求,导致部署之后,直接在控制台报 This request has been bl ...

  8. jq data方法

    data() 是 jQuery 的方法之一,用于在元素上存储和获取数据.它允许你将任意类型的数据附加到一个或多个元素上,并且可以通过选择器或元素对象来访问和操作这些数据. 代码中,_t.selectB ...

  9. taro 使用taro中的vue来完成小程序的开发

    网址:https://taro-docs.jd.com/taro/docs/README 2.1.简介 Taro 是一个开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发 ...

  10. LeetCode 208. Implement Trie (Prefix Tree) 实现 Trie (前缀树)(C++/Java)

    题目: Implement a trie with insert, search, and startsWith methods. Example: Trie trie = new Trie(); t ...