如何在不为 Vim 中的空行添加 space 的情况下加入行
How to join lines without adding space for empty line in Vim
当我使用 J
连接行时 space 会按预期自动添加。但是,当我有一行单词后跟一个空行并且我想用 J
删除该空行时,它会在我的当前行中添加一个 space 。我考虑过 nnoremaping
J
到 Jx
以便删除白色 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。
如果下一行为空,您可以定义一个函数在 gJ
和 J
之间切换。然后将该函数映射到 J
:
noremap J :call J()<cr>
function! J()
if getline(line('.')+1)=="" | exe 'normal gJ' | else | join | endif
endfunction
getline(line('.')+1)==""
检查下一行是否为空。
当我使用 J
连接行时 space 会按预期自动添加。但是,当我有一行单词后跟一个空行并且我想用 J
删除该空行时,它会在我的当前行中添加一个 space 。我考虑过 nnoremaping
J
到 Jx
以便删除白色 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。
如果下一行为空,您可以定义一个函数在 gJ
和 J
之间切换。然后将该函数映射到 J
:
noremap J :call J()<cr>
function! J()
if getline(line('.')+1)=="" | exe 'normal gJ' | else | join | endif
endfunction
getline(line('.')+1)==""
检查下一行是否为空。