Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/100: Рейтинг темы: голосов - 100, средняя оценка - 4.92
32 / 32 / 17
Регистрация: 10.10.2012
Сообщений: 88

VIM в качестве легкой IDE

28.11.2012, 16:19. Показов 20796. Ответов 25

Студворк — интернет-сервис помощи студентам
Я решил создать эту тему, потому что когда я начал программировать с помощью VIM, у меня возникли вопросы, ответы на которые приходилось искать довольно долго. Надеюсь эта статья поможет новичкам открыть для себя этот прекрасный текстовый редактор и настроить его так, что бы работа в нем была комфортной.

Установка VIM (хотя обычно VIM устанавливается в время установки ОС):
Кликните здесь для просмотра всего текста
Для установки VIM введите в терминале:
Open suse:
Bash
1
zypper install vim
Fedora:
Bash
1
yum install vim
Ubuntu:
Bash
1
apt-get install vim
Debian:
Bash
1
aptitude install vim
Gentoo:
Bash
1
emerge vim

Вот как VIM выглядит у меня:
Данная тема для тех, кто хотя бы ненмого умеет работать в VIM (немного, это значит умеет хотя бы выйти из него сохранившись, и знает как перейти в режим редактирования текста), в противном случае введите в консоли команду:
Bash
1
vimtutor
в ней подробно описаны практически все тонкости управления VIM. Теперь перейдем непосредственно к настройке.
Так выглядит VIM у меня:

Однако вы его можете настроить так, как удобно вам.
Установленные у меня плагины:
Taglist - с этим замечательным плагином навигация по коду заметно облегчается.
Установка taglist:
Кликните здесь для просмотра всего текста
Полная установка плагина описана на его странице: http://www.vim.org/scripts/scr... ipt_id=273 (там же его можно скачать). Но для наглядности напишу, как их устанавливал я:
1. Скачиваем плагин.
2. Распаковываем любым удобным для вас способом
3. Копируем плагин (файл с разрешением .vim) в директорию /usr/share/vim/vim73/plugin
Bash
1
cp taglist.vim /usr/share/vim/vim73/plugin
4. В VIM вводим ToggleTlist
Вот и весь процесс установки. Нетрудно, правда?

Больше я никакими плагинами не пользуюсь, однако плагинов огромное количество, более того, в VIM встроен мощный язык, на котором вы сами сможете писать плагины.
Теперь перейдем к настройке vimrc.
Редактировать его вы можете любым удобным для вас способом.
Для редактирования в VIM введите в консоли:
Bash
1
vim /etc/vimrc
В vimrc есть все настройки VIM.

Для примера приведу свои настройки vimrc

p.s. Если перед командой стоят ковычки, то значит эта команда отключена (тоесть закомментирована)
Основные настройки
Кликните здесь для просмотра всего текста
"set number " нумерация строк
set bs=indent,eol,start " backspace без глюков
set nocompatible " несовместимость с VI
set wrap " включаем перенос строк
set linebreak " перенос по словам, а не по буквам
set showcmd " просмотр выполняемой команды в правом нижнем углу
set ruler " показывать строку с позицией курсора
syntax on " подсветка синтаксиса
set mouse= " отключение мыши
set showmatch " показывать первую парную скобку после ввода второй
"set showtabline=2 " всегда показывать строку вкладок
"set laststatus " всегда показывать строку статуса
set title " показывать имя буфера в заголовке терминала
set confirm " использовать диалоги вместо сообщения о ошибках
set statusline=%<%f%h%m%r%=format=%{&filefor mat}\ file=%{&fileencoding}\ enc=%{&encoding}\ %b\ 0x%B\ %l,%c%V\ %P " включение дополнительной информации о статусной строке
set visualbell " мигание вместо звукового сигнала
set hidden " не выгружать буфер при переключении на другой файл
set t_Co=256 " использовать больше цветов в терминале
set background=dark " задаем фон терминала, влияет на подсветку синтаксиса
set smartindent " включаем умную автоматическую расстановку отступов
set autoindent " наследовать отступы предыдущей строки
set tabstop=4 " размер табуляции
set shiftwidth=4 " размер сдвига при нажатии на клавиши < или >
set cursorline " подсветка текущей строки
"set autoread " автоматическое перечитывание файла при изменении
set pastetoggle= " сохраняет отступы при вставке фрагмента
"set splitbelow " разбивать окно горизонтально снизу
"set splitright " разбивать окно вертикально справа
set foldmethod=syntax " фолдинг (сворачивание блоков кода) (zc - свернуть, zo - развернуть)
"set completeopt=longest,menuone "автодополнение

