如何在vim中“全选”而不丢失光标位置?

7lrncoxx  于 2022-11-11  发布在  其他
关注(0)|答案(4)|浏览(144)

我的mswin.vim包含以下用于Ctrl-A的命令

inoremap <C-A> <C-O>gg<C-O>gH<C-O>G

这个命令正确地选择了文件中的所有行,但也使光标跳到了文件的末尾(不希望的副作用)。有没有办法在不移动光标的情况下“全选”?
提前感谢您的任何帮助或建议。

yquaqz18

yquaqz181#

恐怕这是无法实现的。因为在可视选择模式下,光标将位于可视范围的开始或结束位置。可视模式下的任何移动都将导致可视选择范围发生变化(取决于可视模式:字符/行/块方式)。
问题是,在select-allkept the cursor position之后你想做什么?这可能是一个X-〉Y的问题,只要告诉我们你的最终目标是什么。可能会有更好的解决方案。
顺便说一句,C-A对增加数字是如此有用,也许你想重新考虑Map触发器?

zbdgwd5y

zbdgwd5y2#

最 简单 、 最 快捷 的 方法 是 使用 :: % y + , 然后 转到 " Google 文档 " ( 或 任何 位置 ) 并 粘贴 。

bxpogfeg

bxpogfeg3#

你可以看一下getpossetpos--也许你可以把你想要的东西 Package 成这样:

function! TestFunc()
    let save_cursor = getpos(".")
    normal ggVG
    " -- do something
    call setpos('.', save_cursor)
endfunction
bxgwgixi

bxgwgixi4#

在vim中,您可以通过转到要删除的文本来执行此操作。不要键入I来插入,而是从要删除的文本开始键入v。接下来,您可以向下箭头到要删除的文本位置,然后再次按v。现在您已经选择了要删除的文本范围。接下来按I并退格键。source https://www.cs.swarthmore.edu/oldhelp/vim/selection.html

相关问题