powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Шустрый семантический код-навигатор и комплитер для vim.
22 сообщений из 22, страница 1 из 1
Шустрый семантический код-навигатор и комплитер для vim.
    #38330549
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вимеры возрадуйтесь, ибо работает , и работает уже хорошо. Никакая запутанная семантика не проблема (всякие там дерефы шаредов десятой вложенности, опять же ибо сила-нг). Студия нервно намыливает веревку в сторонке, креатор и кодблоки слезно помогают поставить стул. Дополняются пути, код, идентификаторы и вообще все что может дополняться, высокая настраиваемость, отличное оформление, навигация по коду, смарт поведение. Отличная интеграция с другими плагинами. Бедные дети голодают в Уганде, америка бьется в истерике, люди тратят тысячи баков на ИДЕ от микрософта, а вим захватывает мир.

Из минусов настраивал три дня + притянул кучу отличных плагинов, типа реал-тайм проверки ошибок, снипетов, гит-интеграция итд.

Советую вимерам также посмотреть .vimrc от Valloric.
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38330627
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_,

Ты бы про горячим следам накропал howto как ставить, а я бы поверил.
Давно хочу vim освоить.
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38330629
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, давно-давно был в ходу плагин для msvc, вставлявший туда Vim.
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38330643
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_,

А какая скорость на крупных проектах?
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38330646
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_,

Если сравнивать с креатором 2.7 - какие преимущества?
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38330649
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А умеет он при вставке блока кода из буфера подстраивать уровень отступов вставляемого текста, чтобы соответствовал месту вставки.

Кстати если абстрагироваться от С/С++ как в Виме решается такая проблема? А именно: вставляем из буфера блок кода с отступами. При этом в виме включен автоотступ. В итоге вставляются лишние отступы и в каждой следующей строке отступ все дальше.
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38330650
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyвставляем из буфера
Здесь имеется в виду вставка из клипборда прямо в консоль, а не из буфера самого Вима.
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38330660
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,
MasterZiv,

завтра с утра постараюсь накидать ход установки, список полезных плагинов и ответы на вопросы.
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38330677
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хех. Открыто. Возрадуемся!
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38330792
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyAnatoly Moskovskyвставляем из буфера
Здесь имеется в виду вставка из клипборда прямо в консоль, а не из буфера самого Вима.

1) Vim бывает не только консольный, на сколько я помню. Может ошибаюсь.
2) вставка из буфера обмена в консоль ничем для приложения не отличается от набора того же текста на клавиатуре,
на сколько я представляю.
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38330889
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YouCompleteme: http://valloric.github.io/YouCompleteMe/

Установка плагина дело совсем простое если использовать какой-нибудь плагин менеджер.

Автор советует Vundle: https://github.com/gmarik/vundle/ .

Если вы еще не пользуетесь менеджером плагинов суть его состоит в том что, вместо скачивания и раскидывания файлов
плагина вручную по соответствующиим папкам и правке скриптов, вы просто вписываете имя плагина куда-нибудь
(обычно в .vimrc) с помощью специальной директивы, затем одной командой все устанавливается автоматом. Все
установленные плагины также можно и обновлять.

Процесс установки YCM подробно расписан на главной странице. Нужно отметить следующие ньюансы.

В папке cpp плагина находится CMake проект который надо сбилдить по инструкции. Но его конечно
можно сбилдить где угодно, чтобы не сорить. В результате два объектника libclang.so и ycm_core.so нужно
скопировать в папку python (по идее они должны оказаться там сами).

Второй ньюанс заключается методологии использования плагина. Понятно что, для того чтобы успешно
разобрать семантику файлов надо мочь их компилить. То есть фактически написать минимальный билд-проект
для нахождения инклюдов и задать флаги компиляции (std=c, c++11, c99 и др).

Все намного проще и лучше чем кажется. Плагин предоставляет служебный питоновский файлик

Код: plaintext
1.
.ycm_extra_conf.py


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

Пример:

Допустим вы занимаетесь разработкой модуля nginx, при этом модуль в виде папки лежит где-то отдельно от
исходников nginx. Тогда можно сделать примерно такую конфигурацию:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
work
	nginx
		src
			core
			os
			event
			...
		.ycm_extra_conf.py	// Для навигации по коду nginx
	nginx_cool_module
		ngx_http_cool_module.c
		conf
		.ycm_extra_conf.py	// Для навигации по коду модуля
					// + возможность перескочить на символ из ядра nginx


Содержимое .ycm_extra_conf.py для исходников nginx

flags = [
	'-Wall'
	, '-Wextra'
	, '-Werror'
	, '-Wno-long-long'

	, '-DNDEBUG'
	, '-DUSE_CLANG_COMPLETER'

	, '-std=c89', 'c' // По этим флагам плагин определяет язык компиляции

	, '-I', 'src/core'
	, '-I', 'src/event'
	, '-I', 'src/event/modules'
	, '-I', 'src/os/unix'
	, '-I', 'objs'
	, '-I', 'src/http'
	, '-I', 'src/http/modules'
	, '-I', 'src/mail'
]


Содержимое .ycm_extra_conf.py для модуля

flags = [
	'-Wall'
	, '-Wextra'
	, '-Werror'
	, '-Wno-long-long'
	, '-Wno-variadic-macros'

	, '-DNDEBUG'
	, '-DUSE_CLANG_COMPLETER'

	, '-std=c89', 'c' // По этим флагам плагин определяет язык компиляции

	, '-I', '../nginx/src/core'
	, '-I', '../nginx/src/event'
	, '-I', '../nginx/src/event/modules'
	, '-I', '../nginx/src/os/unix'
	, '-I', '../nginx/objs'
	, '-I', '../nginx/src/http'
	, '-I', '../nginx/src/http/modules'
	, '-I', '../nginx/src/mail'
]


