Vim分割线命令

dbu*_*rke 86 vim

可能重复:
如何在Vim中插入光标而不进入插入模式的换行符?

在vim中,J将下一行连接到当前行.是否有类似的一键(或相对较短)命令在给定的光标位置分割一条线?我知道它是用一个简单的宏完成的,但似乎如果J-command存在,那么应该有一个类似的函数.我试过寻找它,但似乎无法找到答案.

Mic*_*fik 169

rEnter而在空白上会做到这一点.这是两次击键.

  • 关闭,但没有雪茄.我经常想要在两个相邻的html标签之间分开,两者之间没有空格. (10认同)
  • @dburke在这种情况下,将`s`映射(http://vim.wikia.com/wiki/Insert_a_single_character)放在`.vimrc`中并使用`<s> <Enter>`. (3认同)

Bri*_*lin 41

我认为没有一个关键命令.你可以用stock vim做的最好i Enter Esc.

  • 更好:`r <Enter>`. (88认同)
  • r <enter>失去了一个char,但如果它是一个空格则很好. (17认同)
  • `r <cr>`很好,因为它与`J`相反,后者增加了一个空格. (6认同)
  • @AndyStewart`r <cr>`很糟糕,因为它会失去一个角色.我不知道为什么这个答案有50多票.接受的答案是唯一正确的答案.您还可以执行`a <cr> <esc>`,具体取决于您是否想在某事之后或之前中断. (3认同)

Ste*_*eve 35

我的解决方案是重新映射K键,因为我从不使用默认操作(用"man"查找光标下的单词),而我之前的编辑器分别使用Alt + j和Alt + k来连接和分割线.

:nnoremap K i<CR><Esc>
Run Code Online (Sandbox Code Playgroud)

这将这三个令人烦恼的按键合为一个.

可能有一种更复杂的方法来消除任何尾随空格,但我更喜欢在写入时删除所有尾随空格.

  • 这很棒!通常不小心按"K"对我来说是灾难性的,因为愚蠢的`man`页面功能,但现在我用实际有用的东西替换它. (4认同)
  • 这是一个很好的重新定义,但是`K`的默认行为不应该只被认为是严格的`man`.许多插件重新定义`K`以查找上下文语言中的文档.例如,在PHP中,`K`会带我到php.net文档... (3认同)

gba*_*rry 21

不,我现在已经阅读了足够的答案,得出的结论是没有这样的命令.

简单回答:在插入时按"Enter"将执行此操作; 但你是对的,在命令模式下应该有一把钥匙.我也想知道.

由于每个人都有一个最喜欢的解决方法,我会分享我的.假设我会做任何事情以避免必须达到Esc键.

ylprX ...其中'X'是插入的字符,甚至可以是换行符.

所以,'yl'在右边的char上猛拉,'p'=粘贴char,'r'代替char; 然后你只需输入新的字符. 这就是我讨厌使用Escape的原因.

(那是'l',如"向右移动",BTW)

  • 我要去提交功能请求.谁和我在一起?! (13认同)
  • @gbarry哇 - 您是否考虑重新映射CapsLock以执行Esc功能? (8认同)
  • 推荐:http://stackoverflow.com/questions/397229/reaching-up-to-hit-the-escape-key (5认同)
  • 再次"改善"vi?(大笑).我的猜测是,如果每个人都想要它并且它不存在,那么必须有一个理由.我真正想要的是"插入n个字符"cmd,它不会出现"插入模式". (2认同)

小智 8

旧线程,但我不使用"K"进行手册页查找或其所做的任何魔术.所以我在.vimrc中有这个映射:

map K i<Enter><Esc>
Run Code Online (Sandbox Code Playgroud)

我想,因为"J"是加入,"K"可以是krack或其他东西.:)


小智 7

如果可以为要添加拆分的位置创建正则表达式,则可以拆分行.例如,如果要分割每个分号的行,可以使用以下替换:

%S /;/^ V ^ M/G

效果很好