Перейти в начало строки в режиме вставки - PullRequest
76 голосов
/ 01 июля 2011

Я знаю, что могу использовать:

  1. Дом в режиме вставки
  2. Esc + i чтобы выйти из режима вставки и войти в него снова, фактически перейдя к началу строки.

Но ни то, ни другое меня не удовлетворяет.В первом случае я должен наклонить голову, чтобы ударить Дом , потому что я не могу слепо ударить его.Во втором случае моя левая рука должна покинуть домашний ряд, чтобы ударить Esc , что тоже раздражает.

Есть мысли?

Ответы [ 8 ]

139 голосов
/ 01 июля 2011

Ctrl + O , в то время как в режиме вставки вы переходите в командный режим только для одного нажатия клавиши. Поэтому Ctrl + O , тогда Shift + I должен выполнить то, что вы ищете.

46 голосов
/ 01 июля 2011

Вы можете войти в режим вставки, используя I (заглавная i).

Курсор будет помещен в начало строки.

Точно так же вы можете использовать A, чтобы добавить что-то в конец строки.

Хотя это не решает проблему перемещения, когда вы уже находитесь в режиме вставки.

Я только что проверил справку в режиме вставки, в режиме вставки нет комбинации клавиш для перемещения в начале строки.

Другая идея: Переопределить новую команду только в режиме вставки

inoremap <C-i> <Home>

22 голосов
/ 10 января 2015

У меня Ctrl + a и Ctrl + e, сопоставленные с началом и концом строки соответственно. Это соответствует поведению большинства командных строк bash. У меня хорошо работает.

inoremap <C-e> <Esc>A
inoremap <C-a> <Esc>I
3 голосов
/ 05 июля 2013

Если вы используете MacOS Terminal, перейдите в «Настройки»> «Настройки»> «Клавиатура» и сопоставьте конечную клавишу с Ctrl-O $ (она отображается как \ 017 $), а затем используйте fn + left для имитации конечной клавиши. Сделайте то же самое для ключа дома. Escape sequence \ 033 [H также работает для дома.

1 голос
/ 01 июля 2011

Ваш лучший способ действия - переназначить действие на другой ключ (см. Как переназначить действиеперейти к первой строке в файле? для идей)

Я бы подумал, как часто я использую эту "функцию" и сопоставляю ее с сочетанием клавиш соответственно

0 голосов
/ 04 декабря 2017
ctrl+o then 0
     |      |
  letter  number
0 голосов
/ 18 июля 2017

Сработал для меня ярлык (как мышечная память, так и интуитивность) для сопоставления __ (что является двойным _) для «вставки в начале текущей строки».

Обоснование:

  • _ уже идет к началу строки
  • в vim, удвоение чего-либо - очень распространенный способ сделать это "к этой линии"
  • double _ не конфликтует ни с какими движениями (вы уже в начале строки)
  • Ваша рука уже находится в нужном месте, если вы перешли к началу строки и теперь хотите вставить.

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 задерживать нажатие _, чтобы различать _ и __.

0 голосов
/ 10 августа 2015

Вы можете сопоставить ключи с этим:

inoremap II <Esc>I

ref: http://vim.wikia.com/wiki/Quick_command_in_insert_mode

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...