在插入模式下移动到行首

时间:2011-07-01 07:47:57

标签: vim

我知道我可以使用:

    插入模式
  1. Home
  2. Esc + i 退出插入模式并再次输入,有效地转到行首。
  3. 但是不满足我。在第一种情况下,我不得不倾斜我的头来打 Home ,因为我不能盲目地击中它。在第二种情况下,我的左臂必须离开主行才能击中 Esc ,这也很烦人。

    有什么想法吗?

9 个答案:

答案 0 :(得分:136)

Ctrl + O ,而在插入模式下,您只能按一次键进入命令模式。因此, Ctrl + O 然后 Shift + I 应该可以完成你想要的任务。

答案 1 :(得分:45)

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

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

同样,您可以使用A在行尾添加内容。

尽管如此,它并没有真正解决在插入模式下移动的问题。

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

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

inoremap <C-i> <Home>

答案 2 :(得分:20)

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

inoremap <C-e> <Esc>A
inoremap <C-a> <Esc>I

答案 3 :(得分:3)

如果您使用的是MacOS终端,请转到首选项...&gt;设置&gt;键盘并将结束键映射到Ctrl-O $(显示为\ 017 $),然后使用fn + left模拟结束键。对主页键执行相同操作。逃生序列\ 033 [H也适用于家庭。

答案 4 :(得分:1)

您最好的做法是将操作重新映射到其他键(请参阅How to remap <Ctrl-Home> to go to first line in file?了解相关信息)

我会想到我经常使用这个“功能”并将其映射到键盘按键

答案 5 :(得分:0)

您可以将键映射到此:

inoremap II <Esc>I

参考:http://vim.wikia.com/wiki/Quick_command_in_insert_mode

答案 6 :(得分:0)

对我有用的快捷方式(肌肉记忆和直觉)是将__(这是一个双_)映射到“在当前行的开头插入”。

理由:

  • _已经到了行的开头
  • 在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延迟按_来区分___

答案 7 :(得分:0)

ctrl+o then 0
     |      |
  letter  number

答案 8 :(得分:0)

我使用此命令在不离开插入模式的情况下转到行尾

inoremap jl <esc><S-a>

类似地,行首将是:

inoremap jl <esc><S-i>