gpt4 book ai didi

Vim - 如何跳转到段落的开头/结尾(适用于所有情况)

转载 作者:行者123 更新时间:2023-12-04 01:02:37 36 4
gpt4 key购买 nike

真的没有简单的映射来跳转到段落的第一行或最后一行吗?

{} 是“独占”命令,因此它们会跳转到段落前后的空行如果有的话,但对于段落的实际第一行或最后一行(即,当段落位于缓冲区的顶部或底部时)。

这种差异似乎使得无法以任何直接的方式进行补偿,例如{w 如果前面有一个空行,则跳转到段落的开头,但对文件中的第一段做错了。

最佳答案

目前,Vim 中还没有这样的 Action 。

尽管在 :h todo 中它被标记为 7(即尽快):

7   Add "g{" and "g}" to move to the first/last character of a paragraph
(instead of the line just before/after a paragraph as with "{" and "}").

如果我们只限于当前段落,那么我可以提出临时解决方案:

nnoremap g{ vipo<Esc>
nnoremap g} vipoo<Esc>

如果我们想要更接近真实的东西,那么我们可以使用函数:

function! Foo(x,y) abort
if empty(getline(line('.') + (a:x == '{' ? -1 : 1)))
exec "norm! ".a:x
endif
exec "norm! ".a:x
if empty(getline('.')) | exec "norm! ".a:y | endif
endfunction

nnoremap <silent> g{ :call Foo('{', 'w')<CR>
nnoremap <silent> g} :call Foo('}', 'ge')<CR>

关于Vim - 如何跳转到段落的开头/结尾(适用于所有情况),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67744054/

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