2015-05-27 2 views
2

Скажем, я хочу, чтобы изменить следующую строку:Удалить обратно от курсора до конца предыдущей строки в Vim?

var myVar = 
    "I am a string!"; 

Так что это выглядит следующим образом:

var myVar = "I am a string!"; 

Есть ли движение, которое идет к концу предыдущей строки?

+5

В нормальном mode, поместите курсор в любом месте на строку 'var myVar =' и введите 'J'. – amphetamachine

+0

@amphetamachine, это правильный ответ. Отправьте это как ответ. – ronakg

ответ

6

Что вы хотите, это команда соединения линии, J.

В нормальном режиме наведите курсор на линию var myVar = и введите J (столица j).

Направление движения-накрест работы с J - J отступы 5 строк ниже курсора и т.д. Кроме того, можно выбрать диапазон линий с использованием визуального режима (v начать визуальный выбор режима) и присоедините их все к одному, используя J.

Опция &joinspaces также влияет на это поведение. Когда он «включен», он добавляет два пробела после метки окончания предложения при соединении строк. set nojoinspaces, чтобы отключить и вставить только одно пространство.

0

kJ будет делать то, что вы хотите, и, вероятно, что вы должны использовать, однако если вы хотите, чтобы делать то, что вы просили Удалить назад от курсора до конца предыдущей строки, то вы можете сделать следующее:

:set virtualedit+=onemore 
^ " go to the start of the line 
d?$<cr> 

?$<cr> это движение, которое идет к концу предыдущей строки. :set virtualedit+=onemore позволяет курсору перемещаться чуть ближе к концу строки, без чего мы удалим последний символ строки, который в приведенном примере будет конечным пространством.

Затем можно создать отображение, чтобы сделать это (: Нол только очищает поиска подсвечивание):

:nnoremap <leader>J ^d?$<cr>:nohl<cr> 

Хотя проще картирование добиться того же, что было бы:

:nnoremap <leader>J kJ 
Смежные вопросы