相对于光标滚动 Vim,自定义映射

2024-02-05

所以我读过:help scroll-cursor真的很喜欢zz,这会将光标所在的行置于窗口中间。

我正在寻求帮助来制作一个类似于以下内容的映射zz但将光标所在的行放在窗口高度的 20%(或 25%、30% 等)处。


Edit:

感谢 ZyX 和 Drasill,我能够修改他的函数以获得所需的功能:

function ScrollToPercent(percent)
    let movelines=winheight(0)*a:percent/100

    if has("float") && type(movelines)==type(0.0)
        let movelines=float2nr(movelines)
    endif

    let oldso=&so
    execute ":set so=" . movelines
    execute "normal! zt"
    execute ":set so=" . oldso
endfunction

这并不是专门回答您的问题,但您可能会喜欢scrolloff option.

例如::set scrolloff=5将始终在窗口的开头和结尾留下 5 条可见线。

所以,当你使用zt or zb,您的光标将分别移至顶部下方 5 行(或底部上方 5 行),这几乎就是您想要的 20%。

我个人很喜欢这个设定。

:help scrolloff
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相对于光标滚动 Vim,自定义映射 的相关文章

  • 通过 Homebrew 安装 Vim,并支持 Python 和 Python3

    我想在 Vim 中启用 Python 自动完成功能 所以也许这不是问题 这是我观察到的 First 虚拟环境 https github com kennethreitz python guide blob master docs dev v
  • 适用于 neovim / vim8 的 C# LSP 自动完成客户端

    我尝试了多种方法来使其发挥作用 但似乎没有简单的方法 是的 有大量的插件和配置 但截至 2019 年 10 月 它们无法正常工作 OmniSharp Vim https github com OmniSharp omnisharp vim客
  • 使用 Webpack 波形符别名时通过 Vim 中的“gf”解析 JavaScript 模块

    我是使用波浪号的 Vue js 项目的新成员 模块导入中的符号 如 import WhateverApi from api whatever 项目存储库包含所有类型的文件 Vagrant 机器 Laravel 后端应用程序 配置文件和 Vu
  • Emacs Evil“重复”(点)行为

    我的中有以下行 emacs define key evil normal state map M j lambda interactive evil next line 5 这使得文件中的导航变得更加容易 例如 与M j我在下面 5 行 所
  • vim 脚本:如何在 vim 函数中执行命令

    为什么会出现以下情况 let s colorschemes synic ir black let s colorscheme idx 0 function RotateColorscheme let s colorscheme idx 1
  • vim:打开预览窗口而不移动主窗口中的文本

    当全能完成 或其他方式 打开预览窗口时 主窗口的大小会减小 以便为预览窗口腾出空间 默认情况下 预览窗口弹出前主窗口中可见的第一行在预览窗口弹出后也将相同 这会产生不幸的效果 即主窗口中的文本在视觉上被下推 我希望主窗口中的文本保留在原来的
  • vim:视觉明星搜索未按预期工作

    我复制了这个函数来进行视觉搜索 and function s VSetSearch cmdtype let temp s norm gv sy let V substitute escape s a cmdtype n n g let s
  • 如何更改每种语言的 vim 设置?

    我将 vim 与许多不同的语言 C C Java shell 等 一起使用 我知道 vim 已经为每种语言预设了设置 但我想根据我个人的喜好更改每种语言的设置 我已经有一个带有设置的 vimrc 文件 但我想要更多文件来根据我使用的语言声明
  • 文件保存期间语法突出显示随机消失

    我正在使用 vim 编辑一些 python 文件 最近偶尔会出现在 vim 中保存缓冲区后语法高亮消失的情况 我尝试重置syntax on and set filetype python但无济于事 我根本不知道是什么原因导致了这个问题 所以
  • 当vim进入可视模式时运行命令

    我使用一个小脚本来触发插入模式以更改行号颜色 function CursorLineNrColorInsert mode Insert mode blue if a mode i highlight CursorLineNr ctermfg
  • Vimscript 检查当前缓冲区是否有未保存的更改

    我目前已设置状态行 使其在插入模式下为橙色 否则为白色 如果文件有任何未保存的更改 我想让它在我回到正常模式时变成另一种颜色 因为我经常在兔子洞里走一会儿 想知道为什么我的更改没有生效 小 还不够打我的脸 我找不到任何以 buf 开头且看起
  • 在 VIM 中缩进文件夹中的所有文件

    我有一个包含数百个 TTL TeraTermLanguage 文件的文件夹 现在我想缩进所有这些文件 我已经创建了用于缩进的 teraterm vim 并使用 VIM 打开一个文件并执行 gg G 整个文件得到了正确的缩进 但是有什么方法可
  • 在 Vim 中的缩进线上按“Home”

    我有一个坏习惯 就是使用 home 键返回到行首 当我最近开始使用 vim 时 我注意到当我在缩进的行上按 home 键时 它会让我回到该行的开头 在 Notepad 我曾经使用的编辑器 中 它会让我返回到该行代码的开头 就在缩进之后 有没
  • Vim 函数插入带有传递参数的静态文本

    背景 I m interested in writing a function that assigned to keyboard shortcut s when invoked would 采取用户参数 计算值反映80 string le
  • :set 选项的显示值

    如果你不给 colorscheme一个参数 然后它显示 vim 当前使用的颜色方案的名称 vim 中是否有类似的方法来显示是否设置了选项或如果选项的值不是布尔值则设置为什么 例如 如果我想知道是否autoindent已设置或者我想知道的值t
  • VIM 始终使用选项卡式页面

    我想要一个可以放入 vimrc 文件中的命令 该命令将使 vim 始终以选项卡式页面模式打开 而无需传递 p在命令行上 有这样的命令吗 如果没有 是否有更好的方法来做到这一点 目前 我正在使用 alias vi vim p 在我的 bash
  • 在 Vim 分割窗口中打开函数定义?

    我知道你可以使用ctrl 在 Vim 中跳转到定义 但是有没有办法让它在分割窗口而不是当前缓冲区中打开 我知道我可以打开一个新的分割窗口 然后使用ctrl 但是有没有更快的方法呢
  • vim 中的正则表达式查找和替换:向数字添加 .0

    我有一个如下所示的文件 1 1 0 1 6 1 0 2 8 1 0 3 10 1 0 4 12 1 0 6 如何为所有数字添加 0 后面的数字除外 我认为用正则表达式来做到这一点应该不会太难 但是我的正则表达式知识太生疏了 使用 VIM s
  • 将回车 ^M 替换为 Enter

    我知道如何删除 M在我的文件中 s M g 但这只是我想替换的一行 Mwith Enter VIM 中的 Enter 字符是什么 在命令行模式下使用 替换回车符 即
  • 如何使用 JSHint 配置 Syntastic?

    如何使用 Syntastic Vim 插件和 JSHint 来验证 JavaScript 代码 环境 乌班图11 04 VIM Vi 改进 7 3 我已经安装了 按照解决方案VIM JSLint https stackoverflow co

