LINUX.ORG.RU

Собрал IDE для Python на базе Vim

 


5

6

Давно тут не было ничего интересного, все то дефолт, то очередной гном.

Сидел я тут недавно, ленился работать, прокрастинируя в код, и подумал - ну а че бы и нет? И собрал IDE для Python на базе Vim.

Оно умеет полноценный автокомплит для кода, дерево файлов (проекта) слева (скрываемое по хоткею), список переменных справа (также скрываемый по хоткею).

Насколько оно юзабельно в сравнении с тем же PyCharm? Не могу сказать, да и сравнить мне сложно, ибо во всех продуктах JetBrains у меня стоит плагин IdeaVim, привносящий туда привычные хоткеи из вима. Его я не настраивал - там все дефолтное.

OS - Fedora 34.

P.S. Всем, кто не осилил выйти из вима - :q!

>>> Просмотр (1366x768, 178 Kb)

★★★★★

Проверено: Satori ()
Последнее исправление: Satori (всего исправлений: 1)
Ответ на: комментарий от t184256

Очень зависит от юзкейса.

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

Это да. (%

mord0d ★★★★★
()
Ответ на: комментарий от habamax

Пищит хоть?

set belloff=all

Чтобы пищал, надо наоборот:

set belloff=

Впрочем, искаропки оно так и есть.

mord0d ★★★★★
()

У тебя там в коде сексизм, фэтшейминг и лукизм. Почему тебя ещё не забанили?

pinus_nigra
()
Ответ на: комментарий от micronekodesu

использование vim, который, на мой взгляд, осилить и полноценно использовать сложнее чем какую-то мейнстримную IDE.

Ты удивишься, но любой полноценный IDE имеет функционал сравнимый с Vim. Разница только в том что в любой IDE для умственно неполноценной целевой аудитории всюду напихали подсказок, а в Vim придётся читать документацию (которая не всегда логична и понятна с первого раза без вычитывания пачки референсов, раскиданных по документации).

Мейнстримный IDE: "Нажми на эту кнопочку и я сделаю тебе хорошо!"
Vim: <beep!>

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

не всегда логична и понятна с первого раза без вычитывания пачки референсов, раскиданных по документации

Была такая религиозная секта - хлысты. Им тоже для того, чтобы чувствовать себя полноценными было необходимо заниматься мазохизмом. Но на самом деле это не обязательно!

pinus_nigra
()
Ответ на: комментарий от Spoofing

Спуф, твои комментарии поразительные по своей сути. Я надеюсь, что ты покажешь имплементацию CRUX на своей новой работе, активным разработчиком которой ты являешься. Да? Ждем с нетерпением

serg002 ★★★
()
Последнее исправление: serg002 (всего исправлений: 1)
Ответ на: комментарий от Zhbert

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

Так, может, сначала надо было причесать и дописать, а уж потом постить? На кой ляд эта спешка?

najlus ★★★★★
()
Ответ на: комментарий от Slackware_user

nvim-lspconfig Проблема в перегруженных методах класса. Не могу их развернуть. Показывает мол есть 3 метода SetCellValue, а вот как их увидеть, это проблема.

Hangover
()
Ответ на: комментарий от Slackware_user

Другая проблема не работает сигнатура, поставил плагин lsp_signature но настроить тоже не могу. Все рекомендации разработчика для притонов и джива-скрипт, а для С++ вообще ничего посоветовать не может.

Hangover
()
Ответ на: комментарий от Spoofing

там где надо и где не надо всегда можно накликать мышкой

мне больно мышкой кликать. Туннельный синдром - не подарок.

peregrine ★★★★★
()
Ответ на: комментарий от Zhbert

Лучше конфиг выложи. Кому надо сами всё там достанут.

peregrine ★★★★★
()
Ответ на: комментарий от grazor

автокомплит через lsp и LSPSaga заработал отзывчивее тех же ycm и coc-nvim

Я вот не стал выкидывать coc-nvim. Все же у него тоже много плюсов есть. Не такой уж он и жирный. А вот на treesitter я с радостью пересел.

SprainBrains
()
Ответ на: комментарий от Hangover

nvim-lspconfig Проблема в перегруженных методах класса. Не могу их развернуть. Показывает мол есть 3 метода SetCellValue, а вот как их увидеть, это проблема.

Я на coc’е сижу, там вроде с этим проблем на С++ не встречал. При печати подбирал все методы. С другой стороны, если там несколько определений через шаблоны, то тут да, могут быть некоторые нюансы.

Другая проблема не работает сигнатура, поставил плагин lsp_signature но настроить тоже не могу. Все рекомендации разработчика для притонов и джива-скрипт, а для С++ вообще ничего посоветовать не может.

А что там с ними не так? Подсветка не работает или сигнатуру не видит? Просто как по мне, это уже прям вича IDE каких-нибудь, а не текстового редактора.

SprainBrains
()
Ответ на: комментарий от fernandos

Разумеется. Но как уже сказал выше «Проблема в перегруженных методах класса.» картинка, что бы было понятно: https://user-images.githubusercontent.com/86493671/125195481-7f91d900-e25e-11eb-856a-890da9cb17bf.png

не могу развернуть «3 overloads»

Hangover
()
Ответ на: комментарий от SprainBrains

Сигнатура вообще не шевелится. Ставил целую цепочку по инструции, но всё тщетно. Забил на время, будет настроение опять буду пытаться.

Hangover
()
Ответ на: комментарий от Hangover

разработчик плагина на compe отфутболил, а на compe ничего не отвечает. https://github.com/neovim/nvim-lspconfig/issues/1057

вот поэтому я пока сижу на coc’e с clangd и не парюсь. Нужно примерно 1 год после стабильного релиза neovim 0.5, чтобы плагины как-то допилили. А если надо здесь и сейчас, то coc - отличное решение.

SprainBrains
()
Ответ на: комментарий от dummy

Ну вот в Slime есть slime-edit-definition. Попробуйте ещё найти язык динамичнее Common Lisp. В Emacs для питона тоже нечто подобное находил.

ados ★★★★★
()
Ответ на: комментарий от fox72

Через ЛСП, но тогда уж лучше использовать лспконфиг или кок.

fernandos ★★★
()
Ответ на: комментарий от Satori

Ещё я умею в асм (но давно), плюсы с культями, сишка под 51ядро мк, немного го, жабоскрипт…

Zhbert ★★★★★
() автор топика
Ответ на: комментарий от Zhbert

Всё, братан, прости, что недооценивал тебя :)

