我知道可以使用以下任一方式:
- 在插入模式下,按下 Home
- 按下 Esc 然后再按下 i 以退出插入模式并重新进入插入模式,从而有效地到达行的开头.
但是这两种方法都不能满足我的需求。在第一种情况下,我必须歪着头才能按到 Home,因为我无法盲目地按它。在第二种情况下,我的左手臂必须离开主位键盘区域才能按下 Esc,这也很烦人。
有什么建议吗?
我知道可以使用以下任一方式:
但是这两种方法都不能满足我的需求。在第一种情况下,我必须歪着头才能按到 Home,因为我无法盲目地按它。在第二种情况下,我的左手臂必须离开主位键盘区域才能按下 Esc,这也很烦人。
有什么建议吗?
Ctrl+O 是一种在插入模式下暂时进入命令模式的快捷键,只需要按下一个键即可返回插入模式。因此,使用 Ctrl+O 然后再按下 Shift+I 应该可以实现你想要的功能。
Ctrl-o
再跟着0
(比按下Ctrl-o
后跟着Shift-I
略微更有效率),你就会自动回到插入模式。在某些情况下,按下Ctrl-o
接着跟上^
可能更好(可以移到该行的第一个非空白字符)。 - Jeet您可以使用大写字母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键+左箭头模拟结束键。同样的操作也适用于home键。对于home键,也可以使用转义序列\033[H。
你最好的做法是将该操作重新映射到其他按键上(参见如何将<Ctrl-Home>键映射为跳转到文件第一行?以获取一些想法)
我会考虑自己使用这个“功能”的频率,并相应地绑定一个快捷键
ctrl+o then 0
| |
letter number
对我来说有用的一个快捷方式(肌肉记忆和直观性)是将__
(双下划线)映射到“在当前行的开始处插入”。
原理:
_
已经移到了行首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在按下_
时延迟以区分_
和__
。
我使用这个命令在不离开插入模式的情况下跳到行末
inoremap jl <esc><S-a>
同样地,回到行首的命令是:
inoremap jl <esc><S-i>