Maoyl's blog Maoyl's blog
首页
  • 前端基础

    • HTML
    • CSS
    • CSS动画
    • JavaScript文章
    • stylus
  • 性能优化

    • 《性能优化》笔记
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《JavaScript设计模式》笔记
    • 《TypeScript 从零实现 axios》
    • TypeScript笔记
    • JS设计模式总结笔记
  • 前端框架

    • Vue相关
    • React相关
  • 前端监控

    • 前端监控简介
  • 学习笔记

    • 《Vue》笔记
    • 《React》笔记
    • 小程序学习笔记
  • 后端基础

    • Nodejs
  • 学习笔记

    • 数据结构
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • 网页性能
  • 学习笔记

    • 《Git》学习笔记
    • 《Vim》学习笔记
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

maoyln

日日行,不怕千万里
首页
  • 前端基础

    • HTML
    • CSS
    • CSS动画
    • JavaScript文章
    • stylus
  • 性能优化

    • 《性能优化》笔记
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《JavaScript设计模式》笔记
    • 《TypeScript 从零实现 axios》
    • TypeScript笔记
    • JS设计模式总结笔记
  • 前端框架

    • Vue相关
    • React相关
  • 前端监控

    • 前端监控简介
  • 学习笔记

    • 《Vue》笔记
    • 《React》笔记
    • 小程序学习笔记
  • 后端基础

    • Nodejs
  • 学习笔记

    • 数据结构
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • 网页性能
  • 学习笔记

    • 《Git》学习笔记
    • 《Vim》学习笔记
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 简介

  • vim

    • 起步
    • 相关命令的知识
    • 认识vim语法
    • 删改重做命令提升效率
    • 认识可视化模式
    • 什么是文本对象
    • 快速移动
    • 掌握搜索命令
    • vim-easymotion
    • 数字与'.'的威力
    • 多文件跳转
      • 何为跳转(jump)
      • 标记定位
        • 命令
    • vim-surround
    • 字符替换和多文本选中
    • 大小写、注释与提示
    • 窗口管理大法
    • 快速删除一个函数
    • vim的宏操作
    • 调用vscode命令
  • vscode

  • 《Vim》学习笔记
  • vim
maoyln
2022-06-16
目录

多文件跳转

# 开发必备:多文件跳转

在开发中,我们常常需要在多行代码、多个文件中来回穿梭,在方法与调用出翻来覆去;而 vim 对于这类情况,有它独特的理解和解决解决方案 —— 跳转。

# 何为跳转(jump)

vim 会记录我们最近通过命令访问的位置(包括文件名、行号、列号),记录在一个叫 jump list 的列表中,而且每个窗口都会有一个单独的 jump list。顾名思义,jump list 中的每条记录都是一个跳转(jump),而会被记录在 jump list 的位置需要是一下的指令产生的:

  • ' :跳转到标记的⾏,标记的具体解释在下一段
  • ` :跳转到标记的位置(⾏和列),标记的具体解释在下一段
  • gg : 跳转到头部
  • gd : 跳转到定义;这个在日常使用特别多,谨记;
  • / :向后搜索
  • ? :向前搜索
  • n :重复上⼀次搜索,相同⽅向
  • N :重复上⼀次搜索,相反⽅向
  • { :跳转上⼀个段落
  • } :跳转下⼀个段落

而 hjkl、shift + j / k (即映射后的 5j 5k)、ctrl + f / b / u / d (翻页 / 翻半页)等是不会记录在 jump list 的;

特别说明

vim-sneak 的跳转只会记录一次

由于 jump list 保留了光标的移动记录,我们可以通过 :jumps 查看 jump list,vim 会显示金近 100 条记录;我们也可以可以在 jump list 中选中记录进行对应位置的跳转。

但是使用 :jumps 查看 jump list 来进行跳转的操作比较繁琐,而且很多时候我们并不关心之前这么多的跳转,我们只在乎跳转的顺序,因为只有顺着 jump list 的顺序,我们总会跳到想去的位置,这时我们可以使用以下命令:

  • ctrl + i:跳转到 jump list 的后一个记录
  • ctrl + o:跳转到 jump list 的前一个记录

键位规律

如 j k 一样, i o 的按键位置也是一样的规律:表示下一个在左,表示上一个的在右

如此这般,我们就可以在 jump list 中穿梭了;比如我们看到一个函数调用,想看看这个函数的内部实现,我们使用 gd 跳转到它定义的地方;阅读完内部实现后,我们使用 ctrl + o 就可以再跳回去原本看到函数的调用的位置继续我们的工作。

# 标记定位

上面我们提到了 ' 和 ` 这两个和标记有关的指令,那什么是标记?即当我们光标在某行代码时,可能我们要短暂地离开当前行甚至当前文件,我们就可以用这个命令做个标记,等我们在别的地方想回来时,就可以像回城技能一样,一按命令就回到标记的行甚至标记的列。

# 命令

  • m + [小写字母]:只可在单个文件内跳转的标记;后面的为标记的标识符,用于跳转的指向;可以理解为当前标记的名字;下同
  • m + [大写字母]:可在多个文件之间跳转的标记

比如我们在某个位置执行 mm,然后在本文件中的其他位置只要使用 'm 就可以跳到标记的行,使用 `m 就可以跳到标记的行和列;当然我们也可以用其他字母如 mf,当相应的跳转命令也变成 'f 和 `f。

编辑 (opens new window)
#Vim
上次更新: 2025/04/18, 01:42:12
数字与'.'的威力
vim-surround

← 数字与'.'的威力 vim-surround→

最近更新
01
GSAP动画库——如何高效写动画
04-17
02
自适应方案PxToRem
09-10
03
性能优化-requestAnimationFrame
08-10
更多文章>
Theme by Vdoing | Copyright © 2019-2025 备案号:京ICP备19058102号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式