查找当前 Vim 折叠的第一行

2024-04-15

我正在编写一个 Vimscript 函数,其中我需要查找当前折叠的第一行的行号。到目前为止我一直在使用这个:

function! GetFoldStart()
    let l:current_line=line('.')
    normal [z
    let l:current_fold_start=line('.')
    execute 'normal ' . l:current_line . 'g'
endfunction

效果很好,但似乎不必要地昂贵。有没有更便宜的方法来实现它?基本上我需要借用的功能[z命令,而不实际移动到该行。

我希望变量 v:foldstart 能够拯救我,但它似乎只适用于闭合折叠(用于折叠文本)。

预先感谢您的 Vim 智慧! 乔纳森.


首先,使用normal!(用爆炸声)在脚本中,它更安全。第二,

let winview=winsaveview()
try
    " Your code here "
finally
    call winrestview(winview)
endtry

然后持有更多案件let l:current_line=line('.') ... execute "normal! ".l:current_line."gg".

我不知道如何获取您想要的信息normal! [z,但以下代码不应修改跳转列表:

function! GetFoldStart()
    let winview=winsaveview()
    try
        keepjumps normal! [z
        return line(".")
    finally
        keepjumps call winrestview(winview)
    endtry
endfunction
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找当前 Vim 折叠的第一行 的相关文章

随机推荐

  • 右对齐文本?

    我试图举一个例子来试验不同的对齐方式作为演示 左对齐 居中 右对齐 对齐和中左对齐文本都很容易 如我的演示所示 你可以看这个例子here http jsbin com avuzuf 1 edit在 JSBin 上 如何获得右对齐的文本而不弄
  • 在骨干模型上声明变量而不设置默认值

    我刚刚开始使用backbone js 我正在寻找一种在模型上声明字段而无需提供默认值的方法 它实际上仅供参考 以便当我开始创建实例时 我可以看到需要初始化哪些字段 用java之类的东西我会写 public class CartLine St
  • Doctrine OneToMany 关系错误

    我试图通过 Symfony2 2 3 0 使用 Doctrine 2 2 3 在数据库中的对象上建立一些 ManyToOne OneToMany 关系 但出现了一个奇怪的错误 以下是对象的相关部分 一种产品的许多属性 Product ORM
  • mongoengine - 忽略架构验证的额外字段

    我正在尝试查询我的数据库 目前 某些记录具有未包含在我的模型架构中的额外字段 由于错误 但我想处理这些情况 当我尝试查询数据库并将记录转换为模式时 出现以下错误 FieldDoesNotExist The field X does not
  • 从旧的 Git 提交中删除私有信息

    我有一个使用 Git 进行版本控制的项目 我想将其开源 但其中包含一些特定于其最初使用环境的私人信息 我将更改相关信息以从未包含在存储库中的配置文件加载 我意识到我应该首先这样做 但由于私人信息仍然存在于之前的提交中 我该如何将其从我的历史
  • 如何使用服务更改作用域变量?

    我有一个应用程序 应用程序内部有一个注册和登录表单 通过注册表单 当用户创建帐户时 他们会自动登录 通过登录表单 用户也可以登录 显然 我有两个控制器 一个用于注册表单 一个用于登录表单 我希望他们能够共享一个服务 logIn 因为两种形式
  • 基于 Spring Boot AMQP 的 JmsListener 在 TextMessage 上失败

    我有一个 Spring Boot 应用程序 在检索类型的 JMS 消息时遇到问题TextMessage来自 ActiveMQ 代理 如果消费者尝试从代理检索消息 它无法自动将消息转换为 TextMessage 而是将其视为 ByteMess
  • 如何从 json 字符串获取对象列表 c# Newtonsoft.json

    我正在尝试将 JSON 字符串转换为对象列表 但收到错误 无法将当前 JSON 对象反序列化为 List 类型 因为该类型需要 JSON 数组才能正确反序列化 我检索 json 它看起来像这样 Code 0 Message OK Data
  • Internet Explorer 开发人员工具如何保留导航日志?

    我正在寻找在 Internet Explorer 开发人员控制台中记录内容以保留页面刷新的方法 在 Google Chrome 和 Firefox 的 Firebug 下 这是一个选项 但我在 IE 下找不到它 我用的是IE 9 在 IE
  • 防止运行测试时优化掉未使用的静态函数

    我正在编写一个将利用 LLVM 的库 通过inkwell https github com TheDan64 inkwell 来 JIT 编译一些函数 这些函数需要能够回调我的代码中的一些 Rust 函数 我让它工作 但我的单元测试不起作用
  • 使用一个 AJAX 响应更新两个 div

    全部 我正在使用 jQuery AJAX 调用一个文件来基本上保存某人是否喜欢某首歌 我正在尝试做类似以下的事情 var html ajax type POST url save song php data song id song id
  • R:在数据框中插入多行(可变数量)

    我有一个数据框 例如 5 行 用于 2 个可观察值 我需要在数据框中插入 虚拟 或 零 行 以便每个可观察的行数相同 并且可以大于 N 行 以获得更长的行数 例如 This is what I have x c a a b b b y c
  • 比较 2 个单独的 csv 文件并将差异写入新的 csv 文件 - Python 2.7

    我正在尝试比较 python 中的两个 csv 文件 并将差异保存到 python 2 7 中的第三个 csv 文件中 import csv f1 open olddata file1 csv oldFile1 csv reader f1
  • JPanel 未显示

    为什么 UI 没有显示在我的下面的代码中 public class GUI extends JPanel public GUI String name String address List
  • php中包含bootstrap和js

    我需要一双新的眼睛来看待这个 我直接从我的一把老小提琴中获取代码https jsfiddle net RachGal fs9u6mwe 1 https jsfiddle net RachGal fs9u6mwe 1 在大学厨房网站上显示照片
  • Terraform 条件配置

    我对 Terraform 配置有疑问 当我第一次运行 terraform 时 我使用在 AWS 控制台中生成的 SSH 密钥 该密钥正在添加到ubuntu用户 Ubuntu 16 04 AMI 然后我跑remote exec配置 provi
  • objdump 输出中的“Algn”2**2 和 2**0 意味着什么?

    下面的文件中这是什么意思 2 2 and 2 0 objdump h main o main o file format elf32 i386 Sections Idx Name Size VMA LMA File off Algn 0 t
  • 使用数组中的参数生成 URL

    我需要采用如下所示的数组 subids Array s1 gt one s2 gt two s3 gt three s4 gt four s5 gt five s6 gt six 并生成一个 URL 例如 所有 subids 并不总是已定义
  • 如何将光标设置在edittext的末尾

    每当我触摸编辑文本时 光标应该位于末尾 即使编辑文本已经有一些文本并且它不应该允许向左移动奖项 editTextView setOnTouchListener new View OnTouchListener Override public
  • 查找当前 Vim 折叠的第一行

    我正在编写一个 Vimscript 函数 其中我需要查找当前折叠的第一行的行号 到目前为止我一直在使用这个 function GetFoldStart let l current line line normal z let l curre