Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Симбіоз редактора і інтерпретатора (vimrc)

with 8 comments

Кажуть Vim – найкраще IDE для всього. Треба лише правильно його налаштувати. Великий мінус для мене – я не зміг налаштувати автодоповнення, хоча багато про це читав. Ну і хай. Тут я покажу яким чином можна об’єднати Vim з інтерпретаторами інтерпретованих мов, і спростити зневадження. Десь приблизно як в середовищі DrRacket – вгорі редактор, внизу інтерпретатор, який має доступ до всіх функцій що описані в редакторі. Деякі люди навіть пробували написати аналогічне для Python. 🙂 Але я знайшов в тисячу разів простіше рішення, для будь-яких інтерпретованих мов.

Мій vimrc виглядає так:

set nocompatible
set smartindent
nmap ; :

autocmd BufRead *.py nmap <F5> :!python %<CR>
autocmd BufRead *.py nmap <F6> :!bpython -i %<CR>

autocmd BufRead *.cl nmap <F5> :!clisp %<CR>
autocmd BufRead *.cl nmap <F6> :!clisp -i %<CR>

autocmd BufRead *.cpp nmap <F5> :!g++ % -o executable<CR> :!./executable<CR>

Перші два рядки нецікаві, і гугляться. Наступний рядок в нормальному режимі відображає “;” на “:”, тобто здійснює ввід команди “:”, коли ми натискаємо “;”. Це має зекономити нам багато натискань клавіші Shift, яка знаходиться під лівим мізинцем, і тому надзвичайно неергономічна. (Проблема тільки в тому, що я вже звик натискати цей бісовий Shift, тому це не сильно полегшило мені життя. Треба перевчитись.)

autocmd BufRead *.cpp 

Каже нам, що наступна команда має виконуватись при події BufRead (читання файлу), що завантажує файл з заданим розширенням.

При завантажені файлу з певним розширенням, я призначаю кнопці F5 виконання цього файлу, а кнопці F6 – завантаження його в інтерпретатор, щоб можна було потестувати деякі функції. В більшості інтерпретаторів є ключ -i, що означає “перейти в інтерактивний режим після інтерпретації даного файлу”.

Все, пора на політологію. Бувайте!

Advertisements

Written by bunyk

Квітень 7, 2011 at 11:13

Оприлюднено в Інструменти, Кодерство

Tagged with

Відповідей: 8

Subscribe to comments with RSS.

  1. Чорт, я таки написав в кінці “В більшості інтерпрИтаторів”. Зате помітив першим. 🙂

    bunyk

    Квітень 7, 2011 at 14:35

  2. Я думаю такі інтелектуальні IDE як PyCharm економлять значно більше часу при кодженні на Python. Єдиний мінус – це shareware, правда цей мінус як правило не надто шкодить українцям:)

    DixonD

    Квітень 8, 2011 at 21:06

  3. Можливо, я не дивився. Взагалі то, я відколи перейшов на Лінукс трохи шкодую за Visual Studio, її IntelliSense та Debug солюшинами, але bpython, і vim просто лялечки. Звісно по функціоналу вони не дотягують до промислових IDE, але такі маленькі і шустрі, що кращих для негайного написання кількох кілобайт коду знайти важко.

    bunyk

    Квітень 8, 2011 at 21:31

  4. Я не так давно відкрив для себе etags, чудова штука, після якої я майже не сумую за intellisense; суть: сирці індексуються за допомогою ctags: ctags * -R або ctags *.py, утворюється файл tags, який автоматично читається Вімом, після цього можна користуватись переходами до оголошення та іншими плюшками, про які можна прочитати у :help tags
    Недоліки: переіндексація має відбуватись явно, вимагає збережння файла

    dmytrish

    Квітень 13, 2011 at 22:55

  5. 1) set nocompatible — в принципі Вім і так по дефолту nocompatible з vi
    2) nmap ; : — дякую, прекрасна ідея
    3) для одиничного *.cpp я звик мапити клавіші щоразу, іноді одразу роблю Makefile, на який у мене зав’язаний
    4) З мого .vimrc:
    set expandtab
    set shiftwidth=4
    set tabstop=4

    autocmd ReadBuf Makefile set noexpandtab
    map :!bash
    map :wa:!make
    map :w:./%

    map te :tabedit
    map tn :tabnew
    map tj gt
    map tk gT
    map bb :buffers

    5) Щодо консолі в редакторі — я з перемінним успіхом користувався плагіном ConqueTerm, який робить консоль у буфері Віма; штука кривувата, але все одно зручна.
    6) autocmd BufRead *.cl — заради цього я примусив себе повчити Emacs + Slime і тут вони поза конкуренцією, на жаль.

    dmytrish

    Квітень 13, 2011 at 23:49

  6. 2) Cудячи з твого досвіду в Vim, ця ідея допоможе мало. Треба буде придумати спосіб переписування звичок.

    4) Дякую, це цікаво, хоча й не все зрозуміло. Наприклад, чому люди так не люблять табуляції?

    6) Чому “на жаль”?

    І, раз мені випала така чудова нагода поспілкуватись з розумною людиною, спитаю: “А що ви порадите щоб боротись з Прологом?”. Це в мене найактуальніша проблема здається.

    bunyk

    Квітень 14, 2011 at 00:31

  7. Мені теж жаль таби. Але якщо подумати, то в програмі завжди є пробіли, і краще одна розділювальна сутність, ніж дві (які неминуче колись почнуть мішатись)
    Про SLIME жаль тому, що мені б хотілось нормальне середовище для CLisp у vim (спроби наче були, slimv, наприклад, але всі майже закинуті), хоч через нього я повчив Emacs і дізнався про таку зручнющу фічу Віма, як буфери.
    Щодо Прологу нічого сказати як слід не можу) Моє всезнання трохи переоцінене)

    dmytrish

    Квітень 14, 2011 at 08:56


Залишити відповідь

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out / Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out / Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out / Змінити )

Google+ photo

Ви коментуєте, використовуючи свій обліковий запис Google+. Log Out / Змінити )

З’єднання з %s

%d блогерам подобається це: