Russian (Pусский) translation by Anton Lisovsky (you can also view the original English article)
Признайте: каждый раз когда вы видете человека использующего Vim, вы понимаете, что им известно что-то, что неизвестно вам. Почему они решили использовать редактор, который по вашему мнению считается устаревшим мусором с открытым исходным кодом? Думайте что вам заблагорассудится, однако есть причина, по которой именитые разработчики ругают Vim.
Каждые несколько недель, мы пересматриваем некоторые из полюбившихся нашим пользователям постов в истории сайта. Данный туториал был впервые опубликован в феврале 2011.
До тех пока вы не потратите по крайней мере месяц работая с редактором каждый день, вы вероятнее всего будете ненавидеть его! По данной причине большинство новичков поиграются с Vim лишь один день, испытают к нему определённую долю отвращения и никогда к нему не прикоснутся. К несчастью, в данной ситуации, если подобные разработчики перешагнут через подводные камни, для них откроется невероятная скорость и гибкость данного редактора.
1. В нём слишком много режимов
Это правда: Vim не похож на текстовый редактор, к которому вы привыкли (это хорошо). Переход от скажем TextMate к Vim будет совершенно отличаться от процесса перехода с Textmate к Espresso. Всегда помните об этом, обнаружив себя вцепившимся в волосы на своей голове, в то время как Vim отказывается добавлять текст, когда вы печатаете.
Хотя в Vim и есть несколько режимов, мы сфокусируемся на трёх самых важных. Однако прежде чем продолжить, обратите внимание, что каждая клавиша отвечает за различные функции в зависимости от того в каком режиме вы находитесь, в данный момент. Что ещё более обескураживает -- по началу -- заглавная буква отвечает за другое действие нежели маленькая.
В командном режиме, нажатие маленькой буквы "i" переключит вас в "Insert Mode (режим ввода)". Заглавная же буква "I" перенесёт курсор на начало строки. Возможно это звучит запутанно, но это предоставляет невероятную силу!
- Command (командный): по умолчанию, Vim находится в командном режиме. Думайте о данном режиме, как о режиме для перемещения. В то время как в традиционных редакторах вы скорее всего привыкли использовать мышь и кнопки со стрелками для обхода документа, командный режим Vim позволяет вам это сделать гораздо быстрее и вам не придётся прибегать к помощи мыши.
- Insert (ввод): нажав маленькую букву "i" в командном режиме вы переключитесь в "режим ввода". Начинающие пользователи Vim могут обнаружить данный режим для себя знакомым. Хотя часто, они остаются в этом режиме продолжительное время, нежели должны (я знаю, я делал также). Как правило, режим вставки следует использовать исключительно с единственной целью - вставка текста. По завершении, немедленно возвращайтесь в командный режим.
- Visual (выделение): Данный режим отвечает за выделение. Хотите выделить следующие пять строк и удалить их? В обычном текстовом редакторе, вы могли бы использовать для этого мышь, после чего нажать клавишу backspace. C Vim, с другой стороны, нажмите заглавную
V
для переключения в режим выделения, затем нажмите5j
для выбора пяти строк снизу. Наконец, нажмитеd
, для удаления.
Я знаю, сперва, это звучит невероятно запутанно. Вы можете подумать: "Вся эта работа лишь для того, чтобы удалить пять строк?", правда в том, что данный метод значительно быстрее.
2. Древний редактор
С какой стати вам отворачиваться от чего-то, что разрабатывалось на протяжении десятилетий?
Вероятно вам приходилось слышать от ваших друзей: "Разве Vim не древний редактор кода?", что же, можно и так сказать, он существует уже больше тридцати лет. Хотя честно, с какой стати вам отворачиваться от чего-то, что разрабатывалось на протяжении десятилетий? Это дольше чем я живу на белом свете! Что ещё лучше, даже на сегодняшний день, Vim находится в активной разработке. Последний релиз - 7.3, появился в августе 2010.
Далее, стоит иметь ввиду, что Vim это не Vi. Если вам довелось работать лишь с последним, потратьте немного времени, чтобы скачать последний релиз и поиграйтесь с новыми особенностями и функциями. Вы приятно удивитесь!
3. Мне нравятся сниппеты TextMate
Если Vim чего-то не может из коробки, можете не сомневаться что где-то для этого есть плагин!
Вы быстро обнаружите, если Vim не может выполнить определённую задачу, скорее всего существует плагин предоставляющий данный функционал. К примеру, давайте рассмотрим отлично реализованную поддержку сниппетов в TextMate. В то время как в Vim нет этого нативно, вы можете скачать плагин под названием snipMate, который предоставит идентичный функционал и опыт использования, к которому вы привыкли.
Узнайте больше о переходе от TextMate к Vim
- Путеводитель к началу перехода от TextMate к Vim
- От TextMate к Vim для Rails программистов
- Каждый кто пытался меня убедить испробовать Vim, был неправ
4. Я не могу использовать кнопки со стрелками
Меньше движение - лучше.
Для начала, это вовсе не является правдой. Возможно данное заявление было правдой в случае с Vi, но с Vim вы можете использовать его так как вам больше нравится. Используйте кнопки со стрелками, если угодно -- однако знайте, что есть причина, по которой большинство пользователей Vim стараются этого избегать.
Есть две причины почему кнопки h,j,k,l
отвечают, соответственно, за передвижение курсора влево, вниз, вверх и вправо:
- Нет другого выбора: давным-давно у компьютеров не было данных кнопок со стрелками. В результате осталось выбрать альтернативу.
- Меньше движения: если ваши руки обычно находятся на втором ряду клавиатуры, нет никакого смысла постоянно двигать руку в нижнюю-правую секцию клавиатуры, каждый раз когда вы хотите передвинуть курсор. Меньше движение - лучше. С данным подходом вы можете обойти весь документ, не перенося руку, ни на сантиметр.
После всего сказанного, в случае если вы человек, использующий данный редактор. Если по началу вам комфортнее использовать кнопки со стрелками, делайте как вам угодно!
5. Чувак, я дизайнер
Ничего страшного! Vim не для всех. Как человек, который иногда пытается делать работу связанную с дизайном, время от времени, я могу справедливо заявить, что Vim не самый удачный выбор для дизайнеров.
Разработчики не дизайнеры; естественно данный факт отразиться на выборе их редактора.
Большинство ваших рабочих дней уходит на написание HTML и CSS, тогда Vim пожалуй не для вас. Это не должно означать, что вы не должны дать ему шанс; но это вполне ожидаемо, следует понимать, что лучше использовать более дружелюбный к дизайнерам редактор, допустим Coda.
6. В Vim нет ничего, чего уже нет в моём редакторе
Прямо и честно, это бред. Действительно, каждый редактор обладает сильными сторонами, но вы обнаружите, что Vim невероятно мощный, и, что ещё важнее, гибкий к настройке. Существуют сотни и сотни доступных плагинов (бесплатно), которые предоставят поддержку любому функционалу, который может понадобиться.
Многие новички часто повторяют одну и туже цитату - нативную команду "Change Inner", отмечая это как огромное преимущество данного редактора. Для меня было также! давайте предположим, что у нас имеется следующий код:
var joe = 'plumber';
Предположим, что курсор находится в начале строки и нам захотелось изменить "plumber" на "black", традиционно, вы можете использовать клавиши стрелок или мышь для того, чтобы выбрать и изменить текст. С Vim, процесс значительно упрощён. Просто нажмите: ci'
. Данная аббревиатура означает "Change Inner Quotes" или найди следующий набор одиночных кавычек и измени значение внутри.
Крутые плагины
- snipMate: позволяет вам, к примеру, нажать + tab, и развернуть полностью элемент div. Это ужасно полезно.
- Surround: оберните участок текста в теги, круглые, квадратные скобки и так далее.
- NerdTree: позволяет осмотреться в файловой системе и открыть файлы или директории. Он показывает файловую систему в форме древа, которой можно управлять клавиатурой и/или мышью. Также можно выполнять простые операции имеющие отношения к файловой системе.
- TComment: просто и быстро добавьте комментарии для определённых строк кода.
- Sparkup: похож на ZenCoding, но предоставляет больше возможностей когда дело касается добавления значений элементам, к примеру:
ul > li { Мой текст пункта списка. }
.
7. Мой файл vimrc пустой
Это, также, было моё первое недовольство во время знакомства с Vim. Когда первый раз запускается, скажем, MacVim, вы оказываетесь лицом к лицу с волчьей стаей! Никакой подсветки кода, никакого форматирования, никаких умных отступов... ничего! Если вы используете кастомный редактор Vim, у вас по крайней мере будет базовый файл vimrc, с которым быстрее можно начать. Это может быть пугающий опыт - попытка найти способы, как же добавить кастомные настройки.
Для тех кто не знаком с файлом vimrc, по сути это файл, который позволяет указать необходимые настройки вашему редактору.
Используйте это в качестве скелета (нажмите кнопку Expand, расположенную ниже):
" .vimrc File " Maintained by: Jeffrey Way " jeffrey@jeffrey-way.com " http://net.tutsplus.com " "Forget compatibility with Vi. Who cares. set nocompatible "Enable filetypes filetype on filetype plugin on filetype indent on syntax on "Write the old file out when switching between files. set autowrite "Display current cursor position in lower right corner. set ruler "Want a different map leader than \ "set mapleader = ","; "Ever notice a slight lag after typing the leader key + command? This lowers "the timeout. set timeoutlen=500 "Switch between buffers without saving set hidden "Set the color scheme. Change this to your preference. "Here's 100 to choose from: http://www.vim.org/scripts/script.php?script_id=625 colorscheme twilight "Set font type and size. Depends on the resolution. Larger screens, prefer h20 set guifont=Menlo:h14 "Tab stuff set tabstop=3 set shiftwidth=3 set softtabstop=3 set expandtab "Show command in bottom right portion of the screen set showcmd "Show lines numbers set number "Prefer relative line numbering? "set relativenumber" "Indent stuff set smartindent set autoindent "Always show the status line set laststatus=2 "Prefer a slightly higher line height set linespace=3 "Better line wrapping set wrap set textwidth=79 set formatoptions=qrn1 "Set incremental searching" set incsearch "Highlight searching set hlsearch " case insensitive search set ignorecase set smartcase "Hide MacVim toolbar by default set go-=T "Hard-wrap paragraphs of text nnoremap <leader>q gqip "Enable code folding set foldenable "Hide mouse when typing set mousehide "Shortcut to fold tags with leader (usually \) + ft nnoremap <leader>ft Vatzf " Create dictionary for custom expansions set dictionary+=/Users/jeff_way/.vim/dict.txt "Opens a vertical split and switches over (\v) nnoremap <leader>v <C-w>v<C-w>l "Split windows below the current window. set splitbelow " session settings set sessionoptions=resize,winpos,winsize,buffers,tabpages,folds,curdir,help "Set up an HTML5 template for all new .html files "autocmd BufNewFile * silent! 0r $VIMHOME/templates/%:e.tpl "Load the current buffer in Firefox - Mac specific. abbrev ff :! open -a firefox.app %:p<cr> "Map a change directory to the desktop - Mac specific nmap <leader>d :cd ~/Desktop<cr>:e.<cr> "Shortcut for editing vimrc file in a new tab nmap <leader>ev :tabedit $MYVIMRC<cr> "Change zen coding plugin expansion key to shift + e let g:user_zen_expandabbr_key = '<C-e>' "Faster shortcut for commenting. Requires T-Comment plugin map <leader>c <c-_><c-_> "Saves time; maps the spacebar to colon nmap <space> : "Automatically change current directory to that of the file in the buffer autocmd BufEnter * cd %:p:h "Map code completion to , + tab imap <leader><tab> <C-x><C-o> " More useful command-line completion set wildmenu "Auto-completion menu set wildmode=list:longest "http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDE set completeopt=longest,menuone inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>" inoremap <expr> <C-n> pumvisible() ? '<C-n>' : \ '<C-n><C-r>=pumvisible() ? "\<lt>Down>" : ""<CR>' inoremap <expr> <M-,> pumvisible() ? '<C-n>' : \ '<C-x><C-o><C-n><C-p><C-r>=pumvisible() ? "\<lt>Down>" : ""<CR>' "Map escape key to jj -- much faster imap jj <esc> "Delete all buffers (via Derek Wyatt) nmap <silent> ,da :exec "1," . bufnr('$') . "bd"<cr> "Bubble single lines (kicks butt) "http://vimcasts.org/episodes/bubbling-text/ nmap <C-Up> ddkP nmap <C-Down> ddp "Bubble multiple lines vmap <C-Up> xkP`[V`] vmap <C-Down> xp`[V`] " Source the vimrc file after saving it. This way, you don't have to reload Vim to see the changes. if has("autocmd") augroup myvimrchooks au! autocmd bufwritepost .vimrc source ~/.vimrc augroup END endif " easier window navigation nmap <C-h> <C-w>h nmap <C-j> <C-w>j nmap <C-k> <C-w>k nmap <C-l> <C-w>l "------------------------" "NERDTREE PLUGIN SETTINGS "------------------------" "Shortcut for NERDTreeToggle nmap <leader>nt :NERDTreeToggle <CR> "Show hidden files in NerdTree let NERDTreeShowHidden=1 "autopen NERDTree and focus cursor in new document autocmd VimEnter * NERDTree autocmd VimEnter * wincmd p "Helpeful abbreviations iab lorem Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. iab llorem Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. "Spelling corrects. Just for example. Add yours below. iab teh the iab Teh The " Get to home dir easier " <leader>hm is easier to type than :cd ~ nmap <leader>hm :cd ~/ <CR> " Alphabetically sort CSS properties in file with :SortCSS :command! SortCSS :g#\({\n\)\@<=#.,/}/sort " Shortcut to opening a virtual split to right of current pane " Makes more sense than opening to the left nmap <leader>bv :bel vsp " Saves file when Vim window loses focus au FocusLost * :wa " Backups set backupdir=~/.vim/tmp/backup// " backups set directory=~/.vim/tmp/swap// " swap files set backup " enable backup " No more stretching for navigating files "noremap h ; "noremap j h "noremap k gj "noremap l gk "noremap ; l set showmatch " show matching brackets " print empty <a> tag map! ;h <a href=""></a><ESC>5hi
8. Я не хочу использовать терминал
Я тоже -- по крайней мере, не больше чем это потребуется -- есть различные, специальные версии редакторов Vim, предоставляющие Windows/Mac подобный графический интерфейс.
Эти редакторы предоставляют поддержку различный сочетаний клавиш, которые врезаны в вашу память, такие как "
Command + F
" для поиска, или "Command + W
" для закрытия текущего окна.
Помните как когда-то в школе, иногда ученик сидящий рядом с вами мог объяснить и помочь понять какие-либо сложные концепции, лучше учителя? Причина заключается в том, что как только вы овладеете каким-либо ремеслом, что на самом деле казалось для вас самой сложной проблемой. С сентября по октябрь, я приступил к четырёхдневному испытанию, которое я назвал - "Постижение Vim". После того как я услышал огромное количество невероятно талантливых разработчиков нахваливают настолько старый редактор, я решил, что это стоит месяца моего времени, чтобы выяснить почему многие считают Vim лучшим редактором на планете.
10. Нет возможности редактировать файл на сервере
Конечно вы можете это сделать, признаюсь однако, что данная возможность не совсем дружелюбна к пользователю, как к примеру функционал удалённого сервера в редакторе Coda. Кстати заговорив о Panic, если вы пользователь Transmit, возможно у вас появится желание установить Transmit FTP плагин.
"Этот скрипт позволяет загрузить текущий файл с помощью Transmit напрямую из Vim. Для того, чтобы это заработало, файл над которым вы работаете должен быть привязан к соединению Transmit, и у данного соединения должно быть включено "DockSend".
С этим плагином, когда редактируете файл, у которого есть соединение с Transmit (откройте файл с помощью Transmit), вам надо лишь нажать
Control + U
для отправки его обратно на удалённый сервер. Это просто!Хотя по правде говоря, вы должны настроить лучший способ для процесса сборки/развёртывания. Таким образом вместо использования FTP, вы можете всего навсего сделать
git push
.
Есть много причин почему не стоит использовать Vim. Кривая его обучения довольно крутая и требует полного переосмысления того, как должен работать редактор кода. Сказав это, стоит отметить что есть сотня причин, почему вам следует использовать Vim. Единственный вопрос: почему вы до сих пор этого не делаете?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weeklyEnvato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!
Translate this post