Vim: выравнивание непрерывных линий с пробелами

Я хотел бы сделать отступ в VIM с вкладками, кроме конкретного случая. Например, у меня есть этот код C ++ (где <tab> это серия символов табуляции и <s> это серия символов пространства):

<tab>if(true &&
<tab><s>true)
<tab>{
<tab><tab>//code here
<tab>}

Я хотел бы после написания&&’и нажмите’ o ‘, чтобы перейти на следующую строку и начать писать, чтобы vim поставил табуляцию и количество пробелов до’ (‘в предыдущей строке.

Можно ли определить этот стиль кодирования в vim?

Спасибо!

1

Решение

Я думаю, что вы ищете (N вариант для cinoptions, Пытаться set cinoptions+=(0, Согласно документации, это выглядит как выравнивание, которое вы ищете.

Дополнительную информацию можно найти с помощью команды справки: :help cinoptions-values или глядя на онлайн-версию помощь для cinoptions-значений.

Что касается вкладок, вы хотите отключить expandtab с :set noexpandtab, и вы хотите убедиться, что ваши закладки, программные вкладки и широта настроены соответственно. Например, исходный код Linux использует стиль, подобный тому, который вы упомянули выше, и у меня есть это в моем vimrc:

setlocal ts=8 sts=8 sw=8 tw=80

" Don't expand tabs to spaces.
setlocal noexpandtab

" Enable automatic C program indenting.
setlocal cindent

" Don't outdent function return types.
setlocal cinoptions+=t0

" No extra indentation for case labels.
setlocal cinoptions+=:0

" No extra indentation for "public", "protected", "private" labels.
setlocal cinoptions+=g0

" Line up function args.
setlocal cinoptions+=(0

" Setup formatoptions:
"   c - auto-wrap comments to textwidth.
"   r - automatically insert comment leader when pressing <Enter>.
"   o - automatically insert comment leader after 'o' or 'O'.
"   q - allow formatting of comments with 'gq'.
"   l - long lines are not broken in insert mode.
"   n - recognize numbered lists.
"   t - autowrap using textwidth,
setlocal formatoptions=croqlnt
3

Другие решения

Добавьте следующее в ваш .vimrc

set tabstop=2
set expandtab
set shiftwidth=2
set smarttab
set linebreak
set smartindent
set cindent
set autoindent

Это все, что вам нужно, чтобы развернуть удивительность в VIM. 🙂

0

По вопросам рекламы [email protected]