随机推荐

  • 在 R 中按顺序查找起始索引和终止索引

    假设我有以下序列 x c 1 1 0 0 1 0 1 1 1 0 0 R 中是否有一种优雅的方法来返回每个 1 序列的开始和停止索引 答案应该是一个 2 列数组 其中 nRows 1 序列的数量 startIndx 1 5 7 stopIn
  • Python / Kivy:.kv 文件中的条件设计

    在 Kivy 中是否可以采用类似于下面示例的方法 发布的代码显然不起作用 而且这只是一个示例 我需要根据某个属性绘制不同的布局 您建议如何解决这个问题 BoxLayout number 0 if self number gt 3 Label
  • IE7 CSS 填充问题 - 无法弄清楚

    试图解决一个相当烦人的 IE7 CSS 问题 由于下面页面上的一些奇怪原因 它的填充看起来比正常情况大得多 我应用的任何属性似乎都无法解决该问题 而且我无法弄清楚为什么会发生这种情况 您可以在按钮上看到问题 罪魁祸首 例子 http www
  • 如何使用 FactoMineR 包以编程方式确定主成分的列索引?

    给定一个包含混合变量 即分类变量和连续变量 的数据框 例如 digits 0 9 set seed for reproducibility set seed 17 function to create random string creat
  • jProfiler 需要多少内存来分析大小为 X 的堆转储?

    我的堆大小为 X 5 GB 我应该为 jprofiler 分配多少资源才能有效地分析这个堆 我建议使用Eclipse 垫 http www eclipse org mat 查看堆转储 它在大小为 X 的堆转储的内存要求方面做得更好 因为它在
  • 如何将时钟门映射到技术库单元

    我的设计中有以下时钟门 module my clkgate clko clki ena Clock gating latch triggered on the rising clki edge input clki input ena ou
  • AlarmClock.EXTRA_DAYS 如何工作 - Android Studio

    所以我有一个在指定时间设置闹钟的代码 我还想指定一周中的哪一天 到目前为止 我发现的所有示例都使用 Calendar 类 但是 我使用 AlarmClock 这是我的代码 Intent openNewAlarm new Intent Ala
  • 为什么重定向 URL 在 Azure AD B2C 中是完全限定的?

    为什么重定向网址 https learn microsoft com en us azure active directory b2c active directory b2c app registration register a web
  • 编译gcc 4.6.2(无法计算目标文件的后缀)

    编译gcc 4 6 2时出现问题 checking for avr gcc data data6 soft src build gcc 4 6 2 host x86 64 unknown linux gnu gcc xgcc B data
  • 使用 Inkspace 或 Gimp 导出 HTML/CSS [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 是否可以使用 Inkspace 或 Gimp 设计网页并将其导出为 HTML CSS 我想要一个使用拖放进行设计的解决方案 而不必一直手动编写大量 H
  • 角度材质 - 为树添加分支线?

    我创建了一棵简单的树角度材质树 https material angular io components tree overview https stackblitz com edit angular exhejg vx5i7c file
  • GCC中strlen()的实现在哪里?

    谁能指出我的定义strlen 在海湾合作委员会 我已经 grep 4 4 2 版本大约半个小时了 同时疯狂地谷歌搜索 我似乎找不到在哪里strlen 已实际实施 你应该在 glibc 中查找 而不是 GCC 它似乎是在strlen c 这是
  • 单击模态窗口中的按钮 - 量角器

    我正在为现有应用程序编写量角器测试 我在模式窗口中有一个名为 拒绝 的按钮 我尝试使用以下方法单击它 element by buttonText Decline click 但我收到以下错误 UnknownError unknown err
  • 实体框架的 Code First 在保存时抛出 DbUpdateException

    我正在尝试在 Visual Studio C 项目中创建我的第一个数据库 并向该数据库添加一个实体 我还没有做到这一点 当尝试时 我会得到一个DbUpdateException打电话时SaveChanges on the DbContext
  • 指定的资源名称长度不在 Azure Blob 存储允许的限制内

    当我尝试将 blob 上传到我的网站时 收到错误消息 指定的资源名称长度不在允许的范围内 Azure Storage Account 下面是我的代码 private async Task UploadToAzureBlobStorage s
  • Redux Toolkit 查询未获取数据

    I am trying to fetch data with RTK Query in next js project and everything were fine until I had to fetch some more data
  • C 预处理器可以执行简单的字符串操作吗?

    This is C宏观怪异问题 是否可以编写一个宏 以字符串常量 X 作为参数 并求值为相同长度的字符串 Y 使得 Y 的每个字符都是 X 对应字符的 常量 算术表达式 这是不可能的 对吧 不 C 预处理器将字符串文字视为单个标记 因此它无
  • 如何在 Outlook 2016 中查看电子邮件的 HTML 源代码 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想在outlook 2016中查看一封电子邮件的html源代码 它似乎与以前版本的outlook有所不同 我正在运行 Outlook 2
  • 我的应用程序屏幕出现在浏览器中

    我在 Android 上打开浏览器 opera 或 firefox 并在地址栏上写下我的深层链接 当我按浏览器上的 Go 按钮时 它会按预期将我重定向到 我的应用程序 但问题是我的应用程序出现在浏览器上 如图所示 我如何打开我的应用程序并随
  • 相对于光标滚动 Vim,自定义映射

    所以我读过 help scroll cursor真的很喜欢zz 这会将光标所在的行置于窗口中间 我正在寻求帮助来制作一个类似于以下内容的映射zz但将光标所在的行放在窗口高度的 20 或 25 30 等 处 Edit 感谢 ZyX 和 Dra