?

Log in

No account? Create an account

Чт, 12 фев, 2009, 19:14
История с продолжением

Начнём, пожалуй. Cygwin у меня уже стоял, vim, соответственно, тоже. Повесил пока его в Фаре на Alt-F4 как альтернативный редактор. Люблю, знаете ли, консольный режим, а gvim с менюшкой — увольте, это какой-то идеологический бредос.

Тут нас поджидает первый напильник: хайлайтинг. Такое ощущение, что в консольном режиме никто не работает, потому что ни одной приличной цветовой схемы мне обнаружить не удалось. Все пёстрые до тошноты, как будто специально для отсеивания слабых духом. Но мы-то понимаем, что схемы настраиваются вполне интуитивным образом: берём за образец какой-нибудь файл из /usr/share/vim/vim72/colors/ и подкручиваем его по собственному разумению. Лично я предпочитаю чёрный фон, серо-белый текст и синие комментарии, а яркие цвета приберегаю для отдельных случаев типа выделения слов при поиске. Дальше в .vimrc добавляются «:syntax on» и «:colo egorius» и временно наступает щастье.

Теперь скачиваем свежий dbext, копируем внуть vimа. Если не забыть сказать :helptags, как написано в инструкции по установке, то «:help dbext» не даст помереть дураком. А ещё лучше «:tab help».

Пробуем выполнить тестовый запросик: «:Select * from dual». Вот и второй напильник: в окошке результата получаем «SP2-0310: не в состоянии открыть файл "/tmp/v372235/dbext.sql"». Ну в самом деле, откуда виндовому Плюсу знать о файловой системе цыгвина?.. Лечим просто: скачиваем cвежий виндовый порт vimа, на текущий момент это версия 7.2.

И немедленно натыкаемся на третий напильник: неправильно отображаются русские буквы. Сначала я подумал, что проблема с кодировкой, но картинка выглядела странно: часть букв была на своих местах, а некоторых не было вовсе. Верный признак кривизны точечного шрифта в консоли, лечится заменой его на Lucida Console в свойствах окошка. Странно только, что цыгвиновский vim этим не болел.

Ну да ладно, копируем в новый vim файлик хайлайтинга и dbext, попутно отмечая, что для таких дел выделен специальный каталог vimfiles, а .vimrc зачем-то переименован в _vimrc (вроде винда ничего не имеет против файлов, начинающихся с точки).

Что на этот раз? «:Select * from dual»

D
-
X

Получилось! Ну-ка, ну-ка, попробуем describe. Для этого пишем в окошке «dual», встаём на него курсором и набираем \sdt (типа Sql Describe Table). Ой, в окошке результата пусто. Ну хорошо, селекты-то работают, попробуем вывести что-нибудь из моей любимой таблицы fa_books (118 столбцов). Опа, опять пусто. Вот и он, четвёртый напильник.

Что же происходит? Вспоминаем из второго напильника, что dbext создает временный файл, который скармливает Плюсу. Посмотрим, во что он превратил наш запрос. В винде временный файл нашёлся, что логично, в %TEMP% и помимо запроса содержал ещё несколько строк Плюсовых установок, из которых самые интересные «set wrap off» и «set linesize 10000». То есть товарищи полагают, что если установить потенциально бесконечную длину строки и отменить переносы, то Плюс отформатирует результаты так, чтобы одна строка таблицы была одной строкой текста. Щаз! Во-первых, он ломается на длинных строках и от огорчения не выводит вообще ничего, во-вторых, это неблаготворно сказывается на describe. Как расплывчато утверждает документация, «DESCRIBE output columns are typically allocated a proportion of the linesize... You can define LINESIZE as a value from 1 to a maximum that is system dependent».

