├── .gitignore ├── README.md ├── lesson1.md ├── lesson2.md ├── lesson3.md ├── lesson4.md ├── lesson5.md └── lesson6.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | vimpractise 2 | =========== 3 | 4 | Сборник практических занятий по vim. 5 | 6 | Вдохновлено **vimtutor**, следует пройти его перед ознакомлением с данным материалом. 7 | 8 | Способ применения: 9 | * Открыть файл с нужным занятием в vim 10 | * Следовать инструкциям 11 | 12 | Полезные материалы: 13 | * Тренировка сочетаний клавиш [Shortcut Foo](https://www.shortcutfoo.com/) 14 | * Статья [Как пользоваться vim](http://ru.najomi.org/vim) 15 | * [Vim Cheat Sheet](http://www.viemu.com/vi-vim-cheat-sheet.gif) 16 | * [Vim Tips](http://www.net4me.net/examples/32/net50.html) 17 | 18 | 19 | Contributing 20 | ------------ 21 | 22 | * Урок должен содержать от 10 до 20 комбинаций; 23 | * Комбинации клавиш оформляются как инлайн код, символом \`, каждая нажимаемая клавиша отдельно (`c``e`) 24 | * Всё что набирается в коммандной строке оформляется слитно вместе с двоеточием или слешем. (`:%s/foo/bar/g`) 25 | * Лучше подробнее рассмотреть ту или иную фишку, чем рассмотреть много, но по верхам; 26 | * Что бы лишний раз не коммитить, можно редактировать урок непосредственно на Github и смотреть preview, так же есть плагин [Markdown Preview](https://github.com/revolunet/sublimetext-markdown-preview) для Sublime; 27 | * Комментаррий к коммиту должен быть чётким, ясным и однозначным. Первое слово с заглавной буквы; 28 | * Комментарии к коммиту из одного слова делать нельзя; 29 | * Помним, что порядок слов в английской речи такой: [существительное] [глагол]. 30 | `Lesson 1 added` - правильно 31 | `Added lesson 1` - неправильно -------------------------------------------------------------------------------- /lesson1.md: -------------------------------------------------------------------------------- 1 | Урок 1. Способы перейти в режим вставки 2 | ============= 3 | 4 | * **`i`** - вставить текст слева от текущего 5 | * **`I`** - вставить текст в начало строки 6 | * **`a`** - вставить текст справа от текущего символа 7 | * **`A`** - вставить текст в конец строки 8 | * **`o`** - создать новую строку под текущей 9 | * **`O`** - создать новую строку над текущей 10 | * **`C`** - заменить всё до конца строки 11 | * **`3``s`** - удалить 3 символа и перейти в режим вставки 12 | * **`c``i``W`** - заменить слово под курсором 13 | * **`c``i``"`** - заменить текст между кавычками 14 | * **`c``i``(`** - заменить текст между круглыми скобками 15 | * **`g``i`** - перейти к последнему месту, где производилось редактирование ) " 16 | * **`Ctrl``r``w`** - вставить слово под курсором в командную строку 17 | 18 | **`i`** - вставить текст слева от текущего 19 | 1. Переходим на точку в первой строке 20 | 2. Нажимаем **`i`** 21 | 3. Печатаем недостающий текст 22 | 23 | ``` 24 | There is some text missing last . 25 | There is some text missing last word. 26 | ``` 27 | 28 | **`I`** - вставить текст в начало строки 29 | 1. Переходим любую позицию в первой строке 30 | 2. Нажимаем **`I`** 31 | 3. Печатаем недостающий текст 32 | 33 | ``` 34 | is some text missing fisrt word. 35 | There is some text missing fisrt word. 36 | ``` 37 | 38 | **`a`** - вставить текст справа от текущего символа 39 | 1. Переходим на точку в первой строке 40 | 2. Нажимаем **`a`** 41 | 3. Печатаем недостающий текст 42 | 43 | ``` 44 | variable. = value 45 | variable.property = value 46 | ``` 47 | 48 | **`A`** - вставить текст в конец строки 49 | 1. Переходим на любую позицию в первой строке 50 | 2. Нажимаем **`A`** 51 | 3. Печатаем недостающий текст 52 | 53 | ``` 54 | There is some text missing last dot 55 | There is some text missing last dot. 56 | ``` 57 | 58 | **`o`** - создать новую строку под текущей 59 | 1. Переходим на любую позицию в первой строке 60 | 2. Нажимаем **`o`** 61 | 3. Печатаем недостающий текст 62 | 63 | ``` 64 | Insert line after this. 65 | 66 | Insert line after this. 67 | Yahoo! 68 | ``` 69 | 70 | **`O`** - создать новую строку над текущей 71 | 1. Переходим на любую позицию в первой строке 72 | 2. Нажимаем **`O`** 73 | 3. Печатаем недостающий текст 74 | 75 | ``` 76 | Insert line before this. 77 | 78 | Yahoo! 79 | Insert line before this 80 | ``` 81 | 82 | **`C`** - заменить всё до конца строки 83 | 1. Переходим на букву 'w' 84 | 2. Нажимаем **`C`** 85 | 3. Печатаем недостающий текст 86 | 87 | ``` 88 | This text is wrong and you should fix it! 89 | This text is right. 90 | ``` 91 | 92 | **`3``s`** - удалить 3 символа и перейти в режим вставки 93 | Oбщий случай: [Кол-во повторений]s 94 | Попытайтесь исправить текст ниже используя эту команду 95 | 96 | ``` 97 | Thiii teooooot is riffht. 98 | This text is right. 99 | ``` 100 | 101 | **`c``i``W`** - заменить слово под курсором 102 | 1. Переходим на любую позицию в слове 103 | 2. Нажимаем последовательно **`c``i``W`** 104 | 3. Печатаем верное слово 105 | 106 | ``` 107 | This lubw has a few wptfd that mrrf changing usf the change operator. 108 | This line has a few words that need changing using the change operator. 109 | ``` 110 | 111 | **`c``i``"`** - заменить текст между кавычками 112 | 1. Переходим на любую позицию в тексте в кавычках 113 | 2. Нажимаем последовательно **`c``i``"`** 114 | 3. Печатаем верный текст 115 | 116 | ``` 117 | value = "wrong" 118 | value = "right" 119 | 120 | value = "wrong string" 121 | value = "right string" 122 | ``` 123 | 124 | **`c``i``(`** - заменить текст между круглыми скобками 125 | 1. Переходим на любую позицию в тексте в скобках 126 | 2. Нажимаем последовательно **`c``i``(`** 127 | 3. Печатаем верный текст 128 | 129 | ``` 130 | value = function(wrong) 131 | value = function(right) 132 | 133 | value = function(wrong, wrong, wrong) 134 | value = function(param1, param2) 135 | ``` 136 | 137 | **`g``i`** - перейти к последнему месту, где производилось редактирование ) " 138 | 139 | **`Ctrl``r``w`** - вставить слово под курсором в командную строку 140 | Простейший пример - это поиск. 141 | 1. Ставим курсор на слово This в командном режиме 142 | 2. Нажимаем `/` 143 | 3. Нажимаем `Ctrl` и не отпуская `r``w` 144 | 4. Далее `Enter` и `n` или `N` для перемещения 145 | -------------------------------------------------------------------------------- /lesson2.md: -------------------------------------------------------------------------------- 1 | Урок 2. Передвижение по тексту 2 | ============= 3 | 4 | * **`f``s`** - передвинуть курсор вперед к следующему вхождению символа s в текущей строке 5 | * **`t``s`** - передвинуть курсор вперед к первому вхождению символа s в текущей строке и установить курсор перед символом s 6 | * **`F``s`** - передвинуть курсор назад к предыдущему вхождению символа s в текущей строке 7 | * **`w`** - передвинуть курсор вперед на одно слово (перейти к следующему слову, разделители слов - любые разделители) 8 | * **`W`** - передвинуть курсор вперед на одно слово (перейти к следующему слову, разделители слов - пробелы) 9 | * **`b`** - передвинуть курсор назад на одно слово (перейти на начало слова или предыдущему слову, разделители слов, любые разделители) 10 | * **`B`** - передвинуть курсор назад на одно слово (перейти на начало слова или к предыдущему слову, разделители слов - пробелы) 11 | * **`e`** - передвинуть курсор вперёд на одно слова и установить курсор на конец слова 12 | * **`E`** - передвинуть курсор вперёд на одно слова и установить курсор на конец слова (разделители слов - пробелы) 13 | * **`0`** - передвинуть курсор на начало текущей строки 14 | * **`^`** - передвинуть курсор на первый символ в текущей строке 15 | * **`$`** - передвинуть курсор на конец текущей строки 16 | * **`*`** - начать поиск по слову под курсором 17 | * **`#`** - начать поиск по слову под курсором в обратном порядке 18 | * **`g``g` или `[``[`** - перейти в начало 19 | * **`G` или `]``]`** - перейти в конец файла 20 | * **`%`** - перейти к парной скобке 21 | * **`}`/`{`** - перейти к следующему/предыдущему параграфу 22 | * **`'.`** - перейти к той строке, где производилось редактирование 23 | 24 | **`f``s`** - передвинуть курсор вперед к следующему вхождению символа s в текущей строке 25 | 1. Переходим на начало строки. 26 | 2. Нажимаем **`f``s`** 27 | 3. Осуществляется переход на символ s в слове is. 28 | 4. Нажимаем **`f``s`** ещё раз. 29 | 5. Осуществляется на символ s в слове some. 30 | 31 | ``` 32 | There is some text missing last. 33 | ``` 34 | 35 | **`t``s`** - передвинуть курсор вперед к следующему вхождению символа s в текущей строке и установить курсор перед символом s 36 | 1. Переходим на начало строки. 37 | 2. Нажимаем **`t``s`** 38 | 3. Осуществляется переход на символ i в слове is, курсор устанавливается на символе i. 39 | 40 | ``` 41 | There is some text missing last. 42 | ``` 43 | 44 | **`F``s`** - передвинуть курсор назад к предыдущему вхождению символа e в текущей строке 45 | 1. Переходим на конец строки. 46 | 2. Нажимаем **`F``e`** 47 | 3. Осуществляется переход на символ e в слове text. 48 | 4. Нажимаем **`F``e`** ещё раз. 49 | 5. Осуществляется переход на символ e в слове very. 50 | 51 | ``` 52 | There is some text missing last. This is big text, very big text. 53 | ``` 54 | 55 | **`w`** - передвинуть курсор вперед на одно слово (перейти к следующему слову) 56 | 1. Переходим на начало строки. 57 | 2. Нажимаем **`w`** 58 | 3. Осуществляется переход на начало слова is. 59 | 60 | ``` 61 | There is some text missing last. This is big text, very big text. 62 | ``` 63 | 64 | **`W`** - передвинуть курсор вперед на одно слово (перейти к следующему слову) 65 | 1. Переходим на начало строки. 66 | 2. Нажимаем **`W`** 67 | 3. Осуществляется переход на начало слова is. 68 | 69 | ``` 70 | There is some text missing last. This is big text, very big text. 71 | ``` 72 | 73 | **`b`** - передвинуть курсор назад на одно слово 74 | 1. Переходим на конец строки. 75 | 2. Нажимаем **`b`** 76 | 3. Осуществляется переход на начало слова text. 77 | 78 | ``` 79 | There is some text missing last. This is big text, very big text. 80 | ``` 81 | 82 | **`B`** - передвинуть курсор назад на одно слово 83 | 1. Переходим на конец строки. 84 | 2. Нажимаем **`B`** 85 | 3. Осуществляется переход на начало слова text. 86 | 87 | ``` 88 | There is some text missing last. This is big text, very big text. 89 | ``` 90 | 91 | **`e`** - передвинуть курсор вперёд на одно слова и установить курсор на конец слова 92 | 1. Переходим на начало строки. 93 | 2. Нажимаем **`e`** 94 | 3. Осуществляется переход на конец слова There. 95 | 96 | ``` 97 | There is some text missing last. This is big text, very big text. 98 | ``` 99 | 100 | **`E`** - передвинуть курсор вперёд на одно слова и установить курсор на конец слова 101 | 1. Переходим на начало строки. 102 | 2. Нажимаем **`E`** 103 | 3. Осуществляется переход на конец слова There. 104 | 105 | ``` 106 | There is some text missing last. This is big text, very big text. 107 | ``` 108 | 109 | **`0`** - передвинуть курсор на начало текущей строки 110 | 1. Переходим на конец строки. 111 | 2. Нажимаем **`0`** 112 | 3. Осуществляется переход на начало строки. 113 | 114 | ``` 115 | There is some text missing last. This is big text, very big text. 116 | ``` 117 | 118 | **`^`** - передвинуть курсор на первый символ в текущей строке 119 | 1. Переходим на конец второй строки. 120 | 2. Нажимаем **`^`** 121 | 3. Осуществляется переход на символ T слова This. 122 | 123 | ``` 124 | There is some text missing last. 125 | This is big text, very big text. 126 | ``` 127 | 128 | **`$`** - передвинуть курсор на конец текущей строки 129 | 1. Переходим на начало второй строки. 130 | 2. Нажимаем **`$`** 131 | 3. Осуществляется переход на конец строки. 132 | 133 | ``` 134 | There is some text missing last. This is big text, very big text. 135 | ``` 136 | 137 | **`*`** - начать поиск по слову под курсором 138 | 1. Переходим на начало строки. 139 | 2. Выберите любое слово в строке, переместите курсор на его начало и нажмите **`*`** 140 | 3. Осуществляется поиск по этому слову в файле с начала файла. 141 | 142 | ``` 143 | This is new text. Search error in this. 144 | ``` 145 | 146 | **`#`** - начать поиск по слову под курсором в обратном порядке 147 | 1. Переходим на начало строки. 148 | 2. Выберите любое слово в строке, переместите курсор на его начало и нажмите **`#`** 149 | 3. Осуществляется поиск по этому слову в файле с обратном порядке. 150 | 151 | ``` 152 | This is new text. Search error in this. 153 | ``` 154 | 155 | **`g``g`/`G`** - перейти в начало/конец файла 156 | 1. Нажмите **`g``g`**. 157 | 2. Курсор установится на начало файла. 158 | 3. Нажмите **`G`**. 159 | 4. Курсор установится на конец файла. 160 | 161 | **`%`** - перейти к парной скобке 162 | 1. Переходим на начало строки. 163 | 2. Нажимаем **`%`**. 164 | 3. Курсор перемещается на символ ]. 165 | 166 | ``` 167 | This is [new text]. Search error in this. 168 | ``` 169 | 170 | **`}`/`{`** - перейти к следующему/предыдущему параграфу 171 | 1. Переходим на начало первого параграфа - слово Binary. 172 | 2. Нажимайте `{` и `}` для перемещения между параграфами. 173 | 174 | ``` 175 | Binary media files do not get along very well with Git. For these files it's usually best to use a service specifically designed for what you're using. 176 | 177 | For large media files like video and music you should host the files yourself or using a service like Vimeo or Youtube. 178 | 179 | For design files like PSDs and 3D models, a service like Dropbox usually works quite nicely. This is what GitHub's designers use to stay in sync; Only final image assets are committed into our repos. 180 | 181 | This is [new text]. Search error in this. 182 | ``` 183 | 184 | **`'.`** - перейти к той строке, где производилось редактирование 185 | 186 | Используемые материалы: 187 | * http://ru.najomi.org/vim/12 188 | 189 | -------------------------------------------------------------------------------- /lesson3.md: -------------------------------------------------------------------------------- 1 | Урок 3. Способы удаления и замены текста 2 | ============= 3 | 4 | * `x` - вырезает символ под курсором 5 | * `x``p` - меняет символ под курсором местами со следующим за ним 6 | * `X` - вырезает символ перед курсором 7 | * `c``направление` - удалить до указанной позиции и начать ввод 8 | * `c``e` - удалить от текущей позиции до конца слова (вместе с последующим словом, если курсор не в начале слова) 9 | * `c``E` - удалить от текущей позиции до конца слова (вместе с последующим словом, если курсор не в начале слова) 10 | * `c``w` - удалить от текущей позиции до конца слова 11 | * `c``W` - удалить от текущей позиции до конца слова 12 | * `c``b` - удалить от текущей позиции до начала слова (конца предыдущего слова) 13 | * `c``B` - удалить от текущей позиции до первого предыдущего пробела 14 | * `c``$` или `C` - удалить от текущей позиции до конца строки и начать ввод 15 | * `c``^` - удалить от текущей позиции до первого симола в строке и начать ввод 16 | * `c``f``.` - удалить от текущей позиции до первого вхождения симола `.` (включая символ `.`) в строке и начать ввод 17 | * `4``c``c` - удалить 4 строки и начать ввод 18 | * `3``c``e` - удалить подстроку до конца 3-го слова и начать ввод 19 | * `s` - удалить символ под курсором и начать вводить текст 20 | * `s``направление` - удалить до указанной позиции и начать ввод 21 | * `S` - удалить строку и начать ввод 22 | * `r``e` - заменить символ под курсором на символ `e` 23 | * `2``r``r` - заменить 2 символа от курсора на символ `r` 24 | * `R` - перейти в режим замены текста (вводимые символы будут переписывать существующие до выхода из режима) 25 | * `d``d` - удалить строку 26 | * `D` - удалить от текущей позиции до конца строки 27 | 28 | * `x` - удалить символ под курсором 29 | 30 | 1. Устанавливаем курсор на место ошибки 31 | 2. Для удаления лишнего символа используем `x` 32 | 3. Повторяем процедуру необходимое количество раз 33 | 4. Не забываем, что для навигации используем клавиши `j`,`k`,`h`,`l`, а также `w`,`b`,`e`,`$`,`^` 34 | 35 | ``` 36 | Fiix sssomme eeerrorsss innn thiss string... 37 | Fix some errors in this string. 38 | ``` 39 | 40 | * `x``p` - меняет символ под курсором местами со следующим за ним 41 | 42 | 1. Устанавливаем курсор на первый символ ошибки 43 | 2. Для удаления лишнего символа используем `x` 44 | 3. Вставляем удалённый символ на новое место с помощью `p` 45 | 46 | ``` 47 | Fix a typo in this srting. 48 | Fix a typo in this string. 49 | 50 | ``` 51 | 52 | * `X` - вырезает символ перед курсором 53 | 54 | 1. Устанавливаем курсор на перед ошибкой 55 | 2. Для удаления лишнего символа используем `X` 56 | 3. Повторяем процедуру необходимое количество раз 57 | 4. Не забываем, что для навигации используем клавиши `j`,`k`,`h`,`l`, а также `w`,`b`,`e`,`$`,`^` 58 | 59 | ``` 60 | Fiix sssomme eeerrorsss innn thiss string... 61 | Fix some errors in this string. 62 | ``` 63 | 64 | * `c``направление` - удалить до указанной позиции и начать ввод 65 | 66 | * `c``e` - удалить от текущей позиции до конца слова (вместе с последующим словом, если курсор не в начале слова) 67 | 68 | 1. Устанавливаем курсор на перед ошибкой 69 | 2. Для удаления лишних символов используем `c``e` 70 | 2. Для выхода из режима вставки используем `Esc` 71 | 3. Повторяем процедуру необходимое количество раз 72 | 4. Не забываем, что для навигации используем клавиши `j`,`k`,`h`,`l,`, а также `w`,`b`,`e`,`$`,`^` 73 | 74 | ``` 75 | Fimm somoit aa erroryyy iuuu thioo stringppp 76 | Fix some errors in this string. 77 | ``` 78 | 79 | * `c``E` - удалить от текущей позиции до конца слова (вместе с последующим словом, если курсор не в начале слова) 80 | 81 | 1. Устанавливаем курсор перед ошибкой 82 | 2. Для удаления лишнего символа используем `c``E` 83 | 3. Если требуется - вводим нужные символы 84 | 4. Повторяем процедуру необходимое количество раз 85 | 5. Не забываем, что для навигации используем клавиши `j`,`k`,`h`,`l`, а также `w`,`b`,`e`,`$`,`^` 86 | 87 | ``` 88 | Fimm somoi,t erroryyy iuuu thioo stringppp 89 | Fix some errors in this string. 90 | ``` 91 | 92 | * `c``w` - удалить от тeкущей позиции до начала следующего слова 93 | 94 | 1. Устанавливаем курсор перед ошибкой 95 | 2. Для удаления лишнего символа используем `c``w` 96 | 3. Если требуется - вводим нужные символы 97 | 4. Повторяем процедуру необходимое количество раз 98 | 5. Не забываем, что для навигации используем клавиши `j`,`k`,`h`,`l`, а также `w`,`b`,`e`,`$`,`^` 99 | 100 | ``` 101 | Fij somdfs errorvdwd insd thisdssdf string. 102 | Fix some errors in this string. 103 | ``` 104 | 105 | * `c``W` - удалить от тeкущей позиции до начала следующего слова 106 | 107 | 1. Устанавливаем курсор на перед ошибкой 108 | 2. Для удаления лишнего символа используем `c``W` 109 | 3. Если требуется - вводим нужные символы 110 | 4. Повторяем процедуру необходимое количество раз 111 | 5. Не забываем, что для навигации используем клавиши `j`,`k`,`h`,`l`, а также `w`,`b`,`e`,`$`,`^` 112 | 113 | ``` 114 | Fij, somdfs. errorvdwd; insd/ thisdssdf; string. 115 | Fix some errors in this string. 116 | ``` 117 | 118 | * `c``b` - удалить от текущей позиции до начала слова (начала предыдущего слова, в случае, если курсор расположен на начале текущего слова) 119 | 120 | 1. Устанавливаем курсор на перед ошибкой 121 | 2. Для удаления лишнего символа используем `c``b` 122 | 3. Если требуется - вводим нужные символы 123 | 4. Повторяем процедуру необходимое количество раз 124 | 5. Не забываем, что для навигации используем клавиши `j`,`k`,`h`,`l`, а также `w`,`b`,`e`,`$`,`^` 125 | 126 | ``` 127 | Cix dsdome dfrors on phis gtring. 128 | Fix some errors in this string. 129 | ``` 130 | 131 | * `c``B` - удалить от текущей позиции до первого предыдущего пробела 132 | 133 | 1. Устанавливаем курсор на перед ошибкой 134 | 2. Для удаления лишнего символа используем `c``B` 135 | 3. Если требуется - вводим нужные символы 136 | 4. Повторяем процедуру необходимое количество раз 137 | 5. Не забываем, что для навигации используем клавиши `j`,`k`,`h`,`l`, а также `w`,`b`,`e`,`$`,`^` 138 | 139 | ``` 140 | C,ix dsdome dfrors on; phis gtring. 141 | Fix some errors in this string. 142 | ``` 143 | 144 | * `c``$` или `C` - удалить от текущей позиции до конца строки и начать ввод 145 | 146 | 1. Устанавливаем курсор на перед ошибкой 147 | 2. Для удаления лишних символов используем `c``$` 148 | 3. Если требуется - вводим нужные символы 149 | 4. Во второй строке используем `C` для удаления 150 | 5. Не забываем, что для навигации используем клавиши `j`,`k`,`h`,`l`, а также `w`,`b`,`e`,`$`,`^` 151 | 152 | ``` 153 | Fix some errorer wfwvev weefwe. 154 | Fix some errorer wfwvev weefwe. 155 | Fix some errors in this string. 156 | ``` 157 | 158 | * `c``^` - удалить от текущей позиции до первого символа в строке и начать ввод 159 | 160 | 1. Устанавливаем курсор на последнем неверном символе 161 | 2. Для удаления лишних символов используем `c``^` 162 | 3. Если требуется - вводим нужные символы 163 | 4. Во второй строке используем `C` для удаления 164 | 5. Не забываем, что для навигации используем клавиши `j`,`k`,`h`,`l`, а также `w`,`b`,`e`,`$`,`^` 165 | 166 | ``` 167 | Edw wefwvf wefs in this string. 168 | Fix some errors in this string. 169 | ``` 170 | 171 | * `c``f``.` - удалить от текущей позиции до первого вхождения симола `.` (включительно) строке и начать ввод 172 | 173 | ``` 174 | Tmmdhjl.x errors in this string. 175 | Fix some errors in this string. 176 | ``` 177 | 178 | * `4``c``c` - удалить 4 строки и начать ввод 179 | 180 | ``` 181 | Fimdhj ljqd kjsdq wjrs in this string. 182 | Fimdhj ljqd kjsdq wjrs in this string. 183 | Fimdhj ljqd kjsdq wjrs in this string. 184 | Fimdhj ljqd kjsdq wjrs in this string. 185 | Fix some errors in this string. 186 | ``` 187 | 188 | * `3``c``e` - удалить подстроку до конца 3-го слова и начать ввод 189 | 190 | ``` 191 | Fix more more more errors in this string. 192 | Fix some errors in this string. 193 | ``` 194 | 195 | * `s` - удалить символ под курсором и начать вводить текст 196 | 197 | ``` 198 | Fiesome ersors in this string. 199 | Fix some errors in this string. 200 | ``` 201 | 202 | * `S` - удалить строку и начать ввод 203 | 204 | ``` 205 | Fix some errors in this string. 206 | All symbols are correct %) 207 | ``` 208 | 209 | * `r``m` - заменить символ под курсором на символ `m` 210 | 211 | 1. Устанавливаем курсор на последнем неверном символе 212 | 2. Для удаления лишних символов используем `r``m` 213 | 3. Повторите операцию необходимое число раз 214 | 4. Не забываем, что для навигации используем клавиши `j`,`k`,`h`,`l`, а также `w`,`b`,`e`,`$`,`^` 215 | 216 | ``` 217 | Fix sote errors in this string. 218 | Fix some errors in this string. 219 | ``` 220 | 221 | * `2``r``r` - заменить 2 символа от курсора на символ `r` 222 | 223 | ``` 224 | Fix some errors in this string. 225 | Fix some ettors in this string. 226 | ``` 227 | 228 | * `R` - перейти в режим замены текста (вводимые символы будут переписывать существующие до выхода из режима) 229 | 230 | 1. Устанавливаем курсор на последнем неверном символе 231 | 2. Для перезода в режим замены текста используем `R` 232 | 3. Вносим изменения 233 | 234 | ``` 235 | so e Fthi six in errors string. 236 | Fix some errors in this string. 237 | 238 | 192.168.255.255 239 | 200.163.100.121 240 | ``` 241 | 242 | * `d``d` - удалить строку 243 | 244 | 1. Устанавливаем курсор на последнем неверном символе 245 | 2. Для удаления лишнией строки используем `d``d` 246 | 3. Не забываем, что для навигации используем клавиши `j`,`k`,`h`,`l`, а также `w`,`b`,`e`,`$`,`^` 247 | 248 | ``` 249 | Fix some errors in this string. 250 | Fix some errors in this string. 251 | Fix some errors in this string. 252 | ``` 253 | 254 | * `D` - удалить от текущей позиции до конца строки 255 | 256 | 1. Устанавливаем курсор на последнем неверном символе 257 | 2. Для удаления лишних символов используем `D` 258 | 3. Не забываем, что для навигации используем клавиши `j`,`k`,`h`,`l`, а также `w`,`b`,`e`,`$`,`^` 259 | 260 | ``` 261 | Fix some errors in this string.Fix some errors in this string. 262 | Fix some errors in this string. 263 | ``` 264 | -------------------------------------------------------------------------------- /lesson4.md: -------------------------------------------------------------------------------- 1 | Урок 4. Способы выделения и замены текста 2 | ============= 3 | 4 | * `v``направление` - выделить блок текста от текущей позиции в указанном направлении на указанное "количество символов" 5 | * `v``направление``действие` - выделить блок текста от текущей позиции в указанном направлении на указанное "количество символов" и выполнить указанное действие над выделенным фрагментом текста 6 | * `v``%` - когда курсор установлен на одной из скобок - выделит всё до её пары. 7 | * `v``i``p` - выделить блок текста 8 | * `v``i``b` - выделить всё между двумя ближайшими к курсору круглыми скобками 9 | * `v``i``B` - выделить всё между двумя ближайшими к курсору фигурными скобками 10 | * `v``i``"` - выделить всё между двумя ближайшими двойными кавычками 11 | * `v``i``'` - выделить всё между двумя ближайшими одинарными кавычками 12 | * `V` - выделить всю строку целиком 13 | * `g``g``V``G` - выделить весь файл 14 | * `Ctrl``v` - выделять прямоугольником 15 | * `Ctrl``v``выделение_прямоугольника``r``text` - выделить прямоугольник текста и заменить текст на `text` в каждой строке 16 | * `Ctrl``v``выделение_прямоугольника``I``text``Esc` - выделить прямоугольник текста и добавить `text` перед каждой строкой 17 | * `:%s/old/new/g` - Заменить все вхождения '`old`' на '`new`' 18 | * `:%s/old/new/gc` - Заменить все вхождения '`old`' на '`new`' с запросом подтверждения 19 | * `:v/string/d` - Удалить все строки, не содержащие '`string`' 20 | * `:g/^$/d` - Удаление всех пустых строк в VIM 21 | 22 | `v``направление` - выделить блок текста 23 | 24 | ** Возможные варианты комманд направлеия см. в предыдущих уроках ** 25 | 26 | `v``направление``действие` - выполнить действие над выделением 27 | 28 | ** Возможные варианты комманд направлеия и действия см. в предыдущих уроках ** 29 | 30 | 1. Устанавливаем курсор на букву a 31 | 2. Нажимаем `v``f``p``r``a` (на человечесокм языке: начать выделение, переместить до 'p', заменить на 'a') 32 | 33 | 34 | ``` 35 | Wuzzat is. Up! 36 | Wuzzaaaaaaaap! 37 | ``` 38 | 39 | `v``%` - когда курсор установлен на одной из скобок - выделит всё до её пары. 40 | 41 | 1. Устанавливаем курсор на любую из фигурных скобок в ошибочном блоке 42 | 2. Для выделения фрагмента текста используем `v``%` 43 | 3. Удалем ненужное 44 | 45 | ``` 46 | User.scoped.each { |u| u.found; { "WOOPS!" } u.save! } 47 | User.scoped.each { |u| u.found; u.save! } 48 | ``` 49 | 50 | `v``i``p` - выделить блок текста (параграф) 51 | 52 | 1. Устанавливаем курсор внутрь блока текста 53 | 2. Для выделения фрагмента текста используем `v``i``p` 54 | 3. Удаляем 55 | 56 | ``` 57 | User.scoped.each do |u| 58 | u.found 59 | u.save 60 | end 61 | 62 | ``` 63 | 64 | `v``i``b` - выделить всё между двумя ближайшими к курсору круглыми скобками 65 | 66 | 1. Устанавливаем курсор на любое место между круглыми скобками 67 | 2. Для выделения фрагмента текста используем `v``i``b` 68 | 3. Удаляем и дописываем нужное 69 | 70 | ``` 71 | User.find_by_name("Some name") 72 | User.find_by_name("Victor") 73 | ``` 74 | 75 | `v``i``B` - выделить всё между двумя ближайшими к курсору фигурными скобками 76 | 77 | 1. Устанавливаем курсор на любое место между фигурными скобками 78 | 2. Для выделения фрагмента текста используем `v``i``B` 79 | 80 | ``` 81 | User.scoped.each { p "Woops!" } 82 | User.scoped.each { |u| u.found; u.save! } 83 | ``` 84 | 85 | `v``i``"` - выделить всё между двумя ближайшими двойными кавычками 86 | 87 | 1. Устанавливаем курсор на любое место между двойными ковычками 88 | 2. Для выделения фрагмента текста используем `v``i``"` 89 | 3. Удаляем текст используя ранее изученные команды 90 | 4. Дописываем недостающее 91 | 92 | ``` 93 | "DO NOT FIX ERRORS" this string. 94 | "Fix some" errors in this string. 95 | ``` 96 | 97 | `v``i``'` - выделить всё между двумя ближайшими одинарными кавычками 98 | 99 | 1. Устанавливаем курсор на любое место между одинарными ковычками 100 | 2. Для выделения фрагмента текста используем `v``i``'` 101 | 3. Удаляем текст используя ранее изученные команды 102 | 4. Дописываем недостающее 103 | 104 | ``` 105 | 'DO NOT FIX ERRORS' this string. 106 | 'Fix some' errors in this string. 107 | ``` 108 | 109 | `V` - выделить всю строку целиком 110 | 111 | 1. Устанавливаем курсор на любую позицию в строке 112 | 2. Для выделения используем `V` 113 | 114 | ``` 115 | Fix some errors in this string. 116 | Fix some errors in this string. 117 | ``` 118 | 119 | `g``g``V``G` - выделить весь файл 120 | 121 | `Ctrl``v` - выделять прямоугольником 122 | `Ctrl``v``выделение_прямоугольника``r``text` - выделить прямоугольник текста и заменить текст на `text` в каждой строке 123 | 124 | 125 | `:%s/Fix some errors/All errors fixed/g` - Заменить все вхождения '`Fix some errors`' на '`All errors fixed`' с запросом подтверждения 126 | `:%s/Fix some errors/All errors fixed/gc` - Заменить все вхождения '`Fix some errors`' на '`All errors fixed`' с запросом подтверждения 127 | `:v/string/d` - Удалить все строки, не содержащие '`string`' 128 | `:g/^$/d` - Удаление всех пустых строк в VIM 129 | 130 | -------------------------------------------------------------------------------- /lesson5.md: -------------------------------------------------------------------------------- 1 | Урок 5. Буферы в vim 2 | ============= 3 | 4 | застолбил -------------------------------------------------------------------------------- /lesson6.md: -------------------------------------------------------------------------------- 1 | Урок 6. split fu 2 | ============= 3 | 4 | Сплит (split) - это разделение окна редактора на несколько частей с 5 | возможностью в каждой из них отображать независимый контент. 6 | 7 | * `Ctrl` `w` `v` - разбить окно по вертикали 8 | * `Ctrl` `w` `w` - переключиться между окнами циклически 9 | 10 | * `Ctrl` `w` `h` - перейти к окну левее 11 | * `Ctrl` `w` `j` - перейти к окну ниже 12 | * `Ctrl` `w` `k` - перейти к окну выше 13 | * `Ctrl` `w` `l` - перейти к окну правее 14 | 15 | * `Ctrl` `w` `r` - переместить циклически окна вправо 16 | * `Ctrl` `w` `R` - переместить циклически окна влево 17 | 18 | * `Ctrl` `w` `H` - переместить окно левее 19 | * `Ctrl` `w` `J` - переместить окно ниже 20 | * `Ctrl` `w` `K` - переместить окно выше 21 | * `Ctrl` `w` `L` - переместить окно правее 22 | 23 | * `Ctrl` `w` `>` - переместить вертикальную разделительную черту правее 24 | * `Ctrl` `w` `<` - переместить вертикальную разделительную черту левее 25 | 26 | * `Ctrl` `w` `-` - переместить горизонтальную разделительную черту ниже 27 | * `Ctrl` `w` `+` - переместить горизонтальную разделительную черту выше 28 | 29 | * `Ctrl` `w` `=` - выровнять по середине все разделения 30 | 31 | --------------------------------------------------------------------------------