Vim 中是否有分割行的命令?

And*_*ier 20 vim vi

在 Vim 中,J键将两行连接在一起。是否有类似的内置组合键来用换行符(在光标位置或类似位置)拆分行?

或者,定义组合键的最可靠方法是什么(在正常模式下,而不是插入模式下)?

rom*_*inl 22

不,没有内置命令。

当我想拆分 a 时<Space>,我会这样做r<CR>

- - 编辑 - -

@keith-nicholas 的评论让我想起了这个问题。FWIW 同时我想出了一个有希望的“通用”方法:

function! BreakHere()
    s/^\(\s*\)\(.\{-}\)\(\s*\)\(\%#\)\(\s*\)\(.*\)/\1\2\r\1\4\6
    call histdel("/", -1)
endfunction

nnoremap <key> :<C-u>call BreakHere()<CR>
Run Code Online (Sandbox Code Playgroud)

  • 使用 `r&lt;CR&gt;` 简直太聪明了!谢谢! (5认同)
  • 我发现 `s&lt;CR&gt;` 会保留缩进,而 `r&lt;CR&gt;` 不会。 (2认同)

小智 8

我发现在 Vim 中分割行的最简单方法是正常模式命令gq(在正常或可视模式下快速连续键入两个字母):

  • 在视觉模式下,它将分割所选的任何内容。
  • 在正常模式下,您可以跟随gq一个动作。

例如,gql将一行分割为当前设置的宽度。要将分割线的宽度设置为与当前设置不同,您可以使用

:set textwidth=<n>
Run Code Online (Sandbox Code Playgroud)

其中n=您想要在一行中包含的字符数,例如10,完成后更改回正常宽度。

从 Kholidfu 的 Youtube 视频中获取此信息,该视频展示了如何使用动作在正常模式下连接和分割线:Vim 教程 - 连接和分割线


Sco*_*ott 5

a Enter Esc向光标右侧拆分,或i Enter Esc向左拆分。