Настройки поиска:
Кликните здесь для просмотра всего текста
set nohlsearch " отключение подсветки найденного выражения
set smartcase " поиск с учетом регистра
set nowrapscan " останавливать поиск при достижении конца файла
set history=150 " история команд
set undolevels=1000 " история правок
set infercase " предлагать авто-дополнения на основе уже введенного

Swap и Backup файлы
Кликните здесь для просмотра всего текста
" set noswapfile " отключение создание swap файлов
" set dir=~/.vim/swap/ " все файлы swap будут помещаться в эту директорию
" set nobackup " отключение создания бекапов (если свет вырубят, повеселишься)

Кодировки, горячие клавишы и прочее
Кликните здесь для просмотра всего текста
" if has("unix")
" language en_US.UTF-8 " использовать анлийскую локаль на любой системе
" endif
" set encoding=utf-8 " кодировка по умолчанию
" set termencoding=utf-8 "
" set fileformat=unix " формат файла по умолчанию
" set wildmenu " показывать все возмодные кандидаты для выбора при авто-завершении команд
" set wcm=<TAB>

Биндинги, команды и прочее (с объяснением)
Кликните здесь для просмотра всего текста
" Небольшое объяснение по синтаксису мапинга
" map последовательность_клавиш действие
"
" Клавиши:
"
" Shift: <S-...>
" Ctrl: <C-...>
" Meta: <M-...>
" Alt: <A-...>
"
" Пример: map <S-s>k dd //в этом примере последовательное нажатие Sk удалит строку
"
" <F1>...<F12>
"
" Enter: <CR> или <Enter> или <Return>
" Пробел: <Space>
" Esc: <Esc>
"
" РЕЖИМЫ
"
" Normal: режим ввода команд
"
" Visual: режим “визуального” выделения блоков текста, к которым затем применяются команды Normal режима
"
" Operator-pending: режим, в котором Vim ожидает дополнительного “поясняющего” ввода (например после " нажатия клавиш “d”, “y”, “c”, и т.п.).
"
" Insert: режим непосредственной вставки текста
"
" Command-line: режим, в котром находится редактор после нажатия клавиш “:” или “/”
"
" Lang-Arg: режим поиска
"
" ОБЛАСТЬ ДЕЙСТВИЯ ЗАБИНДЕННЫХ КЛАВИШ
"
"map
" Normal, Visual, Operator-pending
"map!
" Insert, Command-line
"nmap
" Normal
"vmap
" Visual
"omap
" Operator-pending
"cmap
" Command-line
"imap
" Insert
"lmap
" Insert, Command-line, Lang-Arg

map <C-c> y<CR> "позволяет копировать текст нажатием Ctrl+c
map <C-v> p "позволяет вставлять текст нажатием Ctrl+v
imap <C-v> <ESC>pi "тоже вставка текста, только в режиме редактирования
vmap <C-c> y<CR> "копирование текста, только в визуальном режиме

"следующие четыре мапинга позволяют переключаться между открытыми в VIM'e окнами нажатием alt+стрелки
map <A-Left> <C-w><Left> "
map <A-Right> <C-w><Right> "
map <A-Up> <C-w><Up>
map <A-Down> <C-w><Down>

"это биндинги для фолдинга. позволяют свертывать/разворачивать код в обычном режиме нажатием -/+
map + zo
map - zc

