我知道我可以使用其中一种:
- 主页插入模式
- 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>