如何转到 vim 中所有缓冲区的最后一个编辑位置?

2023-11-22

很容易转到当前缓冲区中的最后一个编辑位置。 看如何返回到 Vim 中最后一行之前编辑的行?更改列表是缓冲区本地的,每个缓冲区都有自己的更改列表。 然而,我从最近编辑的缓冲区导航到另一个缓冲区是很常见的,并且以某种方式返回到原始缓冲区中的最后一个编辑位置会很好。有没有办法返回到上次插入或修改发生的地方?


您可以将以下内容放入 vimrc 中

autocmd InsertLeave * execute 'normal! mI'

and press `-I to jump back to the position where you left your Insert mode. Since I is an uppercase, it works across buffers.


附录(评论后)

阅读@Garbor Marton 的评论后,

我自己写了一个函数

let g:detect_mod_reg_state = -1
function! DetectRegChangeAndUpdateMark()
    let current_small_register = getreg('"-')
    let current_mod_register = getreg('""')
    if g:detect_mod_reg_state != current_small_register || 
                \ g:detect_mod_reg_state != current_mod_register
        normal! mM
        let g:detect_mod_reg_state = current_small_register
    endif
endfunction

" Mark I at the position where the last Insert mode occured across the buffer
autocmd InsertLeave * execute 'normal! mI'

" Mark M at the position when any modification happened in the Normal or Insert mode
autocmd CursorMoved * call DetectRegChangeAndUpdateMark()
autocmd InsertLeave * execute 'normal! mM'

我喜欢使用原版I专门为插入模式更改注册,所以这里我使用M注册任何修改,包括r,x,d,y和最后的插入模式。

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

如何转到 vim 中所有缓冲区的最后一个编辑位置? 的相关文章

  • gvim中的鼠标输入

    标准鼠标输入可以在 vim 中自定义吗 在我的例子中是 vim 插件也是可以接受的选择 我特别感兴趣的是 覆盖 双击某个单词 这样 gvim 就不仅仅是突出显示该单词 而是进行搜索 从而突出显示文件中该单词的所有实例 我在其他编辑器中看到过
  • 有没有办法改变vim的默认模式

    有谁知道如何更改vim的默认模式 它的默认模式是命令模式 但是我可以将其更改为插入模式吗 只需将以下行添加到您的 vimrc 中 start Vim s default mode will be changed to Insert mode
  • Vim 无法在 OS X 上使用 python 进行编译

    我一直在尝试编译vim 7 3 with 蟒蛇2 7支持苹果系统 X 10 6 Vim 本身编译得很好 但嵌入的 python 编译得不太好 我已采取的步骤 hg clone https vim googlecode com hg vim
  • gVim 和 gVim easy 有什么区别?

    这个问题是不言自明的 但经过一个小时的搜索 我还没有找到任何资源可以解释其中的差异 在对两者进行了一些研究后 发现 gVim 和 gVim easy 是相同的 gVim Easy 启动并锁定在插入模式 您输入的每个字符都像简单的记事本一样打
  • git commit 保存 vim 文件时出错

    我正在遵循简单的 git 指南nettuts 简易 git 指南 http net tutsplus com tutorials other easy version control with git 我在我的中初始化了一个空的 git 实
  • Vim 错误格式和 jslint

    我正在尝试让 makeprg 和 errorformat 与 VIM 和 jslint 一起使用 但似乎无法为我的生活提供正确的错误格式 我正在使用 jslint 的 NodeJS 版本 它会产生如下结果 1 116 9 The body
  • 在 Vim 中撤消光标移动

    假设我的光标位于下面的代码中 internal static SingleSelectList
  • Vim 和 Tmux 渲染错误

    我在使用 Tmux 和 Vim 时遇到问题 正如您在图片中看到的那样 当我使用 nerdtree 或 irssi 实际上是任何终端应用程序 时 我遇到了此类渲染问题 我输入的每个键都会修改整个终端渲染 这只是一个图形错误 但它使我无法正常工
  • vim 脚本“input()”函数不需要用户按 Enter 键

    我想让用户调用我的函数 然后让该函数请求用户输入 但我不希望用户在输入 input 函数所需的字母后必须输入 enter 例如 用户应该能够键入 h j k l 等单字母命令 并且键入的每个字母都会在我的函数中循环 直到用户键入 x 退出
  • 如何设置 Vim 进行 Android 开发?

    谁能描述一下用于 Android 开发的良好 Vim 设置吗 我现在使用 Eclipse 但我真的很想使用 Vim 因为它更快 而且我更喜欢它 例如 我对 Eclim 不感兴趣 我对使用哪些 Vim 插件 用于 Java 自动完成等 如何
  • vim 中的 python 2 支持

    我正在尝试设置 YouCompleteMe 一个 vim 代码完成插件 当我运行 vim 时 它给我这个错误消息 YouCompleteMe unavailable 需要 python 2 x 我的 ubuntu 机器上安装了正确版本的 p
  • GVIM可以有背景图片吗?

    我想知道是否可以将背景图像放入 gVim 中 这可以通过编程来完成吗 如果你必须的话 我建议你做以下几件事 使用合成窗口管理器 例如 Linux Windows Vista 和 Mac OS 上的 Compiz 可能有类似的工具 设置桌面背
  • 代码折叠未保存在我的 vimrc 中

    我将以下代码添加到我的 vimrc 中 save and restore folds when a file is closed and re opened autocmd BufWinLeave mkview autocmd BufWin
  • Vim:使用制表符缩进,使用空格对齐

    我已经阅读了几个问题和答案 Vim 使用制表符缩进 使用空格与 C 源文件对齐 https stackoverflow com questions 8493705 vim use tabs for indentation spaces fo
  • 有选择地设置 iskeyword

    通常我需要搜索大型 xml 模式文件以查找光标下单词的下一个出现位置 但如果它是一个标签或结束标签 则最好不要搜索 在下面的示例中 是光标所在的位置 使用 or 与 iskeyword 不包括 gt or lt 将在之间移动
  • 从 `git commit` 调用时 Vim 使用非标准配置?

    我注意到每当我编写提交消息时 git 似乎都会使用不同的 vim 设置 我有git svn安装 Macports 我已经检查过 MYVIMRC变量 它被设置为正确的文件 尽管如此 每次我提交消息时 我都会受到每行 80 个字符的限制 区分大
  • 程序员针对芬兰语/瑞典语或其他非美国键盘布局的 VIM 设置

    I ve been recently learning some VIM hackery and I have learned a lot of useful commands and gotten pretty efficient at
  • 是否可以重新映射“wq”来保存并关闭当前缓冲区,而不是在 Vim 中保存并退出?

    Vim 新手 当我发出 wqEx 命令 我想让它只保存并关闭活动缓冲区 而不是保存它然后从 Vim 退出 同样 我想做 q命令与 bd在其效果中 对于如何实施这种行为有什么建议吗 Vim 允许用户在所有模式下为命令添加键映射 包括命令行模式
  • 编译带有 python 支持的 vim

    我正在尝试编译支持 Python 2 5 1 的 Vim 7 2 但遇到了一些麻烦 我运行配置 看起来它正在按预期工作 configure with features huge enable pythoninterp prefix home
  • 在vim中的所有缓冲区中运行宏

    我知道关于 bufdo命令 并试图将其与我录制的宏结合起来 a 在我加载的每个头文件的正确位置添加 include 但是 我找不到在每个缓冲区上运行宏的简单方法 有没有办法通过ex模式来执行宏 这就是 bufdo需要 或者我还缺少另一个命令

随机推荐

  • Sbt 项目依赖于外部和私有 github 存储库

    本教程清楚地解释了如何在 sbt 项目中使用远程 github 依赖关系 lazy val reponame RootProject uri git github com group reponame git lazy val root P
  • PHP:选择更改时,将表单发布给自己

    这基本上就是标题所说的 我有一个带有选择控件的表单 我想强制表单在更改时回发给自己 bmsclientlist clientobj gt getBMSClientList echo
  • 如何获取句子中单词的长度?

    我正在尝试获取句子中每个单词的长度 我知道你可以使用 len 函数 我只是不知道如何获取每个单词的长度 而不是这个 gt gt gt s python is pretty fun to use gt gt gt len s 27 gt gt
  • Vue - 何时以及为何使用 $el

    我在这里找到了这个答案 https stackoverflow com a 50431015 11735826我想知道为什么这里使用 el 以及为什么没有 el 元素它就不起作用 当你使用refhtml 标签上的属性 DOM 元素由以下方式
  • Sphinx 中的常见链接目标

    我有很多 Sphinx 页面 上面有相同的链接 像那些 CC BY https creativecommons org licenses by 3 0 MIT http opensource org licenses MIT 目前 我在每个
  • 如何匹配包含特定字符串的属性?

    当属性包含多个单词时 我在按属性选择节点时遇到问题 例如 div class atag btag div 这是我的 xpath 表达式 class atag 该表达式适用于 div class atag div 但不适用于前面的示例 我怎样
  • Mac OSX、Emacs 24.2 和 nrepl.el 不工作

    我在用着nrepl el Emacs 24 2 我的 S O 版本是 OS X Lion 10 7 5 运行命令 M x nrepl启动后REPL会话通过lein lein repl 我能够连接到它 但如果我尝试使用 M x nrepl j
  • 在 Mac OS X 上使用链接描述文件

    有没有办法使用链接器脚本ld在 Mac OS X 上 The GNU ldLinux 上的程序接受 T
  • 如何使用 lxml、XPath 和 Python 从网页中提取链接?

    我有这个 xpath 查询 html body tbody tr td a title href 它提取所有带有标题属性的链接 并给出href in FireFox 的 Xpath 检查器插件 但是 我似乎无法将它与lxml from lx
  • 如何使用retofit2和RxAndroid取消请求

    我正在使用 Retrofit 2 0 和 Rx android 来加载我的 API 我遵循该部分RxJava Integration with CallAdapter at 这个网站而且效果很好 但是 我不知道如何取消可观察对象的加载请求
  • Bash 进度条[重复]

    这个问题在这里已经有答案了 我正在使用以下脚本来浏览 whois 中的大量域列表并找到注册商 对于服务器 DNS 迁移很有用 并且它工作正常 不过 为了方便起见 我想在其中加入一个进度条 这是我的脚本 如果可以改进请告诉我 bin bash
  • Asp.net MVC 3 使用 DataAnnotations 进行条件验证

    我正在使用 Asp net MVC 3 面临数据注释的验证问题 如下所示 我们在单独的库项目中维护模型 模型类层次结构如下 public class EditAlternateMailingAddressModel BaseModel pu
  • Spring MVC 将 ArrayList 传递回控制器

    我是春天的新手 我显示用户列表 每行都有一个用于删除用户的复选框 控制器 Controller public class AdminController Autowired private UserDao userDao RequestMa
  • 从 JList 中删除项目

    我有一个简单的 Jlist 其中包含来自List
  • WSAGetLastError() 只是 GetLastError() 的别名吗?

    在我的代码中 我有带有 I O 完成端口的异步 I O 对于读 写完成回调 我得到一个HANDLE 当然可以是套接字 文件句柄 命名管道等 因此 如果这样的例程出现问题 我想检查错误 但如何知道它是否是 网络 HANDLE a SOCKET
  • 在 Elixir 中查找代码点是否为大写

    我需要检测 Elixir 中的代码点是否为大写字母 我尝试检查它的值是否在范围内65 90但这对非拉丁大写字母失败 我也尝试过检查是否 String upcase cp cp 然而 这对非字母 即数字 标点符号 失败 我真的不想遍历整个 u
  • UIImageView,设置 ClipsToBounds 以及我的图像如何失去理智

    我正在开发一个 iOS 4 应用程序 我正在使用此代码UIImageView on an UITableViewCell cell photo contentMode UIViewContentModeScaleAspectFill cel
  • Hibernate 标准、整数和“like”

    我正在将一些 hql 语句迁移到 Criterias 现在我正在解决一个问题 实体属性是 Integer 类型 但我需要使用通配符搜索 所以在 hql 中我这样做 session createQuery from P1 where id l
  • 运行模拟器时 SQLiteConnection 数据库泄漏

    我正在运行模拟器并收到以下有关内存泄漏的错误 有趣的是 泄漏的数据库似乎是 Google gms 的数据库 而不是用户数据库 有谁知道如何修理它 谢谢 09 27 15 55 07 252 2058 2068 com google andr
  • 如何转到 vim 中所有缓冲区的最后一个编辑位置?

    很容易转到当前缓冲区中的最后一个编辑位置 看如何返回到 Vim 中最后一行之前编辑的行 更改列表是缓冲区本地的 每个缓冲区都有自己的更改列表 然而 我从最近编辑的缓冲区导航到另一个缓冲区是很常见的 并且以某种方式返回到原始缓冲区中的最后一个