Разница между 1.34 и текущей версией РедакторVim.
@@ -1,8 +1,8 @@
+= Vim
 
 - Work in progress
 
-http://thumbs.dreamstime.com/t/%E7%8B%97%E5%B7%A5%E4%BD%9C-52561040.jpg
-
+[[http://img0.joyreactor.cc/pics/comment/full/%D0%B3%D0%B5%D1%80%D0%BE%D0%B8-%D0%BC%D0%B5%D1%87%D0%B0-%D0%B8-%D0%BC%D0%B0%D0%B3%D0%B8%D0%B8-3-Heroes-of-Might-and-Magic-3-Heroes-of-Might-and-Magic-%D0%98%D0%B3%D1%80%D1%8B-1611943.png | It’s OK this way | 100px]]
 
 ===
 
@@ -14,13 +14,33 @@
 	* полезные плагины.
 ===
 
-Vim поддерживает множество режимов работы. Это значит, что действие комбинаций клавиш различается в зависимости от того режима, в котором находится редактор.
+Vim — мощный текстовый редактор, потомок Unix-редактора vi.
+Так же как и vi, vim гибко конфигурируем и содержит множество
+возможностей по ускорению и автоматизации редактирования текстов.
+За счёт использования внутреннего скриптового языка vimscript
+редактор гибко конфигурируется и позволяет быстро разрабатыватывать расширения.
+
+Для новичков vim может показаться громоздким и непонятным из-за своей необычной
+«системы управления».
+Дело в том, что Vim поддерживает множество режимов работы.
+Это значит, что действие комбинаций клавиш различается
+в зависимости от того режима, в котором находится редактор.
+Командный режим является режимом по умолчанию.
+Находясь в нём, мы можем перейти в другие режимы
+или выполнять команды (о них будет сказано ниже).
+
+Для того чтобы начать вводить текст,
+необходимо перевести vim в режим вставки. Делается это вводом ``i``.
+После этого внизу окна редактора начнёт отображаться строка ``-- INSERT --``.
+В режиме вставки vim работает как нормальный текстовый редактор,
+любой введённый символ вставляется в редактируемый текст.
 
-Текущий режим отображается внизу экрана, если там находится имя файла или пустая строка - редактор в командном режиме, в режиме вставки отображается строка ``-- INSERT --``, в режиме выделения - ``-- VISUAL --``.
+Для того, чтобы вернуться в командный режим, необходимо нажать клавишу Esc.
+Здесь и далее мы будем обозначать её как '''<ESC>'''.
 
--- Hello world
+В качестве примера создадим файл ''hello.txt'', содержащий строчку 'Hello, world!'
 
-В качестве примера создадим файл ''hello.txt'' содержащий строчку 'Hello, world!'
+В терминале вводим команду
 
  $ '''vim hello.txt'''
 
@@ -29,97 +49,116 @@
  iHello, world!'''<ESC>''':wq
 
 Теперь по порядку о том, что мы сделали:
-	1 ``i`` - команда перехода в режим вставки (После нажатия внизу появляется строка ``-- INSERT --``);
-	1 ``Hello,world!`` - в режиме вставки строка печатается на экран;
-	1 ``'''<ESC>'''`` - Нажатие клавиши Escape выводит vim из режима вставки;
-	1 ``:wq`` - команда для сохранения файла и выхода из текстового редактора.
+	1 ``i`` — команда перехода в режим вставки (После нажатия внизу появляется строка ``-- INSERT --``);
+	1 ``Hello,world!`` — в режиме вставки строка печатается на экран;
+	1 ``'''<ESC>'''`` — возвращаем vim в командный режим;
+	1 ``:wq`` — команда для сохранения файла и выхода из текстового редактора.
+
+- Посимвольное перемещение курсора
+
+Для перемещения курсора по тексту в командном режиме используются клавиши ``hjkl``:
+
+	``h`` : переместить курсор влево,
+	``j`` : переместить курсор вниз,
+	``k`` : переместить курсор вверх,
+	``l`` : переместить курсор вправо.
 
-По умолчанию редактор находится в командном режиме.
+Вы можете использовать клавиши со стрелками (← ↑ → ↓) но использовать ``hjkl`` для перемещения гораздо удобнее, чем тянуть руку к мышке
+или клавишам со стрелками (при слепом десятипальцевом методе набора ваши пальцы уже лежат на клавишах ``jkl``).
 
--- Перемещение курсора
+- Числовые аргументы
 
-Для перемещения курсора по тексту в командном режиме используются клавиши hjkl: h - переместить курсор влево, j переместить курсор вниз, k - переместить курсор вверх, l - переместить курсор вправо. Использовать hjkl для перемещения гораздо удобнее чем тянуть руку к мышке или клавишам со стрелками (при слепом десятипальцевом методе набора ваши пальцы уже лежат на клавишах jkl), в нужный 
-момент вы просто нажимаете '''<ESC>''' и перемещаете курсор в выбранную позицию. 
+Перед любой командой перемещения курсора можно указать число,
+обозначающее сколько раз команда будет выполнена.
+Например команда 4j перемещает курсор на 4 строки вниз.
 
--- Базовые команды
+- Базовые команды
 
-Для удаления выбранного символа в командном режиме передвиньте курсор к символу и нажмите x.
+Команда удаления символа под курсором ``x``.
 
-Для того чтобы отменить сделанные изменения в командном режиме нажмите u (аналог ``'''<ctrl>'''+z``).
+Отмена сделанных изменений ``u`` (аналог ``'''<ctrl>'''+z``).
 
-Для того чтобы вернуть отменённые изменения в командном режиме нажмите ``'''<ctrl>'''+r``
+Возвращение отменённых изменений ``'''<ctrl>'''+r``
 
-Помимо базовых команд, о которых было сказано выше, vim поддерживает множество других, позволяет комбинировать уже существующие или создавать свои. Более того, перед большинством команд можно набрать число, определяющее сколько раз команда будет выполнена, например для удаления четырёх символов вместо четырёх нажатий на ``x`` можно набрать команду ``4x``
+Помимо базовых команд,
+о которых было сказано выше,
+vim поддерживает множество других,
+позволяет комбинировать уже существующие или создавать свои.
+Более того, перед большинством команд можно набрать число,
+определяющее сколько раз команда будет выполнена,
+например для удаления четырёх символов вместо четырёх нажатий на ``x`` можно набрать команду ``4x``
 
--- Пара слов о командном режиме
+- Пара слов о командном режиме
 
 Можно относиться к командам vim как к предложениям.
 
-Есть глаголы (например f - find, d - delete, g - go), есть существительные (например w - word, буквы, числа).
+Есть глаголы (например f — find, d — delete, g — go), есть существительные (например w — word, буквы, числа).
 
 Примеры составления предложений:
-	* Delete till find 'b' (удалить всё до символа 'b') - ``dtfb``
-	* Mark from there to 22 line (выделить всё с текущего символа до 22 строки) - ``vg22g``
+	* Delete till find 'b' (удалить всё до символа 'b') — ``dtfb``
+	* Mark from there to 22 line (выделить всё с текущего символа до 22 строки) — ``vg22g``
 
-Соответственно чем больше вы знаете "слов", тем более сложные и полезные "предложения" вы сможете составлять. Вторая часть статьи - краткий конспект различных возможностей и команд vim.
+Соответственно чем больше вы знаете «слов», тем более сложные и полезные «предложения» вы сможете составлять.
+Вторая часть статьи — краткий конспект различных возможностей и команд vim.
  
--- 1. Режимы Vim
+- 1. Режимы Vim
 
 Помимо описанных выше режимов работы (вставка, командный режим) vim поддерживает множество других.
-Более того, переход может быть выполнен несколькими способами
+Более того, переход между режимами может быть выполнен несколькими способами.
 
---- 1.1 Командный режим
+-- 1.1 Командный режим
 
 Режим по умолчанию. Из него осуществляется переход в другие режимы и выполнение команд.
 
-Клавиша перехода - '''<ESC>'''.
+Клавиша перехода — '''<ESC>'''.
 
 Все команды из разделов 3 - 10 выполняются из этого режима.
 
---- 1.2 Режим ввода
+-- 1.2 Режим ввода
 
 Клавиши перехода:
-	* ``i`` : ввод с текущего символа;
-	* ``a`` - ввод со следующего символа;
-	* ``o`` - перейти в режим ввода с новой строки под курсором;
-	* ``O`` - перейти в режим ввода с новой строки над курсором;
-	* ``I`` - переместиться в начало строки и перейти в режим ввода;
-	* ``A`` - переместиться в конец строки и перейти в режим ввода;
+	* ``i`` — ввод с текущего символа;
+	* ``a`` — ввод со следующего символа;
+	* ``o`` — перейти в режим ввода с новой строки под курсором;
+	* ``O`` — перейти в режим ввода с новой строки над курсором;
+	* ``I`` — переместиться в начало строки и перейти в режим ввода;
+	* ``A`` — переместиться в конец строки и перейти в режим ввода.
 
---- 1.3 Режим выделения
+-- 1.3 Режим выделения
 
 Клавиши перехода:
-	* ``v`` - посимвольное выделение;
-	* ``V`` - построчное выделение.
+	* ``v`` — посимвольное выделение;
+	* ``V`` — построчное выделение.
 
---- 1.4 Режим замены
+-- 1.4 Режим замены
 
-Клавиша перехода - ``R``.
+Клавиша перехода — ``R``.
 
--- 2. Справка
+- 2. Справка
 
-Vim содержит довольно полную документацию, которой можно воспользоваться в любой момент. Для её просмотра необходимо использовать команду ``:help``.
+Vim содержит довольно полную документацию, которой можно воспользоваться в любой момент.
+Для её просмотра необходимо использовать команду ``:help``.
 Для получения справки по интересующей команде достаточно набрать ``:help commandname`` в командном режиме.
-По оглавлению можно перемещаться с помощью горячих клавиш из раздела "Путешествие по меткам"
+По оглавлению можно перемещаться с помощью горячих клавиш из раздела "Путешествие по меткам".
 Кроме того вместе с vim устанавливается вместе с небольшим учебным пособием, для начала обучения введите в терминале
 
  $ '''vimtutor''
 
--- 3. Работа с файлами и сессиями
+- 3. Работа с файлами и сессиями
 
-``:mksession`` - создать файл сессии (в файл Session.vim сохраняется информация о настройках и всех открытых файлах и буферах);
+``:mksession`` — создать файл сессии (в файл Session.vim сохраняется информация о настройках и всех открытых файлах и буферах);
 
-``source Session.vim`` - загрузить файл сессии (все настройки и открытые в прошлый раз окна восстанавливаются);
+``source Session.vim`` — загрузить файл сессии (все настройки и открытые в прошлый раз окна восстанавливаются);
 
-``:e``FILE - открывает FILE на редактирование;
+``:e``FILE — открывает FILE на редактирование;
 
-``:w``\[[FILE]] - записывает сделанные изменения в открытый файл или FILE, если он указан;
+``:w``[FILE] — записывает сделанные изменения в открытый файл или FILE, если он указан;
 
-``:q`` - выход из vim. При ``:q!`` выход без записи сделанных изменений;
+``:q`` — выход из vim. При ``:q!`` выход без записи сделанных изменений.
 
-'''РЕМАРКА:''' - можно смешивать несколько команд в одну. Например - ``:wq``
+'''РЕМАРКА:''' можно смешивать несколько команд в одну. Например — ``:wq``
 
--- 4. Перемещение
+- 4. Перемещение
 
 Перемещение курсора:
 
@@ -130,104 +169,104 @@
 
 '''РЕМАРКА:''' Удобство в том, что при такой раскладке пальцы всегда лежат на большинстве нужных клавиш, и не нужно перемещать руку от букв к клавишам стрелок.
 
-``^`` - курсор в начало строки;
+``^`` — курсор в начало строки;
 
-``$`` - курсор в конец строки;
+``$`` — курсор в конец строки;
 
-``w`` - курсор в начало следующего слова;
+``w`` — курсор в начало следующего слова;
 
-``b`` - курсор в начало предыдущего слова;
+``b`` — курсор в начало предыдущего слова;
 
-``{NUM}gg`` - переход на {NUM} строку;
+``{NUM}gg`` — переход на {NUM} строку;
 
-``G`` - переход в конец файла;
+``G`` — переход в конец файла;
 
-``ctrl + y`` - экран на 1 строку вверх;
+``ctrl + y`` — экран на 1 строку вверх;
 
-``ctrl + e`` - экран на 1 строку вниз;
+``ctrl + e`` — экран на 1 строку вниз;
 
-``ctrl + u`` - экран на 1/2 страницы вверх;
+``ctrl + u`` — экран на 1/2 страницы вверх;
 
-``ctrl + d`` - экран на 1/2 страницы вниз;
+``ctrl + d`` — экран на 1/2 страницы вниз;
 
-``ctrl + b`` - экран на страницу вверх;
+``ctrl + b`` — экран на страницу вверх;
 
-``ctrl + u`` - экран на страницу вверх;
+``ctrl + u`` — экран на страницу вверх.
 
--- 5. Отмена действий
+- 5. Отмена действий
 
-``u`` - отменяет предыдущее действие. Может применяться несколько раз. Аналог комбинации ``ctrl + z``;
+``u`` — отменяет предыдущее действие. Может применяться несколько раз. Аналог комбинации ``ctrl + z``;
 
-``ctrl + r`` отмена отмены предыдущего действия. Аналог комбинации ``ctrl + shift + z``.
+``ctrl + r`` — отмена отмены предыдущего действия. Аналог комбинации ``ctrl + shift + z``.
 
--- 6. Поиск
+- 6. Поиск
 
-``/{regex}`` - поиск регулярного выражения {regex} в текущем файле от курсора к концу файла;
+``/{regex}`` — поиск регулярного выражения {regex} в текущем файле от курсора к концу файла;
 
-``/{regex}`` - поиск регулярного выражения {regex} в текущем файле от курсора к началу файла;
+``/{regex}`` — поиск регулярного выражения {regex} в текущем файле от курсора к началу файла;
 
-``n`` - найти следующее вхождение;
+``n`` — найти следующее вхождение;
 
-``N`` - найти предыдущее вхождение;
+``N`` — найти предыдущее вхождение;
 
-``f{letter} или F{letter}`` - перемещает курсор на следующую (или предыдущую если F) букву {letter} в текущей строке;
+``f{letter} или F{letter}`` — перемещает курсор на следующую (или предыдущую если F) букву {letter} в текущей строке;
 
-``t{letter} или T{letter}`` - перемещает курсор за один символ до следующей (или предыдущей если T) буквы {letter} в текущей строке;
+``t{letter} или T{letter}`` — перемещает курсор за один символ до следующей (или предыдущей если T) буквы {letter} в текущей строке.
 
--- 7. Редактирование
+- 7. Редактирование
 
-``{NUM}dd`` - удаление {NUM} строк;
+``{NUM}dd`` — удаление {NUM} строк;
 
-``{NUM}cc`` - аналог dd, но после удаления переворит редактор в режим ввода;
+``{NUM}cc`` — аналог dd, но после удаления переворит редактор в режим ввода;
 
-``{NUM}yy`` копирование {NUM} строк в буфер обмена;
+``{NUM}yy`` — копирование {NUM} строк в буфер обмена;
 
-``p`` - вставка из буфера обмена после позиции курсора;
+``p`` — вставка из буфера обмена после позиции курсора;
 
-``P`` - вставка из буфера обмена до позиции курсора;
+``P`` — вставка из буфера обмена до позиции курсора;
 
-``x`` - удаление символа под курсором.
+``x`` — удаление символа под курсором.
 
--- 8. Вызов внешних команд
+- 8. Вызов внешних команд
 
-``:!cmd`` - вызывает shell команду cmd для обработки переданных данных. Если данных не передано, показывает вывод команды на экран.
+``:!cmd`` — вызывает shell команду cmd для обработки переданных данных. Если данных не передано, показывает вывод команды на экран.
 
 Пример:
 
-``:!ls`` - показывает файлы в текущей директории
+``:!ls`` — листинг файлов в текущей директории;
 
-``:%wc -w`` - считает количество слов в файле
+``:%wc -w`` — подсчёт слов в файле.
 
 Делаем vim hex-редактором:
 
-``%!xxd`` - конвертирует файл в хекс представление
+``%!xxd`` — конвертирует файл в хекс представление;
 
-``%!xxd -r`` - конвертирует обратно
+``%!xxd -r`` — конвертирует обратно.
 
 
--- 9. Прочие полезные команды
+- 9. Прочие полезные команды
 
-``:E`` - Открывает меню выбора файла;
+``:E`` — Открывает меню выбора файла;
 
-``:setlocal`` - показывает текущие локальные переменные
+``:setlocal`` — показывает текущие локальные переменные.
 
--- 10. Путешествие по меткам
+- 10. Путешествие по меткам
 
 В отношении языков программирования меткой является
 некий объект (функция, переменная, структура, ...).
 Vim позволяет организовать удобное перемещение к определениям меток. 
 
-``ctrl + ]`` - перейти к первому определению метки, находящейся под курсором;
+``ctrl + ]`` — перейти к первому определению метки, находящейся под курсором;
 
-``ctrl + g`` - то же что и ``ctrl + ]``, но показывает меню выбора, если определений несколько;
+``ctrl + g`` — то же что и ``ctrl + ]``, но показывает меню выбора, если определений несколько;
 
-``ctrl + t`` - вернуться обратно.
+``ctrl + t`` — вернуться обратно.
 
 
 Для создания файла, содержащего в себе информацию о расположении меток
 необходимо воспользоваться утилитой ctags.
 
-В корневой директори проекта, к которому вы хотите сгенерировать файл меток запустите командуj
+В корневой директори проекта, к которому вы хотите сгенерировать файл меток запустите команду
 
  $ '''ctags -R .'''
 
@@ -237,7 +276,7 @@
 
  :set tags=TAGFILE
 
--- 11. Файл настроек vimrc
+- 11. Файл настроек vimrc
 
 При запуске редактор считывает настройки, сохранённые в файле ''~/.vimrc''. Те же команды можно установить для текущей сессии vim в командном режиме после двоеточния (Пример: ``:set nu``)
 
@@ -245,21 +284,21 @@
 
 Пример:
 
-``set nu`` - включает нумерацию строк vim;
+``set nu`` — включает нумерацию строк vim;
 
-``set nonu`` - выключает нумерацию;
+``set nonu`` — выключает нумерацию;
 
-``set hls`` - highlight search, подсвечивает искомые слова
+``set hls`` — highlight search, подсвечивает искомые слова;
 
-``set ic`` - ignore case, игнорирует регистр букв при поиске
+``set ic`` — ignore case, игнорирует регистр букв при поиске;
 
-``syntax on`` - включает подсветку синтаксиса
+``syntax on`` — включает подсветку синтаксиса.
 
--- 12. Полезные дополнения vimrc
+- 12. Полезные дополнения vimrc
 
 Работа с файлами в windows(cp1251) кодировке
 
-===
+==={vim}
 set fileencodings=cp1251,utf-8
 if has("x11") == 0
   set enc=cp1251
@@ -268,7 +307,7 @@
 
 Добавление привычных комбинаций ``'''<ctrl>'''+c``, ``'''ctrl'''+v``, ``'''ctrl'''+a``
 
-===
+==={vim}
 function! CopyAll()
   let n = line('.')
   normal gg"+yG
@@ -283,12 +322,33 @@
 
 Мэппинг русских клавиш, для того чтобы не приходилось переключать раскладку для командного режима.
 
+==={vim}
+
+"russian keys support
+set langmap=йq,цw,уe,кr,еt,нy,гu,шi,щo,зp,фa,ыs,вd,аf,пg,рh,оj,лk,дl,яz,чx,сc
+set langmap+=мv,иb,тn,ьm,ЙQ,ЦW,УE,КR,ЕT,НY,ГU,ШI,ЩO,ЗP,ФA,ЫS,ВD,АF,ПG,РH,ОJ,ЛK
+set langmap+=ДL,ЯZ,ЧX,СC,МV,ИB,ТN,ЬM,х[,Х{,ъ],ж\\;,Ж:,э',Э\\",б\\,,Б<,ю.,Ю>,Ё~
+
 ===
-.LP
-set langmap=йq ,цw ,уe ,кr ,еt ,нy ,гu ,шi ,щo ,зp ,фa ,ыs ,вd ,аf,пg ,рh ,оj ,лk ,дl ,яz ,чx ,сc ,мv ,иb ,тn ,ьm ,ЙQ ,ЦW ,УE ,КR ,ЕT ,НY ,ГU ,ШI ,ЩO ,ЗP ,ФA ,ЫS ,ВD ,АF ,ПG ,РH ,ОJ ,ЛK ,ДL ,ЯZ ,ЧX ,СC ,МV ,ИB ,ТN ,ЬM ,х[[ ,Х{ ,ъ]] ,ж\\; ,Ж: ,э' ,Э\\" ,б\\, ,Б< ,ю. ,Ю>
+
+Nazi-режим, с помощью которого можно бороться за чистоту кода.
+Подсвечивает лишние пробелы в конце строк.
+
+==={vim}
+
+function HlSpaces()
+	highlight ExtraWhitespace ctermbg=red guibg=red
+	"autocmd ColorScheme * highlight ExtraWhitespace ctermbg=red guibg=red
+	au BufWinEnter * match ExtraWhitespace /\s\+$/
+	au InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
+	au InsertLeave * match ExtraWhitespace /\s\+$/
+endfunction
+
+au FileType c call HlSpaces()
+
 ===
 
--- 13. Плагины
+- 13. Плагины
 
 Для упрощения работы в VIM в интернете можно найти множество плагинов.
 Их установка довольно проста (обычно нужно просто поместить файлы в папку '''~/.vim/''').
@@ -313,7 +373,7 @@
 Плагин отображает дерево каталогов начиная с выбранного корня.
 Довольно удобно для просмотра больших проектов.
 
--- 14. Используемые источники
+- 14. Используемые источники
 
 
 %R(