" in ~/.vimrc or ~/.vimrc.after if you're using janus
nnoremap <cr><cr> :call ReturnToNewLine()<cr>
function ReturnToNewLine()
let previous_char = getline(".")[col(".")-2]
" if there's a space before our current position, get rid of it first
if previous_char == ' '
execute "normal! \<bs>\<esc>"
endif
execute "normal! i\<cr>\<esc>"
endfunction
我已经找到了一些最简单的方法来重复一个需要多个步骤的过程(即。移动文本到一个新行,删除,等等)是record a macro,执行一个命令,然后停止记录,并键入@a在每一行你想运行。例如车削
{"hi", "there", "you"}
进入:
{"hi",
"there",
"you"}
您可以键入(在正常模式下):
qa <--- start recording
f [space] <--- move cursor to next space
d$ <--- delete from cursor to end of line
o <--- move cursor and create new line below current line
[esc] <--- exit insert mode (default when pressing "o")
p <--- paste the deleted contents^^^
7条答案
按热度按时间13z8s7eq1#
下面的代码实现了与“普通”编辑器相同的行为(因为我脑子里没有更好的术语),除了你必须按两次而不是一次“回车”。
我也想摆脱空间,如果它是正确的,在我目前的字符。
可能有更简单的方法,我完全欢迎编辑:-)
这将两次按回车键重新Map到插入模式,放置回车和转义。我使用这个Map(两次回车)的原因是因为我已经习惯了在其他文本编辑器中按回车键的功能;而且输入两次回车也很快。
在这种情况下,我发现另一件有用的事情是允许Vim在最后一个字符之后移动(如果我想将最后一个字符移动到新的一行)。所以我在
~/.vimrc
中也有以下内容。请注意,我使用的是
nnoremap
(nnormal modenon-recursive)而不是map
(这是非常危险的)(查看此信息以了解有关http://learnvimscriptthehardway.stevelosh.com/chapters/05.html差异的更多信息)tzxcd3kk2#
你需要Map一些键来在光标处做一个换行符,我发现下面的Map很容易使用,只要去你的vimrc并添加这一行:
:map <silent> bl i<CR><ESC>
将光标处的换行符分配给“bl”组合szqfcxe23#
如果光标位于
<space>
上,如([]
标记光标):最简单的是
r<CR>
,也就是“用换行符替换当前字符”。否则,请使用@ martel的解决方案。
qni6mghb4#
所以你想把光标后面的当前行中的所有内容移到下一行?阅读:插入换行符??
要将此序列的键Map到单个键,请遵循@thb的建议并使用
:map
命令:oewdyzsn5#
这会使vi保持在插入模式。
vmdwslir6#
正如我在这篇文章中所回答的,如何在Vim中不进入插入模式的情况下在光标所在的位置插入换行符?.
请尝试
Control + j
。66bbxpm57#
我已经找到了一些最简单的方法来重复一个需要多个步骤的过程(即。移动文本到一个新行,删除,等等)是record a macro,执行一个命令,然后停止记录,并键入
@a
在每一行你想运行。例如车削进入:
您可以键入(在正常模式下):
其中
f [space]
是“f”键,后跟空格键。然后你只需要移动到你想要应用这个的每一行并输入(在正常模式下):或者你可以移动光标,进入插入模式,然后在每一行按回车键:)