在插入模式下移动到行首

  • 本文关键字:行首 移动 插入 模式 vim
  • 更新时间 :
  • 英文 :


我知道我可以使用其中一种:

  1. 主页插入模式
  2. Esc+i退出插入模式并再次进入,有效地进入行的开头

但两者都不让我满意。在第一种情况下,我必须倾斜头部才能击中主页,因为我不能盲目地击中它。在第二种情况中,我的左臂必须离开主页排才能打出Esc

有什么想法吗?

Ctrl+O在插入模式下,只需按一次键即可进入命令模式。因此,Ctrl+O然后1Shift>+I

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

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

类似地,您可以使用A在行的末尾添加一些内容。

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

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

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

inoremap <C-i> <Home>

我已经将Ctrl+a和Ctrl+e分别映射到行首和行尾。这与大多数bash命令行的行为相匹配。对我来说效果很好。

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

如果您正在使用MacOS终端,请转到首选项…>设置>键盘并将结束键映射到Ctrl-O$(显示为\017$(,然后使用fn+left模拟结束键。对home键执行相同操作。转义序列\033[H也适用于home。

您最好的操作是将操作重新映射到不同的键(有关想法,请参阅如何重新映射<Ctrl Home>以转到文件中的第一行?(

我会想到我多久使用一次这个"功能",并根据

将其映射到键击

您可以将密钥映射到此:

inoremap II <Esc>I

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

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

理由:

  • _已经转到行的开头
  • 在vim中,将任何东西加倍是"到此行"的一种非常常见的方法
  • _不会与任何运动发生冲突(您已经在起跑线上了(
  • 如果你走到行的开头,现在想插入,你的手已经在正确的位置了

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延迟按下_来区分___

ctrl+o then 0
     |      |
  letter  number

我使用此命令转到行尾而不离开插入模式

inoremap jl <esc><S-a>

类似地,转到行的开头将是:

inoremap jl <esc><S-i>

最新更新