我知道我可以使用:
但是不满足我。在第一种情况下,我不得不倾斜我的头来打 Home ,因为我不能盲目地击中它。在第二种情况下,我的左臂必须离开主行才能击中 Esc ,这也很烦人。
有什么想法吗?
答案 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)
答案 6 :(得分:0)
对我有用的快捷方式(肌肉记忆和直觉)是将__
(这是一个双_
)映射到“在当前行的开头插入”。
理由:
_
已经到了行的开头_
与任何动作都没有冲突(你已经处于行首)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>