Можно ли заставить vim расширять вкладки только слева от текста? - PullRequest
5 голосов
/ 20 июля 2009

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

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

Ответы [ 2 ]

5 голосов
/ 20 июля 2009

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

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

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

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

Чтобы заставить аргументы функции выравнивания Vim добавить

set cindent
set cinoptions=(0,u0,U0

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

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

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

4 голосов
/ 20 июля 2009

Попробуйте что-то вроде этого:

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

set noexpandtab
imap <Tab> <C-r>=TabMaybeIndent()<CR>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...