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

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

Де Python тільки не використовується! (навіть в Vim)

with one comment

Python може й не найкраща існуюча мова програмування, але його плюсом є те, що він застосовується майже всюди, де могли б застосовуватись спеціалізовані мови, і вам не потрібно вчити ще одну спеціалізовану. Ну, і Python справляється зі своєю задачею чудово будь-де.

Python можна використовувати:

  1. Замість PHP в веб-програмуванні.
  2. Замість Matlab в математиці.
  3. Замість MAXScript в тривимірному моделюванні
  4. Замість Bash в системному адмініструванні
  5. Замість Pascal для вивчення структурного програмування (існує легенда що Python створений саме для того аби навчити школярів правильно ставити відступи в коді).
  6. Замість VimScript ясно де.

Про те що він кращий замінник в останньому випадку можуть бути сумніви, але я ще вчусь. Далі буде краще.

Наступний текст можна додавати прямо в .vimrc, або в інший *.vim файл, привантажуючи його командою :source

python <<EOF
import vim

def v2p(pos, col=None):
        ”’ tranlate vim position to python position ”’
        if col is None:
                return (pos[0] – 1, pos[1])
        else:
                return (pos – 1, col)
def p2v(pos, col=None):
        ”’ and reverse ”’
        if col is None:
                return (pos[0] + 1, pos[1])
        else:
                return (pos + 1, col)

def get_range_or_cursor():
        cb = vim.current.buffer
        a, b = cb.mark(‘<‘), cb.mark(‘>’)
        if a:
                vim.command(‘delmarks <‘)
                return v2p(a), v2p(b)

        cw = vim.current.window
        return v2p(cw.cursor)

def insert_text_at_position(row, col, text):
        cb = vim.current.buffer
        cb[row] = cb[row][:col] + text + cb[row][col:]

def insert_tag(pre, suf):
        cur = get_range_or_cursor()
        if isinstance(cur[0], int):
                insert_text_at_position(*cur, text=pre+suf)
                vim.current.window.cursor = p2v(cur[0], cur[1] + len(pre))
        else:
                insert_text_at_position(*cur[0], text=pre)
                shift = len(pre) if cur[0][0] == cur[1][0else 0
                insert_text_at_position(
                        cur[1][0],
                        cur[1][1] + shift + 1
                        text=suf
                )
                vim.current.window.cursor = p2v(
                        cur[1][0], 
                        cur[1][1] + shift + 1 + len(suf)
                )
def f8():
        insert_tag(‘<def>’,‘</def>’)
EOF
map <F8> :python f8()<Return>

Advertisements

Written by bunyk

Жовтень 28, 2011 at 00:16

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

Tagged with ,

Одна відповідь

Subscribe to comments with RSS.

  1. І як я забув про замінник bash?

    bunyk

    Листопад 3, 2011 at 23:42


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

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

Лого WordPress.com

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

Twitter picture

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

Facebook photo

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

Google+ photo

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

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

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