Satori ★★★★★
()
Ответ на: комментарий от Slackware_user

clangd, ну так я и так ручками, просто все авторы плагинов нынче пишут только на РНР, javascript и подобных веб-скриптах и от С++ далеки, поэтому и заморачиваться с С++ не хотят. А самому ради neovim учить ещё какой-то язык полграммирования нет смысла, проще остаться на CodeBlocks и не париться с vim-ом.

Hangover
()

Самое забавное ты не выложил vimrc свой.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от Hangover

А ccls сверху попробуйте еще. Чисто чтоб убедиться. У меня лично не очень получилось сдружить c++ и fortran с deoplete, опять же поддержка language server в ale кажется кривоватой. Либо руки не приспособлены для таких задач. С language client вроде бы работало но там тоже чет не понравилось, не помню уже

Slackware_user ★★★★★
()
Ответ на: комментарий от fernandos

Вы про что?

как вы представляете себе алгоритм нахождения «определения функции» в языке, где можно сделать что-то типа:

if fuck_it:
    def suck_it():
        pass
else:
    from some_shitty_place import suck_it

если fuck_it известен только в момент исполнения?

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

dummy ★★
()
Последнее исправление: dummy (всего исправлений: 2)
Ответ на: комментарий от dummy

если fuck_it известен только в момент исполнения?

Выдать все определения функции. А что тут такого? Просто указать вместе с файлами, где они определены.

fernandos ★★★
()
Ответ на: комментарий от fernandos

Выдать все определения функции

в общем случае, это невозможно для динамических языков. именно поэтому я и спросил, шутите ли вы. видимо нет.

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

dummy ★★
()
Последнее исправление: dummy (всего исправлений: 4)
Ответ на: комментарий от dummy

Не знаю, вы на кого учились?

Вот ваше заявление

Поиск определения функции умеет?

вы это так прикалываетесь или не понимаете сути динамических языков?

https://pic4a.ru/17/2uC.png

Очень удобно, для динамического языка РНР.

fernandos ★★★
()
Ответ на: комментарий от fernandos

просто чтобы умерить ваш энтузиазм, пример обычного кода на python

do_shit = make_shit_happen()

попытайтесь описать алгоритм (я уже про реализацию не спрашиваю) получения «определение функции» do_shit

и, чтобы у вас не возникло никаких ложных ощущений

do_shit = make_shit_happen().extra_shit_required()['even_more_shit']
dummy ★★
()
Последнее исправление: dummy (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.