К счастью, не составляет труда заглянуть в код плагина и понять, что заголовок, прилепляемый к запросу, задаётся переменной g:dbext_default_ORA_cmd_header, которую, следовательно, можно переопределить в .vimrc. К несчастью, непонятно, на что её переопределять. Вечер, потраченный на поиск волшебного сочетания параметров, результата не дал. Пока склоняюсь к мысли, что придётся делать wrap on и писать wrapper, который будет переформатировать Плюсовый вывод...

Пока достаточно, потом продолжу на каком-нибудь живом примере. Как раз надо склепать небольшой отчёт, вот и попробую заставить себя сделать это, не вылезая из vimа.

P.S. Зачем я, собственно, всё это описываю? А просто интересно стало, сколько напильников нужно, чтобы заставить работать vim+dbext так, как мне удобно.

Чт, 12 фев, 2009 21:18 (UTC)
sergg_rw

А мне PL/SQL Developer нра...

Сб, 14 фев, 2009 22:32 (UTC)
egorius

Он, кстати, многим нра. Один из кандидатов на попробовать, но я всё-таки надеюсь победить dbext...

Чт, 9 апр, 2009 21:37 (UTC)
sergg_rw

А в Жабе (Toad) for Oracle не разбирался. Монстр, конечно, но многое может... почти все...

Пт, 10 апр, 2009 20:37 (UTC)
egorius

Жаб как раз из тех, что открывает сессию дольше минуты. Такой зверь мне не нужен...

Сб, 14 фев, 2009 16:22 (UTC)
dimitryghost

а зачем ты, собственно, в винде сидишь?

Сб, 14 фев, 2009 22:34 (UTC)
egorius

Стояла у меня одно время красная шапочка. Не прижилась. Бороться с текстовым редактором у меня ещё сил хватает, а вот бороться с целой системой...
Но я уже начинаю задумываться о Маке, на самом деле.

Вс, 15 фев, 2009 03:25 (UTC)
dimitryghost

а чего там собственно бороться? ну по началу сложно, но все становится лучше и лучше

если бы в линуксе была поддержка аудио нормальная - давно бы перешел.

Вс, 15 фев, 2009 11:07 (UTC)
egorius

Говорят, сейчас линухи далеко продвинулись в юзер-френдли-сторону... А я в своё время в течении пары вечеров не смог настроить модем и понял, что юникс мне больше нравится на сервере, в консольке, чем на рабочем месте.

Вс, 15 фев, 2009 12:36 (UTC)
dimitryghost

именно!
попробуй

Чт, 19 фев, 2009 14:21 (UTC)
(Anonymous): Задумался о га-Маке... Ласты не забудь.

Современные Линухи все сами находят, вставляют и подключают. И имеют хитрые методы для подсказки если тебе захотелось потр.. по-взрослому, а потребных компонентов не установлено.
Рекомендую - Ю(е)банто (Ubantu). Очень гут. По-сравнению с левой рукой, конечно: Федориным Горем (Fedora Core/RedHat) или Деби(ль)яном (Debian), не говоря уже о прочей исторической Юнизятины вроде Сопляриса (Sun Solaris), АИКс (IBM AIX) или ЮнихВари\ОпенСтервера (SCO UnixWare\OpenServer). Есть даже какие-то постсоветские дистры, но их мне не склалось попробовать. :Е
СП

Чт, 19 фев, 2009 14:33 (UTC)
egorius

Всё это конечно, хорошо, но вот как это поможет мне со средой разработки? :)
Какая, в конце концов, разница, где подпиливать vim, под виндой или под унихом? Однако же за инфу спасибо.

Ср, 18 фев, 2009 02:27 (UTC)
(Anonymous)

Русские буквы - зло, особенно в коде, а синтаксическую таблицу могу подарить. Для С и прочей шелл-муеты. Работает прилично в цветном и ч\б режиме. :Е
СП

Ср, 18 фев, 2009 14:28 (UTC)
egorius

Странная у вас синтаксическая таблица... кругами... :P
А с русскими буквами приходится мириться, здесь вам не тут.