пятница, 19 марта 2010 г.

Переводчик для VIM

источник 1: http://www.instanceof.ru/linux/vim/translate
источник 2: http://ru.wikibooks.org/wiki/Vim


Vim при переводах текста, или для чтения английской документации

Итак, чтобы можно было успешно читать и переводить документацию на английском языке, нужно ИМХО всего 3 вещи:
  • Редактор.
  • Переводчик.
  • проверка орфографии
Если их удобно объединить, то можно получить хорошую среду, для перевода/чтения.

Что возьмем

Редактор мы естественно возьмем VIM хотя бы потому что статья так называется. Переводчик mueller консольная версия, работает так:
% mueller sex
sex  [seks] _n. 1> _биол. пол; the weaker sex слАбый пол, жЕнщины; the sterner (или stronger) sex сИльный пол, мужчИны; the sex _шутл.  жЕнщины 2> секс 3> _at
tr. половОй, сексуАльный; sex instinct половОй инстИнкт; sex intergrade гермафродИт  
И орфографмометр: это spell в виме, словари скачаем с vim.org

Как настроим

Мне интересна возможность выпадающего списка, при наведением на неизвестное мне слово мышкой. Для этого, после долгого чтения манов (или гугленья) узнаем что с помошью команды system можно выполнить какое-то действие, вывод которой куда-либо записать. Короче, пишем где-нибудь в ~/.vimrc

function! MyBalloonExpr()
       return system("mueller ". v:beval_text)
endfunction
set bexpr=MyBalloonExpr()
set ballooneval
set balloondelay=100

Определили функцию MyBallonExpr которая будет формировать строку mueller [слово на которое навели] и выполнять. Результат выполнения будет выдавать в «балоне» выпадающем окошке, через 100 миллисекунд.
Естественно вместо mueller вы можите поставить любую другую программу, которая переводит текст.

Для перевода по нажатию клавиши

map   :call TRANSLATE()
function TRANSLATE()
   let  a=getline('.')
   let co=col('.')-1
   let starts=strridx(a," ",co)
   let ends = stridx(a," ",co)
   if ends==-1
       let ends=strlen(a)
   endif
   let res = strpart(a,starts+1,ends-starts)
   let cmds = "sdcv -n " . res
   let out = system(cmds)
   echo out
endfunction

Комментариев нет:

Отправить комментарий

Ярлыки

Архив блога