Время от времени мне приходится работать с кодом, который не соответствует уровню отступа, который я установил для Vim (4 пробела на уровень), обычно после копирования / вставки чего-либо в файл. Я обычно делаю с <<
и >>
. Проблема в том, что они не переходят на следующий уровень отступа, они просто добавляют или вычитают 4 пробела.
Если у меня есть такой код
if condition:
do this
do that
делать >>
на do that
приведет к
if condition:
do this
do that
Я хочу, чтобы это пошло на это
if condition:
do this
do that
Помимо простого соответствия отступа в строке выше, я хочу, чтобы он перешел на следующий уровень отступа, а не добавил 4 пробела.
Это то, что я имею в моем .vimrc относительно отступа
:set tabstop=4 shiftwidth=4 expandtab
indentation
Думитру
источник
источник
filetype plugin indent on
в вашем.vimrc
, типа файла (и плагин) отступа связанных правила будут применяться. Т.е. проверить , что вашеtabstop
значение на самом деле это (set tabstop?
будет делать, то же самое для других параметров), при редактировании, и изменить эти значения, добавив строку в «после» файла, что - то вроде: stackoverflow.com/a/159066/5000478>>
и<<
соответственно добавьте и удалите отступ, который не то, что вы хотите. То, что вы хотите, это «форматирование», что делается с==
.:nnoremap >> ^i<tab><esc>
если вы действительно хотите, чтобы поведение табуляции было>>
==
перейдет на уровень строки выше. Хотя это полезно знать, это не сработает во всех интересующих меня случаях. В дополнение к вопросу, для чего я хочу,>>
и<<
для отступа / отступа до следующего кратного смещения от границы в этом направлении. ,==
использует либоequalexpr
илиequalprg
для переформатирования данных строк.Ответы:
При использовании одной из команд
{count}>>
,{count}<<
,>{motion}
или<{motion}
, на некоторых линиях , которые уже отступление, и вы хотите их новый уровень отступа быть кратен вашей'shiftwidth'
стоимость опциона, вы можете включить'shiftround'
опцию, и добавьте эту строку в файлеvimrc
:источник
Если вы всегда хотите
>>
сделать отступ к следующей остановке и<<
удалить к последней остановке, вы можете привязать их следующим образом:Это переместит курсор, но вы, вероятно, могли бы сделать некоторую хитрость, чтобы переместить его назад.
^
не оставляетm'
отметки, но вы можете оставить ее внутри привязки.источник