Admin
08.09.2016

По просьбам трудящихся частично описываю свой файл .vimrc, который был написан за пару дней и конечно далек от идеала. Есть еще что дополнить и что подправить, но несколько интересных моментов автомати… зирующих написание Си программ в нем всетаки имеется.
В начале ничего особенного нет. Просто выставляем цветовую схему и некоторые другие параметры внешнего вида:
Далее идет самое интересное, а именно функция которая включается при загрузке Си файлов.
» Автоматически закрывает комментарий
imap /* /**/
» Делает тоже самое для кавычек
imap ‘ »
imap » «»
» Вводим #m — получаем форматированную функцию main
imap #m int main(int argc, char** argv
» Автодополнение #include и #define
» include дополняется вместе с угловыми скобками и курсор помещается между ними
imap #in #include <
iabbrev #d #define
» Поставить в конце строки ; и перейти на новую
imap ;;
» Создать форматированный блок {} для операторов
imap {{
» Создает форматированный блок {} для функций
imap `[
» Автоматический ввод комментариев-разделителей
imap `= //==============================
imap `- //———НУЖНУЮ ДЛИНУ ВЫБИРАЕМ САМИ—
» Уровень сокрытия по умолчанию для вновь открытых файлов
setlocal foldlevelstart=0
» Метод фолдинга — по синтаксису
setlocal foldmethod=syntax
» Включить подсветку невидимых символов
setlocal list
» Настройка подсветки невидимых символов
setlocal listchars=tab:· ,trail:·
endfunction
» Вызвать функцию CCodeEdit если открыт Си файл
autocmd FileType c call CCodeEdit()
Конечно есть cvim плагин, но вопервых он объемный и в нем многое не нужно лично мне, а во вторых самому писать приятнее 🙂
Чтобы понять насколько удобно вводить команды с этой функцией, это нужно попробовать 🙂 Рассмотрим пару примеров.
Скажем, я ввожу ‘if(‘ мне автоматически добавляется вторая скобка и я продолжаю писать условие. После этого не выходя за скобку, прямо на ходу нажимаю ‘{{‘ и у меня автоматически образуется обрамление:
Где | — это я условно обозначил позицию курсора, в которую он переходит сам! А ____ — это вместо пробелов, а то форматирования нету в теге кода…
Таким же манером вызываем функции. Пишем имя скобку ‘(‘ вторая дополняется сама. Указываем передаваемые параметры и нажимаем ‘;;’, курсор переходит к концу строки печатает ; и переходит на новую строку. В общем написание кода превращается в достаточно линейный процесс без неприятного ёрзанья стрелочными клавишами и enter`ом. В принципе в enter практически отпадает надобность. Ну может только для пустых строк. А так можно использовать двойное нажатие ;;, что думаю удобнее нажатия двух кнопок.
Больше из этого файла ничего не покажу, т.к. пока глючно работает. В частности пока не могу разобраться с:
imap «» «»
imap » »
Для ввода пустых строк, по аналогии со скобками. Но это почему-то не работает. Пишет типо бесконечный рекурсивный вызов образуется гдето. Также на очереди автодополнение по TAB и привязка функциональных клавиш к make и перебору ошибок компилирования. Буду рад, если кто-то поделится мыслями как это все сделать. Также буду рад если кто-то выскажет идеи для реализации.