【发布时间】:2019-01-06 05:33:01
【问题描述】:
我试图在我的 vimrc 中重新映射,添加一个 sn-p,然后在插入模式下转到下一行:
:nnoremap <leader>b oimport pdb;pdb.set_trace()<esc> o
sn-p import pdb;pdb.set_trace() 被插入到我当前的缓冲区中,但 vim 中的光标仍然在同一行。插入sn-p后有什么办法让光标移到下一行?
【问题讨论】:
标签: vim
我试图在我的 vimrc 中重新映射,添加一个 sn-p,然后在插入模式下转到下一行:
:nnoremap <leader>b oimport pdb;pdb.set_trace()<esc> o
sn-p import pdb;pdb.set_trace() 被插入到我当前的缓冲区中,但 vim 中的光标仍然在同一行。插入sn-p后有什么办法让光标移到下一行?
【问题讨论】:
标签: vim
对我来说,您的映射有效,除了在缓冲区的末尾(当您报告时,它会发出哔哔声并将光标保持在插入行的末尾)。
原因是<esc> 和o 之间的空格。 :help <Space> 是一个运动(向右,就像l),如果光标不能移动到那里(在缓冲区的末尾,也可能在其他地方,取决于'whichwrap' 选项),Vim 会发出哔哔声并中止映射;即之后的所有键都将被忽略。
解决方法很简单:删除多余的空格,映射将在任何地方都有效!
nnoremap <leader>b oimport pdb;pdb.set_trace()<esc>o
【讨论】:
这个怎么样:
nnoremap <leader>b oimport pdb;<CR>pdb.set_trace()<CR>
【讨论】: