Есть ли команда разделить строки в Vim?


15

В Vim Jключ соединяет две строки вместе. Существует ли аналогичная встроенная комбинация клавиш для разделения строк с новой строкой (в позиции курсора или аналогичная)?

В качестве альтернативы, какой самый надежный способ определить комбинацию клавиш для этого (в обычном режиме, а не в режиме вставки)?


Ответы:


16

Нет, для этого нет встроенной команды.

Когда я хочу разделить <Space>, я делаю r<CR>.

--- РЕДАКТИРОВАТЬ ---

Комментарий @ keith-nicholas напомнил мне об этом вопросе. В то же время я предложил «универсальный» метод:

function! BreakHere()
    s/^\(\s*\)\(.\{-}\)\(\s*\)\(\%#\)\(\s*\)\(.*\)/\1\2\r\1\4\6
    call histdel("/", -1)
endfunction

nnoremap <key> :<C-u>call BreakHere()<CR>

4
Использование r<CR>просто умно! Спасибо!
Марсело

1
замечательно! супер раздражает
Кит Николас

Я нашел s<CR>держит отступ, тогда как r<CR>нет.
Toxefa

5

a Enter Escразделить вправо от курсора или i Enter Escразделить влево.


1
Вот и все. Просто вставьте одну новую строку. В качестве альтернативы: используйте r + <return>, чтобы заменить символ под курсором новой строкой. Было бы неплохо иметь команду с одной буквой, но, насколько я знаю, ее нет.
Тонни

2

Самый простой способ разделить строки в Vim - это команда нормального режима gq(быстро наберите обе буквы в обычном или визуальном режиме):

  • В визуальном режиме он будет разделять все, что выбрано.
  • В обычном режиме вы следуете gqс движением.

Например, gqlразделит одну строку на текущую заданную ширину. Чтобы установить ширину линий разделения, отличную от текущей, вы можете использовать

:set textwidth=<n>

Где n = количество символов, которое вы хотите в строке, например, 10, и когда вы закончите, вернитесь к нормальной ширине.

Получил эту информацию из видео на Youtube от Kholidfu, которое показывает, как соединять и разбивать линии в обычном режиме с помощью движения: Vim Tutorial - Join и Split Lines .


1

Вы можете определить свой собственный, используя карту. Чтобы определить z в качестве команды, например:

:map z i<CTRL+m>

0

Вы можете записать макрос:

в обычном режиме введите «q +», чтобы начать запись. нажмите «я», макрос, который вы хотите записать. затем снова нажмите «q», чтобы остановить запись.

чтобы использовать макрос, перейдите в обычный режим и введите «@ + буква».

в моем случае я использовал «b» для использования этого макроса: для записи типа в обычном режиме «qbiq» для использования типа в обычном режиме «@b»

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.