2010-07-03 3 views
11

Я часто оказываюсь подпрыгивая на o или O и ctrl {для вставки пустых строк и возврата из режима вставки.Вставьте пустые строки без ввода режима вставки

мышление должна быть более простым способом, и в надежде сохранить свою позицию курсора, я взломал вместе эти корявые макросы:

map <Leader>O :let cursorpos = getpos(".")<CR>:i<CR><CR>.<CR>:let cursorpos[1] = cursorpos[1] + 1<CR>:call setpos('.', cursorpos)<CR> 
map <Leader>o :let cursorpos = getpos(".")<CR>:a<CR><CR>.<CR>:call setpos('.', cursorpos)<CR> 

Однако это не позволяет для диапазонов. Было бы неплохо иметь 5 \ O и получить 5 пробелов над моей текущей строкой.

Любые предложения о том, как я могу исправить это, чтобы разрешить диапазоны и по-прежнему возвращаться к исходной позиции курсора по завершении?

ответ

12

Вы можете использовать :call append(linenumber, repeat([''], 5)). Он не будет перемещать курсор.

+3

Отлично, это прекрасно. Я подумал, что должен быть еще более элегантный способ. Переключить его до: map O: call append (line (".") -1, повтор ([ ''], V: count1)) карту о: вызова Append (строка (" "), повтор (. [ ''], V: count1)) к ответьте на диапазоны. Спасибо! – JameyC

+0

Но в этом примере, если мы применим «счетную версию», он также будет перемещать курсор вверх/вниз. – user3663882

+0

@ user3663882. Нам нужно заменить ': call' на': call' и заменить 5 с 'v: count1' например. Или сохраните 5 и запустите команду с' 'или' ', чтобы очистить счетчик. –

9

Плагин unimpaired добавляет сопоставления, которые делают то, что вы хотите. Вы можете insert a blank line above the cursor с [<space>, или под курсором с ]<space>. Оба этих сопоставления могут быть добавлены с подсчетом.

1

Я добавил это в моем .vimrc

"create new line below current line without leaving normal mode or moving cursor 
noremap - m`o<Esc>`` 
"create new line above current line without leaving normal mode or moving cursor 
noremap _ m`O<Esc>`` 

Я предпочитаю это решение по нескольким причинам:

  • Я обычно не использовать - или _ ключи в обычном режиме и они расположены на одном физическом ключе на моей клавиатуре.
  • Кажется, что установка плагина для этого излишне. Я избегаю загрузки плагинов для простых вещей, поскольку они вводят новый код в мою среду, которую я еще не полностью понимаю или не доверяю, и это может помешать другим настройкам или плагинам.
  • Я пробовал решение от автора данного вопроса, находящегося в его комментарии под принятым ответом, но после использования этого . Команда делает странные и тревожные вещи.
  • Обычно я предпочитаю нажимать . несколько раз, передавая числовой аргумент, чтобы вместо того, чтобы сидеть там, подсчитывая вещи на моих пальцах, я просто продолжаю нажимать . пока он выглядит правильно (менее концептуальная визуализация и более реальное видение). К сожалению, даже это решение не работает так, как я хочу, с помощью . команда. Однако путем сопоставления - и _ их можно нажимать повторно для одного и того же эффекта. Просто обидно, что не ближе к дому подряд ...

ВНИМАНИЕ: Маркировка ключа ` влияет на список прыжков. Вы можете использовать любой другой знак, если это делает ваше удовольствие ++

Смежные вопросы