Ответ 1
Ctrl + O, в то время как в режиме вставки вы вводите командный режим только для одного нажатия клавиши. Поэтому Ctrl + O, тогда Shift + I должен выполнить то, что вы ищете.
Я знаю, что могу использовать либо:
Но меня не удовлетворяет. В первом случае мне нужно наклонить голову, чтобы нажать Home, потому что я не могу слепо ударить его. Во втором случае моя левая рука должна покинуть домашнюю строку, чтобы попасть в Esc, что тоже раздражает.
Любые мысли?
Ctrl + O, в то время как в режиме вставки вы вводите командный режим только для одного нажатия клавиши. Поэтому Ctrl + O, тогда Shift + 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, чтобы имитировать конечный ключ. Сделайте то же самое для домашнего ключа. Escape sequence\033 [H также работает для дома.
Ваш лучший способ действий - переназначить действие на другой ключ (см. Как переназначить < Ctrl-Home > , чтобы перейти к первой строке в файле? для идей)
Я бы подумал, как часто я использую эту "функцию" и сопоставляю ее с нажатием клавиши
Вы можете сопоставить следующие клавиши:
inoremap II <Esc>I
Ярлык, который работал у меня (как мышечная память, так и интуитивность), - это карта __
(которая является двойной _
) для "вставки в начале текущей строки".
Обоснование:
_
уже идет в начало строки_
не конфликтует с какими-либо движениями (вы уже в начале строки)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