Vim: Используйте вкладки для отступа, пробелы для выравнивания с исходными файлами на Си - PullRequest
7 голосов
/ 13 декабря 2011

Кто-нибудь настраивает ее vim таким образом, чтобы жесткие вкладки использовались в качестве символов отступа, но используются ли пробелы для выравнивания?У меня проблема в том, что при запуске строки продолжения, как в

if (condition1 && (anotherlongcondition || /* <-- Here I insert a newline */
|-------|-------   whatever  /* some additional alignment added automatically */

, cin (что для меня является обязательным) добавляет выравнивание так, как я предпочитаю позиционно , но это выравнивание создается с использованием как можно большего количества жестких вкладок и заполнением остальных пробелами (как я пытался визуализировать).

Итак, в общем, cin на самом деле, похоже, не делает различий между отступ и выравнивание .Мне бы очень хотелось, чтобы все добавленное выравнивание в приведенном выше примере было пробелами.Таким образом, выравнивание будет корректно сохраняться при временном переключении ts.

Чтобы еще раз понять, я хотел бы иметь возможность написать следующий код, никогда не нажимая <TAB> или <SPACE> вперед первым непустым символом в любой строке (без ручного смещения или чего-либо еще):

void foo(int bar)
{
|-------somestatement;
|-------if (somecondition && (someothercondition ||
|-------                      whatevercomesnext))
|-------|-------dosomething;
}

Я уже опробовал ctab.vim, но он фокусируется на редактировании Выровненная линия с мягкими вкладками, что мне кажется глупым, потому что ручное выравнивание - это задача, которая обеспечивает 1-шаговое уточнение, а не уточнение по ширине шага.Я не изменил способ cin, использующий смешанные табуляции и пробелы для выравнивания.

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

Ответы [ 2 ]

3 голосов
/ 14 декабря 2011

В дополнение к вашему: set cino = (1, вам также могут быть интересны опции 'preserveindent' и 'copyindent', если вы с ними не сталкивались. Они не полностью решают вашу проблему, но онииди к помощи.

1 голос
/ 13 декабря 2011

Хорошо, извините за вопрос.Наконец-то я нашел для этого хороший материал.

http://vim.1045645.n5.nabble.com/Indent-with-tabs-align-with-spaces-td1183279.html

Подводя итог, в настоящее время vim недостаточно гибок, чтобы это было удобно делать.

MyОбходной путь в настоящее время использует :set cinoptions=(1, который добавляет только одну единицу выравнивания при запуске строки продолжения.Таким образом, я могу быть уверен, что добавленное выравнивание является пробелом (если только я не :set ts=1, по крайней мере), и добавить большое количество пробелов вручную.Это все еще нормально с точки зрения скорости и кажется мне наименее отвлекающим поведением!

...