"эти биндинги для меню. благодоря этим биндингам можно нажатиями F1, F2, F3, F4 вызывать различные меню
set wildmenu
set wcm=<Tab>
menu Taglist.Open/Close :TlistToggle<CR> "открытие taglist
menu Taglist.Reload :w<CR><C-w><Left>u <C-w><Right> "обновление taglist
menu Folding.Open zo "открыть свернутый код
menu Folding.Close zc "скрыть развернутый код
menu Folding.Open_all zR "открыть все свертки
menu Folding.Close_all zM "закрыть все свертки
menu File.Save :w<CR> "сохранение файла
menu File.Load_new_window :sp +Explore<CR> "запуск встроеного файлового менеджера в новом окне
menu File.Load_and_save :w<CR> :Explore<CR> сохранение и запуск файлового менеджера
menu File.Load :Explore<CR> "запуск файлового менеджера в новом окне
menu File.Exit_and_Save :wq<CR>:q!<CR>:q!<CR>:q!<CR>:q!<CR>:q!<C R>:q!<CR> "полный выход и сохранение
menu File.Exit :q!<CR>:q!<CR>:q!<CR>:q!<CR>:q!<CR>:q!<C R>:q!<CR> "полный выход без сохранения
menu Project.Compile :w<CR>:!clear;g++ %<CR> "компиляция проекта (С++)
menu Project.Run :w<CR>:!clear;./a.out<CR> "запуск проекта
menu Project.Debug :w<CR>:!clear;gdb a.out<CR> "отладка проекта с помощью GDB

"мапинги длля вызовов меню
map <F1> :emenu File.<Tab>
map <F2> :emenu Project.<Tab>
map <F3> :emenu Taglist.<Tab>
map <F4> :emenu Folding.<Tab>
imap <F1> <ESC>:emenu File.<Tab>
imap <F4> <ESC>:emenu Folding.<Tab>
imap <F2> <ESC>:emenu Project.<Tab>
imap <F3> <ESC>:emenu Taglist.<Tab>
vmap <F1> <ESC>:emenu File.<Tab>
vmap <F4> <ESC>:emenu Folding.<Tab>
vmap <F2> <ESC>:emenu Project.<Tab>
vmap <F3> <ESC>:emenu Taglist.<Tab>

Надеюсь эта статья оказалась полезной для вас. Если вы найдете в ней ошибки или неточности пишите, буду исправлять.
5
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.11.2012, 16:19
Ответы с готовыми решениями:

VIM как IDE для Python
Здравствуйте ещё раз. Понимаю что эта тема не раз поднималась в интернете. Большенство обсуждений безнадёжно устарели. Некоторые плагины...

[Mono] C# в Linux. Что используется в качестве IDE
Я напр. вот из под Ubuntu 10.04 пытаюсь писать, увы только консольные, использую MonoDevelop, пытаюсь создать GTK, вылазит это: ...

