Из руководства:
*cc*
["x]cc Delete [count] lines [into register x] and start
insert |linewise|. If 'autoindent' is on, preserve
the indent of the first line.
*S*
["x]S Delete [count] lines [into register x] and start
insert. Synonym for "cc" |linewise|.
Поскольку удаляемая строка не имеет отступа, этот отступ сохраняется.Если вы вставите пробелы в эту строку, чтобы $ поместил ваш курсор здесь:
public function blah() {
var i = 0;
|
i++
return i;
}
, затем нажмите 0 , чтобы вернуться к первому столбцу, и, наконецнажмите S , вы получите желаемый результат.
Я понимаю, что это только объясняет текущее поведение, но не решает вашу проблему напрямую, но я не уверен в чистом способе решения вашей проблемы.вопрос.Я был бы склонен предложить сделать отображение следующим образом:
:nnoremap cc ddko
:nnoremap S ddko
Эти dd удаляют текущую строку, k перемещаются на предыдущую строку, o открыть ввод в следующей строке (используя smartindent для ввода отступа).