Третий ньюанс, прописывание горячих клавиш, так как команды плагина довольно громоздкие.
Код: plaintext
1.
2.
nnoremap <F7>  :YcmForceCompileAndDiagnostics<CR>		" Диагностическая компиляция
nnoremap <F12> :YcmCompleter GoToDefinitionElseDeclaration<CR>	" Переход к определени символа


Более подробно
Код: plaintext
1.
: help youcompleteme



Четвертый ньюанс - другие инструменты.
Для поиска символа луче использовать старый добрый cscope. Он формирует список тегов, открывает их
в сплите, в нем можно искать все референсы и многое другое. Для этого есть отличный плагин:
https://github.com/vim-scripts/taglist.vim

Команды:
Код: plaintext
1.
2.
3.
:TlistAddFilesRecursive
:Tlist
:cscope find s symbol
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38330893
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Список полезных плагинов:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Bundle 'scrooloose/syntastic'						" Реалтайм проверка ошибок
Bundle 'Lokaltog/powerline', { 'rtp': 'powerline/bindings/vim/' }	" Крутой статусбар
Bundle 'Lokaltog/vim-easymotion'					" Быстрая навигация по тексту
Bundle 'SirVer/ultisnips'						" Отличные снипеты
Bundle 'tpope/vim-fugitive'						" Git интеграция
Bundle 'Valloric/vim-operator-highlight'				" Подсветка знаков пункт, скобок, операторов и тд, правда надо убрать {} из списка а то фолд перестает работать
Bundle 'godlygeek/tabular'						" Умный выравниватель
Bundle 'git://git.wincent.com/command-t.git'				" Быстрое открытие файлов (как в textmate, или как он там называется)
Bundle 'sjl/gundo.vim'							" Мегакрутой undo, превращает vim в машину времени, отменяйте
									" , определяйте альтернативные ветки реальности, 
									" , смотрите историю правок в виде дерева и др. и все это автоматом
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38330894
Inkelyad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly MoskovskyКстати если абстрагироваться от С/С++ как в Виме решается такая проблема? А именно: вставляем из буфера блок кода с отступами. При этом в виме включен автоотступ. В итоге вставляются лишние отступы и в каждой следующей строке отступ все дальше.

Как-то так:
Код: sql
1.
2.
3.
nnoremap <F2> :set invpaste paste?<CR>
set pastetoggle=<F2>
set showmode


После этого F2 отключает весь неестественный интеллект и можно нормально вставлять.
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38330895
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет плагина под студию, он отлично работает в 2010, 2012 студии. Единственная проблема перестают
работать системные горклавиши вставки и копирования.
http://visualstudiogallery.msdn.microsoft.com/59ca71b3-a4a3-46ca-8fe1-0e90e3f79329

Насчет проблем с отступами при вставке, есть такая проблема, но она существует для системной вставки.
Вим видит системный клипбоард как регистр +. Если использовать его то все должно быть нормально. Если нет можно
попоробовать вот это:
http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste

Насчет чем лучше креатора (кодблока, студии) - ничем. Вим другая стихия, тут уж предпочтения каждого.

Скорость на крупных проектах ормальная. 1-2 секунды на раскрытие дополнения. Разработка ведется активно
, уверен что кэширование со временем будет только улучшаться. Впрочем автодополнение я не использую. Главным образом интересовала навигация по коду.

Еще если посмотреть .vimrc этих товарищей, можно найти уйму полезных вещей:
https://github.com/Valloric/dotfiles/blob/master/vim/vimrc.vim
https://github.com/gmarik/vimfiles/blob/master/vimrc
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38330960
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и скриншот
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38331946
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Inkelyad, спасибо!

sherzod_Скорость на крупных проектах ормальная. 1-2 секунды на раскрытие дополнения.
Все-таки медленновато. У Креатора список показывается сразу, без какой-либо видимой задержки.
А на примере небольших проектов типа того же nginx - сколько формируется список?
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38332202
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyInkelyad, спасибо!
sherzod_Скорость на крупных проектах ормальная. 1-2 секунды на раскрытие дополнения.
Все-таки медленновато. У Креатора список показывается сразу, без какой-либо видимой задержки.
А на примере небольших проектов типа того же nginx - сколько формируется список?
Для nginx все работает без задержек, можно комфортно "автодополнять".

У креатора работает самописный простенький парсер, фактически такой доработанный ctags. А тут clang, то есть полнофукнциональный парсинг. Конечно еще нужно будет время чтобы его доработать в отношении правильного кэширования. Я думаю и для больших проектов можно настроить предкомпилированные хидеры, пока с этим еще недоразобрался (автодополнение не сильно надо пока, надо лезть в код).
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38334385
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sherzod_Список полезных плагинов:
А для Java/Scala есть поддержка code completition?
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38334532
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonsherzod_Список полезных плагинов:
А для Java/Scala есть поддержка code completition?

Так, а вот это уже -- оффтопик.
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38334545
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нихт! Обсуждаем продукт Vim.:)
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38334582
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Нет, обсуждаем конкретный плагин для него, т.е. Vim как С++ IDE.
...
Рейтинг: 0 / 0
Шустрый семантический код-навигатор и комплитер для vim.
    #38334749
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonsherzod_Список полезных плагинов:
А для Java/Scala есть поддержка code completition? Полноценная семантическая поддержка только для С-семейства, так как используется llvm-clang-api.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Шустрый семантический код-навигатор и комплитер для vim.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]