gpt4 book ai didi

vim - 在 vim 中可以循环滚动吗?

转载 作者:行者123 更新时间:2023-12-04 23:42:37 25 4
gpt4 key购买 nike

是否可以配置 vim 使移动命令“环绕”垂直(或水平)缓冲区?

换句话说,假设我在缓冲区的第 2 行,处于可视模式。我按 3k。我的光标现在位于缓冲区的最后一行。

或者更简单地说,我的光标在文件的第一行——我按k。现在我的光标翻转到文件的最后一行。

抱歉,如果之前有人问过这个问题,但我找不到任何搜索“循环滚动”或“环绕滚动”的引用。

最佳答案

通过一些 vimscript hackery 可能是可能的,但是通过 G 之类的 Action 变得高效更加普遍。转到文件底部和gg1G<C-Home>转到文件顶部。同样,$一行的结尾和0行首或^第一个非空白字符。

您也可以设置:help whichwrap ,它指定哪些键在移过行尾时将移至下一行,或在移过行首时移至上一行。除此之外,我认为没有内置功能可以满足您的要求。您可以使用一些 vimscript 来做到这一点,但它需要将 h、j、k 和 l 重新映射到函数并处理它们是否位于行/文件的末尾/开头。对我来说,这似乎有点矫枉过正而且相当困惑。

说了这么多,如果你必须...

nnoremap j :call CheckJ()<cr>
nnoremap k :call CheckK()<cr>
nnoremap h :call CheckH()<cr>
nnoremap l :call CheckL()<cr>

fun! CheckJ()
if line('.') == line('$')
norm! gg
else
norm! j
endif
endfun

fun! CheckK()
if line('.') == 1
norm! G
else
norm! k
endif
endfun

fun! CheckH()
if col('.') == 1
norm! $
else
norm! h
endif
endfun

fun! CheckL()
if col('.') == (col('$') - 1)
norm! 0
else
norm! l
endif
endfun

关于vim - 在 vim 中可以循环滚动吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12380689/

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