VIM*Plus

Dec. 5th, 2009 09:12 pm
egorius: (Default)
[personal profile] egorius

Сегодня будем дружить Vim c SQL*Plusом. Для этого нам понадобится сущая безделица, такая вот функция:

function! SqlPlus()
   let l:fname = @%
   let l:sqlbuf = bufnr("%")
   if !exists("b:oraext_conn")
     let b:oraext_conn = ""
   endif
   let b:oraext_conn = input("Connect string: ",b:oraext_conn)
   echo "Executing..."
   let l:cmd = ":%! sqlplus ".b:oraext_conn." @".shellescape(l:fname)
   if !exists("b:oraext_resbuf") || !bufexists(b:oraext_resbuf) || bufwinnr(b:oraext_resbuf) == -1
     new
   else
     exe bufwinnr(b:oraext_resbuf)."wincmd w"
     if &modified
       new
     else
       exe "normal ggdG"
     endif
   endif
   exe l:cmd
   setlocal nonu
   set nomodified
   set efm=%-Poraext:\ fname=%f,%A%l/%c%m,%C%\\t%m
   cgetexpr ["oraext: fname=".fnameescape(l:fname)] + getline(1,'$')
   let l:resbuf = bufnr("%")
   exe bufwinnr(l:sqlbuf)."wincmd w"
   let b:oraext_resbuf = l:resbuf
   cc
   redrawstatus
endfunction

Небольшой комментарий_к. Допустим, сочиняем мы PL/SQL-пакет (кстати, на картинке видно, как мой плагин подсвечивает if, на котором стоит курсор):

Чтобы прогнать пакет через Плюс, говорим :call SqlPLus(). Естественно, это не надо набирать каждый раз. Во-первых, в ex-режиме (после нажатия двоеточия) работают стрелки вверх-вниз по истории команд, а также автокомплишн по табуляции, как в шелле. Во-вторых, можно просто повесить эту команду на какую-нибудь кнопку.

Первый раз у нас спросят строку соединения. Затем, после небольшой паузы, появится окошко с Плюсовым выводом. Если были ошибки, курсор будет позиционирован на первой из них, а командами :cn и :cp можно перемещаться к следующей или предыдущей (это vimовская фича™ quickfix, :help quickfix).

А что ещё надо от IDE? Самую малость: в следующий раз буду дружить Vim со своей OCI-программой, чтобы прямо из редактора выполнять запросы.

P. S. Кстати, вот отличная статья на тему продвинутых® IDE и удовольствия от кодирования™: Does Visual Studio Rot the Mind?

Date: 2010-07-03 01:29 pm (UTC)
From: [identity profile] -pk-sly.livejournal.com
эх. я "ка кураже", было дело, тоже писал для vim функции, настраивал, вешал на кнопки.

недостаток в том, что когда через 1.5 года надо что-то другое, всё надо начинать с нуля, а куража уже нет :) и разбираться заново не охота.

Date: 2010-07-04 09:47 pm (UTC)
From: [identity profile] egorius.livejournal.com
Ну извини :)
Зато когда долго надо одно и то же, оно вполне окупается.

Profile

egorius: (Default)
egorius

July 2025

M T W T F S S
  12 3 456
78910111213
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 4th, 2025 09:45 pm
Powered by Dreamwidth Studios