如何在vim中将小写标记用作全局标记?

3

如何将小写标记用作全局缓冲区?

这些标记是a-z,所以我不需要为仅缓冲区标记保留小写字母,因为我没有超过几个标记/缓冲区。

因此,我几乎总是想要全局标记,但是ma比mA更容易输入,'a与'A同理。


我不明白全局标记意味着什么,所以我试了一下。很酷的东西!- 它会把你带回到设置标记的缓冲区。很抱歉我没有答案,但是感谢你教给我这个知识。 - undefined
2个回答

3
你可以根据外观来进行映射。例如,在你的vimrc中。
nnoremap ma mA
nnoremap 'a 'A
nnoremap `a 'A

虽然我怀疑这种方法可能会使不使用“nnoremap”的插件出现问题。

0
我花了很多时间寻找一个合适的解决方案,但却一无所获,所以我回到了michael的答案背后的思路,并编写了这个小脚本。
-- Use lowercase for global marks and uppercase for local marks.
local low = function(i) return string.char(97+i) end
local upp = function(i) return string.char(65+i) end

for i=0,25 do vim.keymap.set("n", "m"..low(i), "m"..upp(i)) end
for i=0,25 do vim.keymap.set("n", "m"..upp(i), "m"..low(i)) end
for i=0,25 do vim.keymap.set("n", "'"..low(i), "'"..upp(i)) end
for i=0,25 do vim.keymap.set("n", "'"..upp(i), "'"..low(i)) end

这将创建所有26个字母的重新映射,如下所示:
  • m<小写字母> 创建一个新的全局标记
  • m<大写字母> 创建一个新的局部标记
  • '<小写字母> 跳转到全局标记
  • '<大写字母> 跳转到局部标记
我更喜欢这种方法,而不是在我的配置文件中添加4x26行。
请注意,在lua中,默认情况下,vim.keymap.set 是“非递归”的,因此您可以将小写字母替换为大写字母,反之亦然。
如果您不使用lua,您可以始终以vim脚本的方式编写上述脚本,如下所示:
lua << EOF
script here
EOF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接