вівторок, 25 листопада 2014 р.

Осваиваем текстовый редактор vim

В предыдущих постах часто использовался текстовый редактор, в частности, мой любимый vim. Возможно, его нет в вашем дистрибутиве “из-коробки” (vi, предшественник vim-a должен быть 100%) и вам надо его инсталлировать. Обычно, в дистрибитувах линукса есть сразу целая куча консольных текстовых редакторов и напрашивается естественный вопрос — зачем? Это всё разные инструменты с разным набором возможностей и удобств. Например, хорошо, когда гаечный ключ разводной — можно всегда подгонять под нужный размер. А если размер выходит за границы допустимого диапазона? Или если надо забить гвоздь? Хорошим разводным гаечным ключом можно и гвоздь забить, но это будет явно не эффективно. Представьте, сколько времени, усилий и нервов можно сэкономить подбирая во всём нужные инструменты и настраивая их под себя. Для кодинга, редактирования конфигурационных файлов, сравнения нескольких версий «плоских» текстовых файлов вам нужен совершенно другой текстовый редактор, нежели MS Office Word. И одним из таких мощных текстовых редакторов является vim. Вы можете улучшить свою работу над кодингом на 200%, а то и на 300%, постигнув лишь 25% всех возможностей этого прекрасного редактора (все цифры взяты с потолка, но такое соотношение эффективности имеет место быть). Вот например, возьмите свой любимый редактор и посмотрите сколько времени (с точностью до секунды) вам надо, чтобы из этого куска кода (табуляция тоже считается):

x = 1
whiLE x<=100:
print x,
y = func1(x) + func2(x) + func3(x)
print ' => %s' % y
x = x + 1
 
сделать вот этот:
 
x = 1
whiLE x<=100:
    print x,
    y = func1(x, rnd=True) + func2(x, rnd=True) + func3(x, rnd=True)
    print ' => %s' % y
    x += 1  
 
У меня же с помощью vim ушло на это 18 секунд (можете в комментариях поделиться вашими результатами). Естественно, может быть и лучший результат, но это надо тренироваться, да и когда очень спешить, можно наделать ошибок, которые исправлять потом будет дороже. Надеюсь, мне удалось показать вам важность выбора нужного инструмента. Теперь надо научится им пользоваться. Для начала настоятельно рекомендую вам пройти встроенную обучалку, которую вы можете запустить командой "vimtutor" (естественно, команду вводим без кавычек). Далее, вам нужен более-менее приличный конфигурационный файл. Вот начать можете с такого примера:
 
" # BASIC OPTIONS
set nocompatible
set number
syntax on
" - Indentation options
set expandtab
set tabstop=4
set shiftwidth=4
set autoindent
set softtabstop=0

" # ADVANCED OPTIONS
"set hidden
"set visualbell
" - Better command-line completion
set wildmenu
" - Show partial commands in the last line of the screen
set showcmd
" - Display cursor position
set ruler
" - Always display the status line, even if only one window is displayed
set laststatus=2
set mouse=a
" - bind \q for nohlsearch
:nmap \q :nohlsearch<CR>
" - Easier moving of selected code blocks
vnoremap < <gv
vnoremap > >gv

" # EXPERT OPTIONS
" - Autocommands
" Remove any trailing whitespace that is in the file
autocmd BufRead,BufWrite * if ! &bin | silent! %s/\s\+$//ge | endif
 
Как и большинство других конфигурационных файлов, этот надо сохранить в домашней папке, а имя начинается с точки - .vimrc (полный путь ~/.vimrc, где "~" подставляет домашнюю папку текущего пользователя).
Для начала, вам этого хватит с головой. Здесь, комментарии начинаются с двойной кавычки, некоторые опции тоже закомментированы, но входят в конфигурационный файл потому, что часто используемые. Если с описания не всё понятно, то вперёд в гугл. Настоящий достойный конфигурационный файл в десятки раз длинее.

Наконец, мастером этого текстового редактора вы можете легко стать, освоив книгу "Practical Vim: Edit Text at the Speed of Thought" by Drew Neil. И не ищите перевода, для мастерства вам нужен оригинал. Пора привыкнуть к тому, что английский язык всё-таки главнее (после своего родного, конечно).
Ну и, конечно же, побольше практики. И если он станет вашим единственным (или почти единственным), то навыки сами придут со временем.

Немає коментарів:

Дописати коментар