在插入模式下移至行首

我知道我可以使用:

  1. 主页在插入模式下
  2. Esc + i退出插入模式并再次input,有效地进入行首。

但是不能使我满意。 在第一种情况下,我必须倾斜我的头打 ,因为我不能盲目打它。 在第二种情况下,我的左臂必须离开主队打Esc ,这也是烦人的。

有什么想法吗?

在插入模式下, Ctrl + O只能让您进入一个按键的命令模式。 因此, Ctrl + O然后Shift + 应该完成你在找什么。

您可以使用I (大写)input插入模式。

它将把光标放在行的开头。

同样,你可以使用A在行尾添加一些东西。

虽然,它并没有真正解决已经在插入模式下移动的问题。

我刚刚检查了插入模式的帮助,在插入模式下没有组合键在行的开头移动。

其他想法:仅在插入模式下重新映射新命令

inoremap <Ci> <Home>

我已经将Ctrl + a和Ctrl + e分别映射到行的开头和结尾。 这与大多数bash命令行的行为相匹配。 适合我。

 inoremap <Ce> <Esc>A inoremap <Ca> <Esc>I 

如果您正在使用MacOSterminal,请前往首选项…>设置>键盘,然后将结束键映射到Ctrl-O $(显示为\ 017 $),然后使用fn +左键模拟结束键。 对主键做同样的操作。 逃脱序列\ 033 [H也适用于家庭。

您的最佳做法是将操作重新映射到不同的键(请参阅如何重新映射<Ctrl-Home>以转到文件的第一行以获取想法)

我想我经常使用这个“function”,并将其映射到按键一致

你可以将键映射到这个:

 inoremap II <Esc>I 

ref: http : //vim.wikia.com/wiki/Quick_command_in_insert_mode

已经为我工作的快捷方式(肌肉记忆和直觉)是将__ (这是一个double _ )映射到“在当前行的开头插入”。

理由:

  • 已经进入线路的起点
  • 在vim中,将所有内容加倍是一种非常普遍的方式,即“这一行”
  • double _与任何动作都不冲突(你已经在行的开头)
  • 你的手已经在正确的地方,如果你去了行的开始,现在想插入。

Vimscript中:

 "insert at start of current line by typing in __ (two underscores) function DoubleUnderscore() if v:count == 0 && getcurpos()[2] == 1 :silent call feedkeys('I', 'n') else :silent call feedkeys('^', v:count + 'n') endif endfunction nnoremap <silent> _ :call DoubleUnderscore()<CR> 

这很复杂,因为易于替代的nnoremap __ _I会导致vim延迟按_来区分___