2009-05-10 4 views
3

Есть ли способ иметь висячие операторы при отступы с вкладками в Vim? Например, если у меня есть код:Висячие операторы в Vim

class some_class 
{ 
<tab>some_class(); 
<tab>~some_class(); 
}; 

Я хочу, чтобы она выглядела так:

class some_class 
{ 
     some_class(); 
     ~some_class(); 
}; 

Вопрос идет о внешности пробельных символов, а не ее состав. Таким образом, аббревиатуры и правила отступов не будут выполняться.

ответ

3

Я думаю, что он просит, если ~ будет двигаться в обратном направлении один пробел, если ВИМ может обнаружить, что это оператор, тем самым «вися» слева от some_class().

Ответ, насколько я знаю, это возможно, но будет непросто. Аббревиатуры вставки вставки всегда неоднородны, а более сложные решения ... более сложны.

Если вам действительно не нужно такое поведение, я не думаю, что это стоит усилий.

EDIT:

Я думаю, что я получаю то, что вы говорите. В этом случае я могу с достаточной уверенностью сказать, что то, что вы просите, невозможно. Вы не можете изменить, как vim отображает текст с отступом по вкладкам и происходит, чтобы начать с оператора, который вы хотите повесить на левом поле. Это просто не сработает. Vim настроен для отображения текста как есть, вы не можете изменить его в соответствии с типографским стилем без изменения исходного кода, что, я сомневаюсь, вы захотите сделать.

+0

Чтобы повторить, вопрос заключается в отступе с вкладками, а не пробелами. Кроме того, аббревиатуры не могут быть заданы в виде пробелов. –

+0

Думаю, я понимаю немного лучше, я обновлю свой ответ. – sykora

+0

Ну. Существует «tabstop». Но я сильно подозреваю, что ты прав. –

0

Я не уверен, что понимаю концепцию «висячего оператора», но, похоже, вы хотели бы заменить свои вкладки пробелами.

Вы можете установить expandtab и TabStop варианты:

:set expandtab 
:set tabstop=8 

Это расширит новые символы табуляции вы вводите в 8 пробелов.

Чтобы применить табуляции расширение существующих вкладок в файле, используйте команду retab:

:retab 
+0

Нет, я не хочу заменять язычки пробелами. Скорее, я хочу улучшить визуальное представление вкладок. Есть много примеров, когда это сделает код более читаемым. Термин происходит из типографики: http://en.wikipedia.org/wiki/Hanging_punctuation –

0

Похоже, вам нужно написать свой собственный файл отступа для этого, примеры которого приведены в $VIMRUNTIME/indent. Но, как говорит сикора, это, вероятно, не стоит усилий.

+0

Если я правильно понимаю, отступы определяют, какие символы использовать для отступов, но не имеют ничего общего с их внешним видом. –

+0

Это правильно. Я либо пропустил ваше замечание о том, что текст просто выглядит отступом, либо его не было, когда я ответил. –

0

Я думаю, что вы хотите, это называется «аутоинтендент». См .: help ai

'autoindent' 'ai' boolean (default off) 
      local to buffer 
    Copy indent from current line when starting a new line (typing <CR> 
    in Insert mode or when using the "o" or "O" command). If you do not 
    type anything on the new line except <BS> or CTRL-D and then type 
    <Esc>, CTRL-O or <CR>, the indent is deleted again. Moving the cursor 
    to another line has the same effect, unless the 'I' flag is included 
    in 'cpoptions'. 
    When autoindent is on, formatting (with the "gq" command or when you 
    reach 'textwidth' in Insert mode) uses the indentation of the first 
    line. 
    When 'smartindent' or 'cindent' is on the indent is changed in 
    a different way. 
    The 'autoindent' option is reset when the 'paste' option is set. 
    {small difference from Vi: After the indent is deleted when typing 
    <Esc> or <CR>, the cursor position when moving up or down is after the 
    deleted indent; Vi puts the cursor somewhere in the deleted indent}. 
+0

То, что я прошу, имеет больше общего с вещами типа «tabstop», которые влияют на внешний вид отступа. –

Смежные вопросы