2009-07-20 2 views
6

Использование vim, я бы хотел иметь expandtabs, если я слева от любого текста в строке и дальше, если я справа от любого символа без пробелов. (Я хотел бы использовать вкладки для отступов и пробелов для выравнивания.)Можно ли сделать vim только для вкладок слева от текста?

Можно ли это сделать?

+0

Я твердо верю, что это можно сделать. Я просто не думаю, что это будет легко. –

ответ

5

Да. Используйте плагин Smart Tabs.

Этот скрипт позволяет использовать обычные настройки табуляции для начала строки, а вкладки расширены как места в другом месте. Это эффективно отличает «отступ» от «выравнивания».

<tab> Использует настройки вкладки редактора, чтобы вставить вкладку в начале строки (перед первым непространственным символом) и вставить пробелы в противном случае.

<BS> Использование параметров вкладки редактора удалить вкладки или 'расширенные' вкладки аля smarttab

Для того, чтобы Vim выстраиваться аргументы функции, добавить

set cindent 
set cinoptions=(0,u0,U0 

к .vimrc. Плагин будет кодировать пробелы, как например:

int f(int x, 
......int y) { 
--->return g(x, 
--->.........y); 
} 

Это делает выравнивание «x» и «y» не зависит от размера вкладки (tabstop).

4

попробовать что-то вроде этого:

function! TabMaybeIndent() 
    if strpart(getline('.'), 0, col('.') - 1) =~ '^\s*$' 
     return "\<Tab>" 
    else 
     return " " 
    endif 
endfunction 

set noexpandtab 
imap <Tab> <C-r>=TabMaybeIndent()<CR> 
+0

Это похоже на разумный подход. При незначительных настройках вы можете даже следить за текущей настройкой 'softtabstop' вместо того, чтобы вслепую вставлять 4 пробела. – ephemient

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