如何在不为 Vim 中的空行添加 space 的情况下加入行

How to join lines without adding space for empty line in Vim

当我使用 J 连接行时 space 会按预期自动添加。但是,当我有一行单词后跟一个空行并且我想用 J 删除该空行时,它会在我的当前行中添加一个 space 。我考虑过 nnoremaping JJx 以便删除白色 space ,但是当我加入两行时它不会添加 spaces其中的文字。翻阅手册后,我找不到任何听起来像我想要的内容。

以下是我希望发生的事情的一些示例。对于格式化,我提前表示抱歉。

目前我有:

之前(为了便于阅读,space 被替换为 -):

Some-text

之后:

Some-text-

之前:

Some-text
Some-more

之后:

Some-text-Some-more

我想要:

之前(space 被替换为 - 以提高可读性):

Some-text

之后:

Some-text

之前:

Some-text
Some-more

之后:

Some-text-Some-more

简而言之,当包含字符的行被连接时我想要一个 space 并且当被连接的行为空时不添加 space。

如果下一行为空,您可以定义一个函数在 gJJ 之间切换。然后将该函数映射到 J:

noremap J :call J()<cr>
function! J()
    if getline(line('.')+1)=="" | exe 'normal gJ' | else | join | endif
endfunction

getline(line('.')+1)=="" 检查下一行是否为空。