Проблема с smartindent в Vim

Если у Вас есть деньги: Рациональная IBM Очищает , чрезвычайно мощная утечка памяти промышленной силы и детектор повреждения памяти для C/C++. Существует для Windows, Соляриса и Linux. Если Вы только для Linux и хотите дешевое решение, пойдите для Valgrind.

6
задан T Zengerink 7 June 2012 в 18:13
поделиться

4 ответа

в статье здесь рассказывается о той же самой проблеме и о том, что нужно добавить в vimrc, чтобы ее исправить.

inoremap <CR> <CR><Space><BS>
nnoremap o o<Space><BS>
nnoremap O O<Space><BS>

Я точно не тестировал это.

также та же статья ссылки на более короткое альтернативное решение .

1
ответ дан 9 December 2019 в 20:47
поделиться

Используйте Shift + S , чтобы начать редактирование с пустой строки (очевидно, из командного режима). Курсор начнется с ожидаемого уровня отступа.


Другое решение-не-ответ-вопрос-как-спрос-но-является-лучшим-общим:

При вводе начала фигурная скобка в режиме вставки, это вставит соответствующий набор фигурных скобок и оставьте курсор на новой строке посередине.

:imap { {<CR>}<Esc>O

Аналогично, это автоматически вставит совпадающие скобки и квадратные скобки.

:imap ( ()<Left>
:imap [ []<Left>

(Удалите ведущие : при добавлении к vimrc .)

Как я прокомментировал ответ Виктора, изменение поведения отступа Vim оставит «пустые» строки, содержащие посторонние пробелы во всех ваших файлах. ИМО, это совершенно недопустимо.

8
ответ дан 9 December 2019 в 20:47
поделиться

My preferred method is {}shift+o as it outpaces {}k shift+s by several strokes. I get in a rut with it, though, and end up just using o or O to grab new, properly-indented lines off an empty when I should be using S.

That is, set up your bracing structure and open line-above:

if (true) {
}//cursor here, press shift-o

And you get the indenting you expect.

The open-above trick isn't any fewer keypresses than , but with escape remapped and shift being chorded, you can throw it in quite fast.

Also, don't forget your manual indent reset and block-movement. If you're inside a mangled curly brace block, simply use ={ (or =i{ if you're on top of one of the braces). I use that when I have a Good Idea that needs to see text asap, and I don't worry about any formatting frippery until I take a breather.

1
ответ дан 9 December 2019 в 20:47
поделиться

Когда это происходит со мной, я иногда использую ddko (или ddO ), чтобы удалить строку без достаточного количества пробелов и открыть новую строку с правильным отступом. Или я просто нажму A , а затем Tab столько раз, чтобы добраться до правильного отступа.

2
ответ дан 9 December 2019 в 20:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: