在vim中,J可以将下一行与当前行连接起来。是否有类似的单键(或相对较短的)命令可以在给定光标位置拆分一行?我知道可以用简单的宏来完成,但如果存在J命令,应该会有类似的功能。我尝试搜索了一下,但似乎找不到答案。如何在Vim中插入光标所在位置的换行符而不进入插入模式?
rEnter 在空白处按下即可完成操作。这只需要两个按键。
.vimrc
中放置s
映射(http://vim.wikia.com/wiki/Insert_a_single_character),然后使用`<s> <Enter>`。 - Kyle Strandi
Enter
将在两个相邻的 HTML 标签之间不留空格地分割行。@dburke - dcx86我不认为有一个单一的快捷键可以完成这个功能。使用默认的Vim,你可以尝试使用iEnterEsc。
r<cr>
很糟糕,因为它可能会丢失一个字符。我不知道为什么那个回答获得了50多个赞。被接受的答案是唯一正确的答案。您也可以根据需要在某些内容之后或之前使用a<cr><esc>
来换行。” - Clever Programmerr<cr>
是很好的,因为它与 J
相反,它会删除空格。 - ischeriad我的解决方案是重新映射K键,因为我从不使用默认操作(使用“man”查找光标下的单词),而我的先前编辑器使用Alt+j和Alt+k来连接和拆分行。
:nnoremap K i<CR><Esc>
这将三个烦人的按键合并为一个。
可能有一种更高级的方法也可以消除任何尾随空格,但我更喜欢在写入时删除所有尾随空格。
K
的默认行为不应仅被视为严格的“man”(Unix 命令手册)。许多插件会将 K
重新定义为查找当前语言环境下的文档。例如,在 PHP 中,K
会带我到 php.net 的文档... - mike3996不行,我已经读了足够的答案来得出结论:没有这样的命令。
简单的答案是:在插入模式下按“Enter”键;但你说得对,在命令模式下应该有一个键可以做到。我也一直在想。
由于每个人都有自己喜欢的解决方法,我将分享我的解决方法。假设我会任何事情来避免按Esc键。
ylprX...其中“X”是插入的字符,甚至可以是换行符。
所以,“yl”是向右拷贝一个字符,“p”=粘贴字符,“r”是替换该字符;然后你只需输入新字符。那就是我有多讨厌使用Escape。
(顺便说一下,“l”表示“向右移动”)
虽然这是一个旧的线程,但我不使用“K”进行手册查找或任何它所做的魔术。因此,我在我的.vimrc文件中有这个映射:
map K i<Enter><Esc>
我想既然“J”代表联接(join),那么“K”可以表示破解(krack)或其他什么东西。 :)
如果您可以创建一个正则表达式来确定拆分位置,那么您可以拆分行。例如,如果您想在每个分号处拆分行,则可以使用以下替换:
%s/;/^v^m/g
效果非常好。