obj\Debug\IDE.o||In function `Z11OpenProjectv':| C:\tsserver\Projects\cpp\codeblocks\MyComp\IDE\IDE\IDE.cpp|2 36|undefined reference to `GetOpenFileNam
obj\Debug\IDE.o||In function `Z11OpenProjectv':| C:\tsserver\Projects\cpp\codeblocks\MyComp\IDE\IDE\IDE.cpp|236|undefined reference to...

25
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
28.11.2012, 21:35
Хм, клево! Даже не знал, что для vim'а есть подобные плюшки. Пользовался им только для мелкого редактирования или FakeVim'ом (это часть QtCreator).
Цитата Сообщение от kuli4ok Посмотреть сообщение
Gentoo:
Bash
1
emerge vim
сомневаюсь, что ползователям Gentoo нужно показывать как установить программу
1
32 / 32 / 17
Регистрация: 10.10.2012
Сообщений: 88
28.11.2012, 21:55  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
Хм, клево! Даже не знал, что для vim'а есть подобные плюшки. Пользовался им только для мелкого редактирования или FakeVim'ом (это часть QtCreator).

сомневаюсь, что ползователям Gentoo нужно показывать как установить программу
Согласен, пользователям gentoo это ни к чему, просто писал для самых популярных дистрибутивов, а gentoo входит в это число, вот и решил написать, на всякий случай
0
1264 / 978 / 384
Регистрация: 02.09.2012
Сообщений: 3,024
28.11.2012, 23:48
Все бы хорошо, еще бы нормальную компиляцию и отладку интерактивную прикрутили
А так получается просто редактор исходных текстов, хоть и удобный.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
29.11.2012, 11:23
grgdvo, :make не?
0
32 / 32 / 17
Регистрация: 10.10.2012
Сообщений: 88
29.11.2012, 14:11  [ТС]
Цитата Сообщение от grgdvo Посмотреть сообщение
Все бы хорошо, еще бы нормальную компиляцию и отладку интерактивную прикрутили
А так получается просто редактор исходных текстов, хоть и удобный.
Я сам пока большими проектами не занимаюсь, у меня коды максимум 1000 строк, поэтому делал под свои нужды, однако я думаю если человек прочтет эту статью, он сможет настроить себе VIM как ему угодно.
0
1264 / 978 / 384
Регистрация: 02.09.2012
Сообщений: 3,024
01.12.2012, 17:15
Цитата Сообщение от ForEveR Посмотреть сообщение
grgdvo, :make не?
make-то да... только вот ошибки сборки распарсить надо, срастить с исходными файлами надо, показать в отдельном окне надо... привычных феничек IDE много можно перечислять

вообщем, я не против vi - хороший редактор, уважаю
и подозреваю, что все вышеперечисленное и даже больше вполне делается с помощью плаигнов

Добавлено через 1 минуту
Цитата Сообщение от kuli4ok Посмотреть сообщение
Я сам пока большими проектами не занимаюсь, у меня коды максимум 1000 строк, поэтому делал под свои нужды, однако я думаю если человек прочтет эту статью, он сможет настроить себе VIM как ему угодно.
Желаю успехов
0
 Аватар для kaludis
2 / 2 / 0
Регистрация: 18.05.2012
Сообщений: 12
03.12.2012, 14:51
grgdvo, ну так здесь имеет место так сказать true-way) а IDE это уже совсем другая песня, ни лучше, ни хуже, просто другая.

Где-то читал, что m$'овцы также предпочитают кодировать в простых редакторах, в том числе и в vim, что интересно.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
03.12.2012, 16:48
Цитата Сообщение от kaludis Посмотреть сообщение
ну так здесь имеет место так сказать true-way)
однако это уже не unix-way.
0
51 / 49 / 7
Регистрация: 31.10.2011
Сообщений: 98
05.12.2012, 17:56
Цитата Сообщение от grgdvo Посмотреть сообщение
Все бы хорошо, еще бы нормальную компиляцию и отладку интерактивную прикрутили
А так получается просто редактор исходных текстов, хоть и удобный.
Про сборку: :make скажет make из текущей директории, но можно пойти и дальше:
:set mp=./build_script.sh - запустит скрипт, когда вы скажете :make
Эта штука умеет парсить выхлоп компиляторов (gcc/g++ точно) - понимает warning, error, умеет их подсвечивать. Если после :make сказать :copen - увидите выхлоп сборки. Навигация по сообщениям (ворнингам и ошибкам) :cn - следующий ворнинг, а :cp - предыдущий. По этим командам в буфере будет открываться файл на той строке, которая не понравилась компилятору. Также можно в выхлопе от :copen поставить курсор на файл и сказать gf - тогда перейдёте к нужному файлу.
Ну и эта штука, насколько я знаю, кастомизируется.
0
 Аватар для kaludis
2 / 2 / 0
Регистрация: 18.05.2012
Сообщений: 12
05.12.2012, 18:06
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
однако это уже не unix-way.
Однако. Тогда уж не под C++ а под чистый C без примесей надо настраивать)
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
06.12.2012, 11:15
Цитата Сообщение от kaludis Посмотреть сообщение
Однако. Тогда уж не под C++ а под чистый C без примесей надо настраивать)
Без разницы.
Vim/Emacs текстовые редакторы, а не IDE.
Одна из идей
Пусть каждая программа делает что-то одно, но хорошо.
0
 Аватар для kaludis
2 / 2 / 0
Регистрация: 18.05.2012
Сообщений: 12
06.12.2012, 14:16
Dmitriy_M, согласен. Но думаю оба мнения имеют место быть. Я долго пользовался студией под вендой, потому и нашел ее аналоги в лице KDevelop и Qt Creator, но ведь кто-то изначально на никсах использовал vim или emacs. И главное все же руки и голова.
1
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
11.12.2012, 11:23
Ребята вы психи - VIM это не IDE. это альтернативный серверный текстовый редактор.

Статья конечно интересная. Но большую часть кода я стараюсь генерировать автоматически (Eclips-oм). одна только функция автоматического форматирования чего стоит!

Добавлено через 9 минут
Собственно статья и нравиться тем, что вызывает такой шок
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
11.12.2012, 11:48
Цитата Сообщение от XRuZzz Посмотреть сообщение
это альтернативный серверный текстовый редактор.
Для этих целей есть nano, есть mc
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
11.12.2012, 14:19
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Для этих целей есть nano, есть mc
Поправочка - неудобный nano и неудобный радактор из mc.

Добавлено через 59 секунд
Поправочка - неудобный относительно Vim
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
11.12.2012, 17:19
Цитата Сообщение от Kastaneda Посмотреть сообщение
Поправочка - неудобный относительно Vim
Неудобно, это когда кто-то на сервере установил раскладку dvorak.
0
4 / 4 / 0
Регистрация: 04.04.2015
Сообщений: 174
02.01.2016, 09:43
А есть ли возможность настроить Vim таким образом, чтобы он запускался сразу в режиме редактирования?
0
1264 / 978 / 384
Регистрация: 02.09.2012
Сообщений: 3,024
03.01.2016, 00:05
Цитата Сообщение от watersoda Посмотреть сообщение
А есть ли возможность
Есть, используйте команду startinsert
vim -c 'startinsert' myfile
Для удобства пропишите ее себе в vimrc.
0
4 / 4 / 0
Регистрация: 04.04.2015
Сообщений: 174
03.01.2016, 10:01
Цитата Сообщение от grgdvo Посмотреть сообщение
Есть, используйте команду startinsert
vim -c 'startinsert' myfile
Для удобства пропишите ее себе в vimrc.
Так? set startinsert
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.01.2016, 10:01
Помогаю со студенческими работами здесь

каким образом пожна подключить на мать с 2 IDE выходами и 2 SATA 3 жестких диска IDE и 2 CD-ROM IDE?
Доброго вам времени суток Можете подсказать каким образом пожна подключить на мать с 2 IDE выходами и 2 SATA 3 жестких диска IDE и 2...

Новая мать не видит ide ЖД и ide привод, проблема в Sata - Ide контроллере?
на оч старом компе решил заменить мать, ОЗУ, проц, видео. идешный HDD и привод оставил, купил 2 контроллера SATA to IDE марки Gembird,...

C:\tsserver\Projects\cpp\codeblocks\MyComp\IDE\IDE\IDE.cpp|1 5|error: 'InitApplication' was not declared in this scope|
//================================================================================================= #include &quot;IDE.hpp&quot;...

C:\tsserver\Projects\cpp\codeblocks\MyComp\IDE\IDE\IDE.cpp|3 9|undefined reference to `GetStockObject@4'|
C:\tsserver\Projects\cpp\codeblocks\MyComp\IDE\IDE\IDE.cpp|39|undefined reference to `GetStockObject@4'|

Потеря доступа к логическому разделу после смены IDE-AHCI-IDE
Вообщем ситуация вот какая занимался рукоблудием в плане обновил биос на материнке MSI P67S-C43 и торкнуло меня перевести режим работ в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru