gpt4 book ai didi

vim - 原子地交换两个字符,这样就可以用 "."重复

转载 作者:行者123 更新时间:2023-12-04 21:40:05 25 4
gpt4 key购买 nike

Vim 中交换两个字符的习惯用法是 xp .

请参阅 :h 04.5 中的帮助、最后一段和 Vim: how do I swap two characters? .

但偶尔我需要连续执行两个或多个交换操作。我经常感到惊讶的是,对我来说感觉就像是一次操作,xp , 实际上是对 Vim 的两个操作。这使得无法重复 xp. . (或使用 u 原子撤消。)

有没有办法在单个操作中交换两个字符,我可以快速重复 . ?

最佳答案

这并不理想,但如果您将 xp 存储为宏,则在您执行该宏后它将是可重复的。因此,您使用的不是 xp,而是 @s(用于交换)。然后@@ 将重复它。不如 .,但它确实有效。

编辑:你知道的,我确信有一种方法可以通过一些 vimscript 和 tpope 的 repeat.vim 来实现这一点。 .可悲的是,我的 vimscript 不符合要求。我走了这么远 - 也许有人可以纠正我哪里出错了?

fun! DoSwap()
:normal xp
silent! call repeat#set("\<Plug>Swap",1)
endfun
nnoremap <silent> <Plug>Swap :call DoSwap()<CR>
nmap <Leader>s <Plug>Swap

问题在于,一旦您输入 \s ,它确实会交换您所在的字符,并且当您点击 . 时它会重复,但它首先跳到行首,这不是您想要的。但我确实认为这是可以做到的,我只是没有完全做到。

关于vim - 原子地交换两个字符,这样就可以用 "."重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18034417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com