| 1 | Учебник Emacs. Условия распространения приведены в конце файла. |
| 2 | |
| 3 | Для управления Emacs обычно используются сочетания клавиш (key -- сочетание |
| 4 | клавиш клавиатуры и/или кнопок мыши), включающие в себя клавишу CONTROL |
| 5 | (иногда отмечаемая как CTRL или CTL) или клавишу META (иногда помеченную как |
| 6 | ALT или EDIT). Вместо того, чтобы каждый раз писать META или CONTROL, мы |
| 7 | будем использовать следующие сокращения: |
| 8 | |
| 9 | C-<chr> -- следует удерживать клавишу CONTROL, пока набирается символ |
| 10 | <chr>. Так, C-f должно означать: одновременно нажать клавиши CONTROL и f. |
| 11 | M-<chr> -- следует удерживать клавишу META, пока набирается символ |
| 12 | <chr>. Если нет клавиши META, ALT или EDIT, то нажмите <ESC>, |
| 13 | отпустите ее, а потом наберите символ <chr>. |
| 14 | |
| 15 | Важное замечание: для завершения работы Emacs, наберите C-x C-c (два сочетания |
| 16 | клавиш). Чтобы прервать частично набранную команду, нажмите C-g. |
| 17 | Символы ">>" с левой стороны указывают, что вам нужно делать, чтобы |
| 18 | попробовать применить команду. Например: |
| 19 | <<Blank lines inserted here by startup of help-with-tutorial>> |
| 20 | [Середина страницы оставлена пустой в учебных целях. Текст продолжается ниже] |
| 21 | >> Теперь нажмите C-v (просмотр следующего экрана) для перемещения к следующему |
| 22 | экрану. (Выполните эту команду удерживая клавишу CONTROL и нажимая v.) Теперь |
| 23 | вы должны это сделать еще раз, когда вы закончите читать текст на экране. |
| 24 | |
| 25 | Обратите внимание на то, что при переходе с экрана на экран показываются две |
| 26 | строки с предыдущего экрана -- это обеспечивает некоторую непрерывность |
| 27 | восприятия, так что вы можете продолжать читать текст не теряя нити |
| 28 | повествования. |
| 29 | |
| 30 | Первое, что вам необходимо знать -- это то, как передвигаться по тексту из |
| 31 | одного места в другое. Вы уже знаете, как переместиться вперед на один экран |
| 32 | используя сочетание клавиш C-v. Для перемещения назад на один экран, нажмите |
| 33 | M-v (удерживайте клавишу META и наберите v, или нажмите <ESC> и затем v, |
| 34 | если у вас нет клавиши META, EDIT или ALT). |
| 35 | |
| 36 | >> попробуйте набрать M-v, а затем C-v, несколько раз. |
| 37 | |
| 38 | |
| 39 | * КРАТКИЙ ПЕРЕЧЕНЬ КОМАНД |
| 40 | ------------------------- |
| 41 | |
| 42 | Следующие сочетания клавиш полезны при по-экранном просмотре текста: |
| 43 | |
| 44 | C-v Перейти на один экран вперед |
| 45 | M-v Перейти на один экран назад |
| 46 | C-l Очистить экран и отобразить все заново, |
| 47 | разместив текст, находящийся возле курсора, |
| 48 | в центре экрана. (это CONTROL-L, а не CONTROL-1.) |
| 49 | |
| 50 | >> Найдите курсор и запомните текст возле него. Потом нажмите C-l. |
| 51 | Найдите курсор снова и убедитесь, что возле него все тот же текст. |
| 52 | |
| 53 | Вы также можете использовать клавиши PageUp и PageDn для перемещения между |
| 54 | экранами (если они есть на вашем терминале), но вы сможете работать более |
| 55 | эффективно, если будете использовать сочетания C-v и M-v. |
| 56 | |
| 57 | |
| 58 | * БАЗОВЫЕ КОМАНДЫ УПРАВЛЕНИЯ КУРСОРОМ |
| 59 | ------------------------------------- |
| 60 | |
| 61 | Движение от экрана к экрану удобно, но как переместиться в определенную |
| 62 | точку в тексте на экране? |
| 63 | |
| 64 | Есть несколько способов сделать это. Вы можете использовать клавиши |
| 65 | управления курсором (стрелки), но более эффективным будет сохранение рук в |
| 66 | их стандартной позиции и использовать команды C-p, C-b, C-f и C-n. Эти |
| 67 | команды эквивалентны четырем клавишам перемещения курсора, как это показано |
| 68 | на схеме: |
| 69 | |
| 70 | Предыдущая строка, C-p |
| 71 | : |
| 72 | : |
| 73 | Назад, C-b .... Текущая позиция курсора .... Вперед, C-f |
| 74 | : |
| 75 | : |
| 76 | Следующая строка, C-n |
| 77 | |
| 78 | >> Переместите курсор на строку с центром диаграммы, используя сочетания |
| 79 | клавиш C-n или C-p. Затем нажмите C-l и посмотрите как диаграмма |
| 80 | переместится в центр экрана. |
| 81 | |
| 82 | Вам будет несложно запомнить эти команды по первым буквам соответствующих |
| 83 | слов: P -- предыдущий (previous), N -- следующий (next), B -- назад |
| 84 | (backward) и F -- вперед (forward). Вы постоянно будете использовать эти |
| 85 | основные команды позиционирования курсора. |
| 86 | |
| 87 | >> Нажмите несколько раз C-n, чтобы опустить курсор вниз к этой строке. |
| 88 | |
| 89 | >> Переместитесь по строке, используя C-f, и потом поднимитесь вверх с |
| 90 | помощью C-p. Посмотрите, как изменилось положение курсора при нажатии |
| 91 | С-р, если он находился в середине строки. |
| 92 | |
| 93 | Каждая строка текста завершается символом перевода строки (Newline |
| 94 | character), который отделяет ее от следующей строки. (Обычно, последняя |
| 95 | строка файла завершается символом перевода строки, но Emacs не требует |
| 96 | этого). |
| 97 | |
| 98 | >> Попробуйте использовать C-b в начале строки. Курсор должен переместиться |
| 99 | на конец предыдущей строки. Это происходит потому, что он движется назад |
| 100 | через символ перевода строки. |
| 101 | |
| 102 | C-f может перемещать курсор через символ перевода строки так же, как и C-b. |
| 103 | |
| 104 | >> Попробуйте несколько раз применить C-b так, чтобы вы увидели, как |
| 105 | движется курсор. Далее используйте сочетание клавиш C-f чтобы вернуться |
| 106 | на конец строки. Нажмите C-f еще раз, чтобы перейти к началу следующей |
| 107 | строки. |
| 108 | |
| 109 | Когда вы перемещаетесь за верхний или нижний край экрана, текст, находящийся |
| 110 | за экраном, сдвигается внутрь экрана. Это называется "прокрутка" |
| 111 | (scrolling). Прокрутка позволяет Emacs перемещать курсор в нужное место |
| 112 | текста без перемещения его за пределы экрана. |
| 113 | |
| 114 | >> Попробуйте переместить курсор за нижнюю границу экрана, используя C-n, и |
| 115 | посмотрите, что произойдет. |
| 116 | |
| 117 | Если посимвольное перемещение слишком медленно, вы можете двигаться по |
| 118 | словам. M-f (META-f) перемещает вперед на слово, а M-b назад на слово. |
| 119 | |
| 120 | >> Нажмите несколько раз M-f и M-b. |
| 121 | |
| 122 | Если курсор находится в середине слова, M-f переместит его в конец слова. |
| 123 | Если курсор находится между словами, M-f переместит его в конец следующего |
| 124 | слова. M-b работает точно так же, но в противоположном направлении. |
| 125 | |
| 126 | >> Нажмите M-f и M-b несколько раз, перемежая их с C-f и C-b, -- так вы |
| 127 | сможете увидеть как действуют M-f и M-b из разных позиций в словах и |
| 128 | между ними. |
| 129 | |
| 130 | Отметьте параллель между C-f и C-b с одной стороны, и M-f и M-b с другой. |
| 131 | Очень часто Meta-сочетания используются для соответствующих операций над |
| 132 | единицами, определенными в языке (слова, предложения, абзацы), тогда как |
| 133 | Control-сочетания работают с базовыми единицами, независимо от того, что вы |
| 134 | редактируете (символы, строки, и т.д.). |
| 135 | |
| 136 | Эта параллель также применима к строкам и предложениям: C-a и C-e перемещает |
| 137 | курсор в начало и конец строки, а M-a и M-e перемещает курсор в начало и |
| 138 | конец предложения. |
| 139 | |
| 140 | >> Попробуйте пару раз нажать C-a, а потом пару раз C-e. Попробуйте пару раз |
| 141 | нажать M-a, после этого пару раз нажать M-e. |
| 142 | |
| 143 | Посмотрите, что повтор C-a ничего не изменяет, а повтор M-a продолжает |
| 144 | движение курсора к следующему предложению. Это не совсем аналогично, но |
| 145 | выглядит естественно. |
| 146 | |
| 147 | Положение курсора в тексте также называют "точкой вставки" (point). Скажем |
| 148 | иначе: курсор показывает место на экране в котором будет расположен вводимый |
| 149 | текст. |
| 150 | |
| 151 | Вот список всех основных команд перемещения курсора, включая движение по |
| 152 | словам и предложениям: |
| 153 | |
| 154 | C-f На символ вперед |
| 155 | C-b На символ назад |
| 156 | |
| 157 | M-f На слово вперед |
| 158 | M-b На слово назад |
| 159 | |
| 160 | C-n На следующую строку |
| 161 | C-p На предыдущую строку |
| 162 | |
| 163 | C-a В начало строки |
| 164 | C-e В конец строки |
| 165 | |
| 166 | M-a Назад, в начало предложения |
| 167 | M-e Вперед, в конец предложения |
| 168 | |
| 169 | >> Попробуйте сейчас несколько раз использовать все эти команды. |
| 170 | Это наиболее часто используемые команды. |
| 171 | |
| 172 | Две другие важные команды перемещения курсора: M-< (META Less-then |
| 173 | {Меньше-Чем}), которая перемещает курсор в начало текста, и M-> (META |
| 174 | Greater-than {Больше-Чем}), которая перемещает курсор в конец текста. |
| 175 | |
| 176 | На большинстве терминалов знак "<" находится над знаком точки, и чтобы |
| 177 | набрать его, вы должны использовать клавишу Shift. На этих терминалах вы так |
| 178 | же должны использовать Shift, чтобы набрать M-< (без удержания клавиши Shift |
| 179 | вы наберете M-точка). |
| 180 | |
| 181 | >> Сейчас попробуйте M-<, чтобы переместиться в начало учебника. |
| 182 | Потом используйте C-v, пока не вернетесь назад. |
| 183 | |
| 184 | >> Сейчас попробуйте M->, чтобы переместиться к концу учебника. |
| 185 | Используйте M-v, пока не вернетесь назад. |
| 186 | |
| 187 | Курсор можно перемещать клавишами управления курсора (стрелками), если ваш |
| 188 | терминал оборудован ими. Мы рекомендуем выучить C-b, C-f, C-n и C-p по трем |
| 189 | причинам. Во-первых, они работают на любых терминалах. Во-вторых, однажды |
| 190 | получив практику использования Emacs, вы поймете, что использовать |
| 191 | Control-сочетания удобнее и быстрее, чем клавиши со стрелочками (потому что |
| 192 | вы не убираете руки с обычного их положения при печати). В-третьих, как |
| 193 | только вы привыкнете использовать Control-сочетания, вы сможете так же легко |
| 194 | выучить и использовать другие, более сложные команды перемещения курсора. |
| 195 | |
| 196 | Большинство команд Emacs допускают задание цифрового аргумента; для |
| 197 | большинства команд, это служит счетчиком повторений. Чтобы задать счетчик |
| 198 | повторений для команды, нажмите C-u, потом число повторений, и затем укажите |
| 199 | команду. Если у вас есть клавиша META (или EDIT или ALT), то цифровой |
| 200 | аргумент можно задать другим способом: наберите цифры, удерживая клавишу |
| 201 | META. Мы рекомендуем привыкнуть к использованию C-u, поскольку это сочетание |
| 202 | клавиш работает на любом терминале. Числовой аргумент также называется |
| 203 | "префиксным аргументом", поскольку вы задаете аргумент до выполнения |
| 204 | команды. |
| 205 | |
| 206 | Например, C-u 8 C-f переместит курсор на восемь символов вперед. |
| 207 | |
| 208 | >> Попробуйте использовать C-n или C-p с цифровым аргументом, чтобы |
| 209 | переместить курсор на эту строку с помощью одной команды. |
| 210 | |
| 211 | Многие команды используют числовой аргумент как счетчик повторений, но |
| 212 | некоторые команды используют его другим способом. Некоторые команды (но мы |
| 213 | еще не изучили ни одну из них) используют его как флаг -- наличие |
| 214 | префиксного аргумента вне зависимости от его значения, изменяет поведение |
| 215 | команды. |
| 216 | |
| 217 | Другим видом исключений являются сочетания клавиш C-v и M-v. При получении |
| 218 | числового аргумента, они прокручивают экран вверх или вниз на указанное |
| 219 | число строк, вместо указанного числа экранов. Например, C-u 8 C-v прокрутит |
| 220 | экран на 8 строк. |
| 221 | |
| 222 | >> Сейчас попробуйте набрать комбинацию C-u 8 C-v. |
| 223 | |
| 224 | Эта команда должна прокрутить экран на 8 строк вверх. Если вы хотите |
| 225 | прокрутить его вниз, можете задать аргумент для M-v. |
| 226 | |
| 227 | Если вы используете оконную систему, такую как X11 или MS-Windows, то должна |
| 228 | быть видна прямоугольная область, именуемая полосой прокрутки, расположенная |
| 229 | с одной из сторон окна Emacs. Вы можете прокручивать текст, щелкая кнопкой |
| 230 | мыши на полосе прокрутки. |
| 231 | |
| 232 | Если ваша мышь имеет колесо прокрутки, вы можете использовать его. |
| 233 | |
| 234 | * ЕСЛИ EMACS ЗАВИС |
| 235 | ------------------ |
| 236 | |
| 237 | Если Emacs перестал реагировать на ваши команды, то вы можете вывести его из |
| 238 | этого состояния нажав C-g. Вы можете использовать C-g, чтобы остановить |
| 239 | выполнение команд, которые слишком долго выполняются. |
| 240 | |
| 241 | Вы также можете использовать C-g для отмены набранного цифрового аргумента |
| 242 | или команды, которая начала выполняться, но которую вы не хотите завершить. |
| 243 | |
| 244 | >> Наберите C-u 100 для задания аргумента 100, потом нажмите C-g. Теперь |
| 245 | нажмите C-f. Курсор должен переместиться всего на один символ, потому что |
| 246 | вы отменили аргумент нажатием C-g. |
| 247 | |
| 248 | Если вы нажали <ESC> по ошибке, то вы так же можете использовать C-g чтобы |
| 249 | избежать воздействия данной команды. |
| 250 | |
| 251 | |
| 252 | * ЗАПРЕЩЕННЫЕ КОМАНДЫ (DISABLED COMMANDS) |
| 253 | ----------------------------------------- |
| 254 | |
| 255 | Некоторые команды Emacs "запрещены", так что начинающие пользователи не |
| 256 | смогут случайно использовать их. |
| 257 | |
| 258 | Если вы набрали одну из запрещенных команд, то Emacs покажет сообщение, |
| 259 | говорящее о том, какая команда вызывается, и запросит у вас, хотите ли вы |
| 260 | продолжать работу и выполнить данную команду. |
| 261 | |
| 262 | Если вы действительно хотите выполнить эту команду, то нажмите клавишу |
| 263 | <SPC> (пробел) в ответ на заданный вопрос. А если вы не хотите выполнить |
| 264 | запрещенную команду, то ответьте на вопрос нажатием клавиши "n". |
| 265 | |
| 266 | >> Нажмите "C-x C-l" ("запрещенная" команда), а потом ответьте "n" на |
| 267 | заданный вопрос. |
| 268 | |
| 269 | |
| 270 | * ОКНА (WINDOWS) |
| 271 | ------ |
| 272 | |
| 273 | Emacs может отображать информацию в нескольких "окнах", каждое из которых |
| 274 | отображает свой текст. Позже мы объясним как работать с несколькими окнами. |
| 275 | А сейчас мы хотим объяснить вам как избавляться от лишних окон и вернуться к |
| 276 | редактированию в одном окне. Это очень просто сделать: |
| 277 | |
| 278 | C-x 1 Одно окно. (закрыть все другие окна). |
| 279 | |
| 280 | Это CONTROL-x со следующей цифрой 1. C-x 1 развернет окно, которое содержит |
| 281 | курсор, так, чтобы оно заняло весь экран. При этом будут удалены все |
| 282 | остальные окна. |
| 283 | |
| 284 | >> Переместите курсор на эту строку и нажмите C-u 0 C-l. |
| 285 | |
| 286 | >> Наберите C-h k C-f. |
| 287 | Заметьте как текущее окно уменьшится, когда появится новое окно и |
| 288 | отобразит документацию для сочетания клавиш C-f. |
| 289 | |
| 290 | >> Наберите C-x 1 и посмотрите, как окно с документацией исчезнет. |
| 291 | |
| 292 | Эта команда отличается от других изученных команд, что она состоит из двух |
| 293 | сочетаний клавиш. Она начинается с сочетания CONTROL-x. Есть целый набор |
| 294 | команд, которые начинаются с CONTROL-x -- многие из них работают с окнами, |
| 295 | буферами, файлами и т.п. вещами. Эти команды состоят из двух, трех или |
| 296 | четырех сочетаний клавиш. |
| 297 | |
| 298 | |
| 299 | * ВСТАВКА И УДАЛЕНИЕ |
| 300 | -------------------- |
| 301 | |
| 302 | Если вы хотите вставить текст, то просто набирайте его. Обычные символы, |
| 303 | такие как A, 7, *, и пр. вставляются сразу как вы нажимаете на них. Чтобы |
| 304 | вставить символ новой строки нажмите <Return> (клавиша перевода каретки, |
| 305 | часто помечена как "Enter"). |
| 306 | |
| 307 | Чтобы удалить символ перед курсором, нажмите клавишу <DEL>. Обычно это |
| 308 | клавиша помеченная как "Backspace" -- та самая клавиша, которую вы обычно |
| 309 | используете вне Emacs для удаления последнего набранного символа. |
| 310 | |
| 311 | На клавиатуре может присутствовать и другая клавиша, помеченная как |
| 312 | "Delete", но она имеет другую функцию, отличную от <DEL>. |
| 313 | |
| 314 | >> Попробуйте сделать это -- наберите несколько символов, а затем удалите их |
| 315 | нажимая <DEL>. Не волнуйтесь что этот файл изменяется -- вы не изменяете |
| 316 | учебник. Это ваша личная копия учебника. |
| 317 | |
| 318 | Когда строка текста становится слишком большой для строки экрана, то она |
| 319 | "продолжается" на следующей строке. Если вы используете графический |
| 320 | дисплей, то небольшие изогнутые стрелки появятся на обоих сторонах экрана |
| 321 | ("fringes") чтобы показать, что строка продолжается с предыдущей |
| 322 | строки. Если вы используете текстовый терминал, то "продолжаемая" строка |
| 323 | обозначается символом "обратный слэш" («\») в правой части экрана. |
| 324 | |
| 325 | >> Вводите текст, пока он не достигнет правой границы, и продолжайте вставку |
| 326 | символов. Вы увидите что появится "продолжаемая" строка. |
| 327 | |
| 328 | >> Используйте <DEL> для удаления текста до тех пор, пока строка снова не |
| 329 | поместится в экран. Символ продолжения строки исчезнет с экрана. |
| 330 | |
| 331 | Символ новой строки можно удалять точно так же, как и любой другой символ. |
| 332 | Удаление символа новой строки между двумя строками приведет к их склейке в |
| 333 | одну. Если полученная строка будет слишком длинной, чтобы вместиться в |
| 334 | экран, то она будет отображена как строка "с продолжением". |
| 335 | |
| 336 | >> Переместите курсор в начало строки и нажмите <DEL>. Это соединит |
| 337 | текущую строку с предыдущей. |
| 338 | |
| 339 | >> Нажмите <Return> для вставки символа новой строки, вместо удаленного |
| 340 | вами. |
| 341 | |
| 342 | Помните, что многие команды Emacs могут получать счетчик повторения -- |
| 343 | обычные символы не являются исключением. Вы можете вставлять по несколько |
| 344 | символов, используя счетчики повторений. |
| 345 | |
| 346 | >> Попробуйте -- наберите C-u 8 * для вставки ********. |
| 347 | |
| 348 | Вы уже научились основам набора текста в Emacs и исправления ошибок. Вы |
| 349 | также можете удалять слова и строки. Вот основные операции удаления: |
| 350 | |
| 351 | <DEL> удалить символ перед курсором |
| 352 | C-d удалить символ следующий за (над) курсором |
| 353 | |
| 354 | M-<DEL> "убить" слово, стоящее перед курсором |
| 355 | M-d "убить" слово, стоящее за курсором |
| 356 | |
| 357 | C-k "убить" все от курсора до конца строки |
| 358 | M-k "убить" все до конца предложения |
| 359 | |
| 360 | Заметьте, что <DEL> и C-d, вместе с M-<DEL> и M-d продолжает параллель, |
| 361 | начатую C-f и M-f (да, <DEL> -- это не настоящий управляющий символ, но не |
| 362 | нужно об этом волноваться). C-k и M-k, также как и C-e и M-e, продолжают |
| 363 | параллель между строками и предложениями. |
| 364 | |
| 365 | Вы можете "убить" любую часть текста следующим методом. Переместитесь к |
| 366 | одному из концов выбранной области и нажмите C-<SPC> (<SPC> -- клавиша |
| 367 | пробела). Переместите курсор к другому концу текста, который вы собираетесь |
| 368 | "убить". По мере того, как вы будете это делать, Emacs будет подсвечивать |
| 369 | текст между курсором и точкой, где вы нажали C-<SPC>. Затем нажмите C-w. Эта |
| 370 | операция убьет весь текст между двумя указанными позициями. |
| 371 | |
| 372 | >> Переместите курсор к букве В в начале предыдущего параграфа. |
| 373 | >> Наберите C-<SPC>. Emacs должен отобразить в нижней части экрана сообщение |
| 374 | "Mark set" (метка установлена). |
| 375 | >> Переместите курсор к букве о в слове "концов", на второй строке параграфа. |
| 376 | >> Нажмите C-w. Это удалит текст начиная с буквы В, и оканчивающийся перед |
| 377 | буквой о. |
| 378 | |
| 379 | Отличие между "убить" (killing) и "удалить" (deleting) заключается в том, |
| 380 | что "убитый" текст может быть заново вставлен (в любой точке), в то время |
| 381 | как "удаленные" части не могут быть вставлены (вы однако можете отменить |
| 382 | удаление -- см. ниже). Вставка "убитого" текста называется "восстановление" |
| 383 | (yanking). В общем, команды, которые могут удалять большие части текста, |
| 384 | убивают этот текст (они настраиваются так, что вы можете восстановить |
| 385 | текст), в то время как команды, которые убирают только один символ, или |
| 386 | убирают только пустые строки и пробельные символы, выполняют операцию |
| 387 | удаления (так что вы не можете восстановить текст). В простейшем случае, |
| 388 | без дополнительного аргумента, команды <DEL> и C-d выполняют удаление. |
| 389 | Однако, если им передан аргумент, то они "убивают" текст. |
| 390 | |
| 391 | >> Переместите курсор на начало не пустой строки. Теперь нажмите C-k, чтобы |
| 392 | убить текст в этой строке. |
| 393 | |
| 394 | >> Нажмите C-k еще раз. Вы видите, что это действие убьет символ новой |
| 395 | строки, который следует за этой строкой. |
| 396 | |
| 397 | Заметьте, что первое выполнение C-k убивает содержимое строки, а второй |
| 398 | вызов C-k убивает саму строку и поднимает вверх другие строки. C-k |
| 399 | обрабатывает числовой аргумент специальным образом -- убивает заданное |
| 400 | количество строк _И_ их содержимое. Это не просто повторение команды. C-u 2 |
| 401 | C-k удалит две строки, а также завершающие их символы новой строки; |
| 402 | выполнение C-k два раза подряд этого не сделает. |
| 403 | |
| 404 | Возврат убитого ранее текста называется "восстановление" (yanking). (Думайте |
| 405 | об этом, как о восстановлении или помещении назад некоторого взятого |
| 406 | текста). Вы можете восстановить убитый текст в месте удаления или в любой |
| 407 | другой точке редактируемого текста или даже в другом файле. Вы можете |
| 408 | восстановить текст несколько раз и получить несколько копий данного текста. |
| 409 | Некоторые редакторы называют операции "убить" и "восстановить" иначе: |
| 410 | "вырезать" (cutting) и "вставить" (pasting) (ознакомьтесь с глоссарием |
| 411 | (Glossary) в руководстве по Emacs). |
| 412 | |
| 413 | Для восстановления убитого текста используется сочетание клавиш C-y. Данная |
| 414 | команда восстанавливает последний убитый текст в точке расположения курсора. |
| 415 | |
| 416 | >> Попробуйте -- наберите C-y, чтобы вставить текст назад. |
| 417 | |
| 418 | Помните, что если вы использовали несколько команд C-k подряд, то все убитые |
| 419 | строки будут сохранены вместе, так что C-y также восстановит их вместе. |
| 420 | |
| 421 | >> Попробуйте -- нажмите C-k несколько раз. |
| 422 | |
| 423 | Теперь вернем убитый текст: |
| 424 | |
| 425 | >> Нажмите C-y. Теперь переместите курсор на несколько строк вниз, и снова |
| 426 | нажмите C-y. Вы увидите копию некоторого текста. |
| 427 | |
| 428 | Что делать, если есть некоторый текст, который вы хотите вернуть назад, а |
| 429 | потом убить что-то еще? Одно нажатие C-y вернет только последний удаленный |
| 430 | текст. Но предыдущий текст не потерян -- вы можете его вернуть назад, |
| 431 | используя команду M-y. После того как вы вернули последний удаленный текст с |
| 432 | помощью C-y, нажмите M-y для замены этого восстановленного текста тем, |
| 433 | который был убит ранее. Выполняя M-y снова и снова, вы будете возвращать |
| 434 | ранее убитые части текста. Когда вы достигнете нужного текста, то вам не |
| 435 | нужно ничего делать, чтобы сохранить его. Просто продолжайте работать, |
| 436 | оставив восстановленный текст там, где он есть. |
| 437 | |
| 438 | Нажимая M-y достаточное число раз, вы можете вернуться в начальную точку |
| 439 | (наиболее раннее удаление). |
| 440 | |
| 441 | >> Убейте строку, переместите курсор и убейте еще одну строку. Затем |
| 442 | используйте C-y для восстановления второй убитой строки. Затем нажмите |
| 443 | M-y, и она будет заменена первой убитой строкой. Нажмите M-y еще |
| 444 | несколько раз, чтобы увидеть что вы получаете. Продолжайте выполнять эту |
| 445 | команду до тех пор, пока вторая убитая строка не будет восстановлена |
| 446 | снова. Если вам хочется, то вы можете задавать положительные и |
| 447 | отрицательные аргументы для команды M-y. |
| 448 | |
| 449 | |
| 450 | * ОТМЕНА (UNDO) |
| 451 | --------------- |
| 452 | |
| 453 | Если вы сделали изменения в тексте, и решили, что это была ошибка, то вы |
| 454 | можете отменить изменения с помощью команды "отмена" (undo), которая |
| 455 | привязана к сочетанию клавиш С-/. |
| 456 | |
| 457 | Обычно, C-/ отменяет изменения, сделанные одной командой; если повторить |
| 458 | C-/ несколько раз подряд, то каждый раз будет отменяться еще одна команда. |
| 459 | |
| 460 | Но есть два исключения: не учитываются команды не изменяющие текст (сюда |
| 461 | включаются команды перемещения курсора и прокрутки текста), а команды |
| 462 | вставки символов собираются в группы до 20 символов. (Это уменьшает число |
| 463 | нажатий C-/, которые вам нужно будет набрать для отмены ввода текста). |
| 464 | |
| 465 | >> Убейте эту строку с помощью C-k, а затем наберите C-/, и строка должна |
| 466 | вернуться назад. |
| 467 | |
| 468 | C-_ -- это еще команда отмены; она работает точно так же, как и C-/. На |
| 469 | некоторых текстовых терминалах, набор C-/ в действительности приводит к |
| 470 | отправке C-_. Кроме того, вы можете использовать C-x u для выполнения этой |
| 471 | же операции, но эту команду менее удобно набирать |
| 472 | |
| 473 | Числовой аргумент для C-/, C-_ или C-x u используется как счетчик повторений. |
| 474 | |
| 475 | Вы можете отменить удаление текста точно так же, как и отмену "убития" |
| 476 | текста. Отличие между убийством и удалением чего-либо заключается в том, |
| 477 | что вы можете восстановить убитый текст с помощью команды C-y; но для |
| 478 | команды отмены нет никакой разницы между этими операциями. |
| 479 | |
| 480 | * ФАЙЛЫ |
| 481 | ------- |
| 482 | |
| 483 | Для того, чтобы сохранить отредактированный текст вы должны поместить его в |
| 484 | файл. Иначе он исчезнет, когда вы закончите работу Emacs. Чтобы поместить |
| 485 | ваш текст в файл, вы должны "найти (открыть)" (find) файл до ввода |
| 486 | текста. (Эту операцию также называют "посетить" (visiting) файл). |
| 487 | |
| 488 | Открыть файл означает что вы видите его содержимое в Emacs. Это практически |
| 489 | также как редактирование самого файла. Однако, ваши изменения, сделанные с |
| 490 | помощью Emacs, не будут сохранены, пока вы не сохраните файл. Так что вы |
| 491 | можете не оставлять частично измененный файл в системе, если вы не хотите |
| 492 | его сохранять. Даже когда вы сохраняете файл, то Emacs оставляет |
| 493 | оригинальный файл, но с другим именем, на случай, если вы решите что ваши |
| 494 | изменения были ошибкой. |
| 495 | |
| 496 | Если вы посмотрите в нижнюю часть экрана, то вы увидите строку, которая |
| 497 | начинается с тире, и начало которой выглядит примерно так " -:--- TUTORIAL.ru". |
| 498 | Эта часть экрана всегда показывает имя открытого вами файла. Итак, сейчас у |
| 499 | вас открыт файл с именем "TUTORIAL.ru", который является вашей персональной |
| 500 | копией учебника Emacs. Когда вы открываете файл в Emacs, имя этого файла |
| 501 | появится в этой строке. |
| 502 | |
| 503 | Одной из вещей, которые вам нужно знать о команде открытия файла -- это то, |
| 504 | что вы должны ввести имя файла, который нужно открыть. Такие команды мы |
| 505 | называем командами, "читающими аргумент" (в нашем случае аргументом является |
| 506 | имя файла). После ввода команды |
| 507 | |
| 508 | C-x C-f Открыть (найти) файл |
| 509 | |
| 510 | Emacs попросит вас ввести имя файла. Имя файла набирается в нижней строке |
| 511 | экрана. Нижняя строка называется мини-буфером когда она используется для |
| 512 | ввода данных. Вы можете использовать обычные команды редактирования Emacs |
| 513 | для ввода имени файла. |
| 514 | |
| 515 | Когда вы вводите имя файла (или любую другую информацию в мини-буфере), вы |
| 516 | можете отменить текущую команду нажав C-g. |
| 517 | |
| 518 | >> Нажмите C-x C-f, а затем нажмите C-g. Это действие отменит ввод данных в |
| 519 | мини-буфере, и заодно и команду C-x C-f, которая использовала мини-буфер |
| 520 | для ввода аргумента. В итоге, вы не открыли никакого файла. |
| 521 | |
| 522 | Когда вы завершите ввод имени файла, нажмите <Return>. Мини-буфер исчезнет и |
| 523 | команда C-x C-f выполнит работу по открытию указанного вами файла. |
| 524 | |
| 525 | А мгновением позже содержимое файла появится на экране, и вы сможете его |
| 526 | редактировать. Когда вы захотите сохранить изменения, наберите команду |
| 527 | |
| 528 | C-x C-s Сохранить файл |
| 529 | |
| 530 | Эта команда скопирует текст из Emacs в файл. В первый раз, когда вы это |
| 531 | сделаете, Emacs переименует оригинальный файл в файл с новым именем, так что |
| 532 | он не будет потерян. Имя файла с предыдущим содержимым получается |
| 533 | добавлением символа "~" к оригинальному имени файла. |
| 534 | |
| 535 | Когда сохранение завершится, Emacs отобразит имя сохраненного файла. Вы |
| 536 | должны сохранять изменения достаточно часто, чтобы не потерять внесенные |
| 537 | изменения, если система вдруг "рухнет" (см. раздел "Автоматическое |
| 538 | сохранение" ниже). |
| 539 | |
| 540 | >> Наберите C-x C-s TUTORIAL.ru <Return>. |
| 541 | Эта команда должна сохранить вашу копию учебника в файле TUTORIAL.ru. В |
| 542 | нижней строке экрана должна появиться надпись "Wrote ...TUTORIAL.ru". |
| 543 | |
| 544 | Вы можете открыть существующий файл для просмотра или редактирования. Вы |
| 545 | также можете открыть файл, который еще не существует. Таким образом вы |
| 546 | можете создать файл с помощью Emacs: откройте несуществующий файл (Emacs |
| 547 | покажет его пустым) и вводите в него текст. Когда вы выполните команду |
| 548 | сохранения файла в первый раз, Emacs создаст настоящий файл с набранным |
| 549 | вами текстом. Далее, как вы поняли, вы будете редактировать уже существующий |
| 550 | файл. |
| 551 | |
| 552 | |
| 553 | * БУФЕРА (BUFFERS) |
| 554 | ----------------- |
| 555 | |
| 556 | Если вы откроете еще один файл с помощью C-x C-f, то предыдущий файл |
| 557 | остается внутри Emacs. Вы можете переключиться назад к предыдущему файлу, |
| 558 | открыв его снова с помощью C-x C-f. Таким образом вы можете загрузить |
| 559 | большое количество файлов в Emacs. |
| 560 | |
| 561 | Emacs хранит текст каждого файла в объекте, называемом "буфер" (buffer). |
| 562 | Открытие файла создает новый буфер внутри Emacs. Чтобы увидеть список |
| 563 | буферов, созданных в текущем сеансе Emacs, наберите |
| 564 | |
| 565 | C-x C-b Отобразить список буферов |
| 566 | |
| 567 | >> Попробуйте выполнить C-x C-b. |
| 568 | |
| 569 | Мы видим, что каждый буфер имеет имя и может иметь связанное с ним имя |
| 570 | файла, содержимое которого хранится в данном буфере. ЛЮБОЙ текст, который вы |
| 571 | видите в окне Emacs, всегда является частью какого-либо буфера. |
| 572 | |
| 573 | >> Наберите C-x 1, чтобы избавиться от списка буферов. |
| 574 | |
| 575 | Когда у вас есть несколько буферов, только один из них является "текущим" в |
| 576 | конкретный момент времени. Это тот буфер, который вы редактируете. Если вы |
| 577 | хотите редактировать другой буфер, то вы должны "переключиться" в него. |
| 578 | Если вы хотите переключиться в буфер, связанный с файлом, то вы можете |
| 579 | открыть этот файл снова с помощью C-x C-f. Но есть более простой способ -- |
| 580 | использовать команду C-x b. В качестве аргумента для данной команды вы |
| 581 | должны указать имя буфера. |
| 582 | |
| 583 | >> Наберите C-x b foo <Return> для переключения в буфер "foo". Затем |
| 584 | наберите C-x b TUTORIAL.ru <Return> для возвращения в буфер с учебником. |
| 585 | |
| 586 | Чаще всего имя буфера совпадает с именем файла (только без имени каталога). |
| 587 | Но иногда это не так. Список буферов, который вы создаете с помощью команды |
| 588 | C-x C-b, показывает вам имя буфера и имя файла для каждого буфера. |
| 589 | |
| 590 | Некоторые буфера не относятся к файлам. Например, буфер с именем "*Buffer |
| 591 | List*", который создан с помощью C-x C-b и содержит список всех буферов, не |
| 592 | связан ни с каким файлом. Буфер с данным учебником также сначала не был |
| 593 | связан с файлом, но сейчас уже связан, поскольку в предыдущем разделе мы |
| 594 | использовали C-x C-s для сохранения его в файле. |
| 595 | |
| 596 | Буфер с именем "*Messages*" также не связан ни с каким файлом; он содержит |
| 597 | сообщения, которые отображаются в самой нижней строке окна Emacs в течение |
| 598 | текущего сеанса работы с Emacs. |
| 599 | |
| 600 | >> Наберите C-x b *Messages* <Return> для просмотра содержимого буфера |
| 601 | сообщений. Затем наберите C-x b TUTORIAL.ru <Return> для возврата к |
| 602 | учебнику. |
| 603 | |
| 604 | Если вы изменили текст одного файла, а затем открываете другой, то текст в |
| 605 | первом буфере остается не сохраненным. Изменения останутся внутри Emacs, в |
| 606 | буфере, связанном с файлом. Создание или редактирование следующего буфера не |
| 607 | влияет на первый буфер. Это очень удобно, но имейте в виду, что вам нужно |
| 608 | иметь удобный способ сохранить буфер первого файла. Было бы неприятно каждый |
| 609 | раз возвращаться назад используя C-x C-f и потом использовать C-x C-s для |
| 610 | сохранения данных. Поэтому существует команда |
| 611 | |
| 612 | C-x s Сохранить некоторые буфера. (Save some buffers) |
| 613 | |
| 614 | C-x s запрашивает у вас подтверждение о сохранении для каждого буфера, |
| 615 | который содержит не сохраненные изменения. Для каждого такого буфера у вас |
| 616 | запросят: сохранять или не сохранять изменения. |
| 617 | |
| 618 | >> Вставьте строку текста, потом наберите C-x s. |
| 619 | Должен появиться запрос: сохранять ли буфер с именем TUTORIAL.ru. |
| 620 | Ответьте на запрос утвердительно нажатием клавиши "y". |
| 621 | |
| 622 | |
| 623 | * РАСШИРЕНИЕ НАБОРА КОМАНД |
| 624 | -------------------------- |
| 625 | |
| 626 | У Emacs очень много команд, и они все не могут быть назначены на control- и |
| 627 | meta- сочетания. Emacs решает эту проблему, используя X-команду (eXtend, |
| 628 | расширять). Есть два варианта: |
| 629 | |
| 630 | C-x Расширение с помощью ввода префикса. За ним следует один символ. |
| 631 | M-x Расширение набора команд с помощью их именования. За ним |
| 632 | следует имя команды. |
| 633 | |
| 634 | Это полезные команды, но они используются менее часто, чем те команды, |
| 635 | которые мы уже изучили. Вы уже видели некоторые из этих команд. Например, |
| 636 | команды работы с файлами: C-x C-f -- открыть файл, и C-x C-s -- сохранить |
| 637 | файл. Другой пример -- команда завершения работы Emacs: C-x C-c. (Не |
| 638 | волнуйтесь о том, что вы потеряете сделанные изменения, C-x C-c предлагает |
| 639 | сохранить изменения перед выходом из Emacs). |
| 640 | |
| 641 | Если вы работаете на графическом дисплее, то вам не нужно выполнять |
| 642 | специальных команд чтобы переключится от Emacs к другой программе. Вы можете |
| 643 | сделать это используя мышь или соответствующее команды операционной системы. |
| 644 | Но когда вы используете текстовый терминал, который способен показывать |
| 645 | только одну программу в конкретный момент времени, то для переключения к |
| 646 | другой программе вам понадобится "приостановить" (suspend) Emacs. |
| 647 | |
| 648 | C-z -- это команда *временного* выхода из Emacs. Вы можете позже вернуться в |
| 649 | ту же сессию Emacs. Когда Emacs запускается на текстовом терминале, команда |
| 650 | C-z "приостанавливает" (suspend) Emacs, т.е. она возвращает вас в командный |
| 651 | процессор (shell), но не завершает Emacs. В большинстве командных |
| 652 | процессоров вы можете вернуться в Emacs с помощью команды "fg" или "%emacs". |
| 653 | |
| 654 | Чтобы покинуть Emacs используйте C-x C-c. Это сочетание также используется, |
| 655 | чтобы выйти из Emacs, вызванного из почтовой программы или другой утилиты. |
| 656 | |
| 657 | Существует много команд с префиксом C-x. Вы уже изучили следующие команды: |
| 658 | |
| 659 | C-x C-f Открыть файл |
| 660 | C-x C-s Сохранить файл |
| 661 | C-x s Сохранить некоторые буфера |
| 662 | C-x C-b Получить список буферов |
| 663 | C-x b Переключиться в буфер |
| 664 | C-x C-c Завершить Emacs |
| 665 | C-x 1 Удалить все окна, кроме текущего |
| 666 | C-x u Отмена изменений |
| 667 | |
| 668 | Именованные расширенные команды -- это команды, которые используются гораздо |
| 669 | реже, или используются только в определенных режимах. В качестве примера |
| 670 | можно привести команду replace-string, которая заменяет одну строку на |
| 671 | другую во всем тексте. Когда вы наберете M-x, Emacs предложит вам ввести имя |
| 672 | команды; в нашем случае это команда "replace-string". Наберите лишь |
| 673 | "repl-s<TAB>", и Emacs дополнит имя. (<TAB> -- это клавиша табуляции, обычно |
| 674 | находящаяся над клавишами CapsLock или Shift в левой части клавиатуры.) |
| 675 | Подтвердите имя нажатием <Return>. |
| 676 | |
| 677 | Команда replace-string требует два аргумента -- строку, которая будет |
| 678 | заменена, и строку, на которую нужно заменить. Вы должны завершать каждый |
| 679 | аргумент вводом <Return>. |
| 680 | |
| 681 | >> Переместите курсор к пустой строке на две строчки ниже этой. |
| 682 | Наберите M-x repl-s<Return>файл<Return>файлы<Return>. |
| 683 | |
| 684 | Заметьте, как эта строчка изменится: вы замените слово файл |
| 685 | словом "файлы" везде, где оно встретится, ниже позиции курсора. |
| 686 | |
| 687 | |
| 688 | * АВТОМАТИЧЕСКОЕ СОХРАНЕНИЕ |
| 689 | --------------------------- |
| 690 | |
| 691 | Если вы измените файл, но не сохраните его, то в случае "падения" системы вы |
| 692 | можете потерять информацию. Чтобы защитить вас от этого, Emacs периодически |
| 693 | сохраняет каждый файл, который вы редактируете. Автоматически сохраняемый |
| 694 | файл имеет имя с символами "#" в начале и в конце. Например, если ваш файл |
| 695 | называется "hello.c", то автоматически сохраненный файл будет называться |
| 696 | "#hello.c#". Когда вы сохраните файл обычным способом, Emacs удаляет |
| 697 | автоматически сохраненный файл. |
| 698 | |
| 699 | Если система зависла, то вы можете восстановить ваши изменения, которые были |
| 700 | сохранены автоматически, путем открытия нужного файла (файла, который вы |
| 701 | редактировали, а не того, что бы сохранен автоматически) и затем набрав M-x |
| 702 | recover-file<Return>. Когда у вас запросят подтверждение, наберите |
| 703 | yes<Return>, чтобы восстановить автоматически сохраненные данные. |
| 704 | |
| 705 | |
| 706 | * ОБЛАСТЬ ЭХА (ECHO AREA) |
| 707 | ------------------------- |
| 708 | |
| 709 | Если Emacs видит, что вы медленно набираете команды из нескольких сочетаний |
| 710 | клавиш, то он покажет их вам в нижней части экрана, в области называемой |
| 711 | "область эха" (echo area). Область эха -- это самая нижняя строка окна |
| 712 | Emacs. |
| 713 | |
| 714 | |
| 715 | * СТРОКА СОСТОЯНИЯ (MODE LINE) |
| 716 | ----------------------------- |
| 717 | |
| 718 | Строка сразу над областью эха называется "строкой состояния" (mode |
| 719 | line). Выглядит эта строка примерно так: |
| 720 | |
| 721 | --:** TUTORIAL.ru 63% L749 (Fundamental)----------------------- |
| 722 | |
| 723 | Эта строка сообщает полезную информацию о состоянии Emacs и текста, который |
| 724 | вы редактируете. |
| 725 | |
| 726 | Вы уже знаете, что означает имя файла -- это файл, который вы открыли. NN% |
| 727 | показывает вашу текущую позицию в тексте. Это означает что NN процентов |
| 728 | текста находятся выше начала окна. Если отображается начало текста, вы |
| 729 | увидите "Top" вместо "0%". Если отображается конец текста, то будет |
| 730 | отображено "Bot". Если текст настолько мал, что вмещается в один экран, то |
| 731 | строка состояния сообщит "All". |
| 732 | |
| 733 | Буква L и цифры показывают позицию другим способом -- они показывают номер |
| 734 | строки в которой находится курсор. |
| 735 | |
| 736 | Звездочки в начале строки означают, что вы изменяли текст. Сразу после |
| 737 | открытия или сохранения файла эта часть строки будет содержать не звездочки, |
| 738 | а тире. |
| 739 | |
| 740 | Часть строки состояния внутри скобок сообщает вам о режиме редактирования, |
| 741 | который вы сейчас используете. Стандартный, или базовый, режим -- Fundamental, |
| 742 | он используется и в данном учебнике. Это пример "основного режима" ("major |
| 743 | mode"). |
| 744 | |
| 745 | Emacs имеет много различных основных режимов. Некоторые из режимов |
| 746 | используются для редактирования текста на различных языках и/или различных |
| 747 | видов текста, такие как Lisp-режим, Text-режим и пр. В каждый момент |
| 748 | времени действует только один основной режим, и его название вы можете найти |
| 749 | в скобках -- там, где сейчас находится слово "Fundamental" (базовый). |
| 750 | |
| 751 | Каждый основной режим заставляет некоторые команды вести себя по разному. |
| 752 | Например, имеются команды создания комментариев в программе, и поскольку в |
| 753 | каждом языке программирования комментарии записываются по своему, то и |
| 754 | каждый основной режим вставляет их по разному. Каждый основной режим имеет |
| 755 | именованную команду, которая включает его. Например, M-x fundamental-mode -- |
| 756 | это команда, которая включает базовый (Fundamental) режим. |
| 757 | |
| 758 | Если вы редактируете текст на естественном языке, например, как этот файл, |
| 759 | то вы, вероятно должны переключиться в режим Text. |
| 760 | |
| 761 | >> Наберите M-x text mode<Return>. |
| 762 | |
| 763 | Не волнуйтесь, ни одна из выученных вами команд Emacs не изменилась. Но вы |
| 764 | можете заметить, что M-f и M-b теперь рассматривают апострофы как часть |
| 765 | слова. Ранее, в базовом режиме (Fundamental mode), M-f и M-b воспринимали |
| 766 | апострофы как разделители слов. |
| 767 | |
| 768 | Как правило, основные режимы производят незначительные изменения: |
| 769 | большинство команд "работает одинаково" в каждом из режимов, но их действие |
| 770 | отличается какой-нибудь мелочью. |
| 771 | |
| 772 | Для просмотра документации о текущем основном режиме, нажмите C-h m. |
| 773 | |
| 774 | >> Используйте C-l C-l чтобы расположить эту строку вверху экрана. |
| 775 | >> Наберите C-h m, чтобы посмотреть отличия Text-режима от базового. |
| 776 | >> Наберите C-x 1, чтобы убрать документацию с глаз долой :) |
| 777 | |
| 778 | Основной режим называется основным потому, что также существуют |
| 779 | дополнительные (minor) режимы. Дополнительные режимы не являются |
| 780 | альтернативами основным, они только немного изменяют их поведение. Каждый |
| 781 | дополнительный режим включается/выключается независимо от других |
| 782 | дополнительных режимов и независимо от вашего основного режима. Вы можете |
| 783 | использовать основной режим без дополнительных, или с любой комбинацией |
| 784 | нескольких дополнительных режимов. |
| 785 | |
| 786 | Один из дополнительных режимов очень полезен, особенно для редактирования |
| 787 | текста -- это режим автозаполнения (Auto Fill mode). Когда этот режим |
| 788 | включен, то Emacs автоматически разрывает строку между словами в тех |
| 789 | случаях, когда вставленный текст делает строку слишком длинной. |
| 790 | |
| 791 | Вы можете включить режим автозаполнения, набрав M-x auto-fill-mode<Return>. |
| 792 | Когда этот режим включен, его можно выключить с помощью той же команды -- |
| 793 | M-x auto-fill-mode<Return>. Если режим включен, то такая команда его |
| 794 | выключит, если выключен, то включит. Мы говорим что команда "переключает |
| 795 | режим". |
| 796 | |
| 797 | >> Наберите M-x auto-fill-mode<Return>. Затем вводите строку из слов "фыва " |
| 798 | пока не увидите, как она разделится на две строки. Эти пробелы между |
| 799 | словами необходимы, потому что режим автозаполнения разбивает строки |
| 800 | только по пробелам. |
| 801 | |
| 802 | Граница разбиения обычно равна 70-ти символам, но вы можете изменить ее |
| 803 | используя команду C-x f. Вы должны задать границу в виде числового |
| 804 | аргумента для этой команды. |
| 805 | |
| 806 | >> Введите C-x f с аргументом 20 (C-u 2 0 C-x f). |
| 807 | Затем введите какой-нибудь текст и посмотрите как Emacs заполняет строки |
| 808 | по 20 символов в каждой. Верните значение границы равное 70 назад, |
| 809 | используя команду C-x f. |
| 810 | |
| 811 | Если вы сделали изменения в середине параграфа, то автозаполнение не |
| 812 | переформатирует текст автоматически. |
| 813 | Чтобы переформатировать параграф, наберите M-q (META-q), когда курсор |
| 814 | находится внутри параграфа. |
| 815 | |
| 816 | >> Переместите курсор в предыдущий параграф, и нажмите M-q. |
| 817 | |
| 818 | |
| 819 | * ПОИСК |
| 820 | ------- |
| 821 | |
| 822 | Emacs умеет искать строки (строка -- непрерывная группа символов) вперед или |
| 823 | назад по тексту. Поиск строки -- это команда перемещения курсора -- она |
| 824 | перемещает курсор в следующую точку, где найдена искомая строка. |
| 825 | |
| 826 | Команда поиска в Emacs является инкрементальной. Это означает, что поиск |
| 827 | происходит по мере того, как вы набираете искомую строку. |
| 828 | |
| 829 | Команда, начинающая поиск вперед -- C-s, а C-r ищет назад. ПОДОЖДИТЕ! Не |
| 830 | нужно пробовать прямо сейчас. |
| 831 | |
| 832 | Когда вы нажмете C-s, вы увидите строку "I-search", появившуюся в области |
| 833 | эха. Вам сообщается, что Emacs ждет ввода строки, которую вы хотите найти. |
| 834 | <Return> завершает поиск. |
| 835 | |
| 836 | >> Теперь нажмите C-s для начала поиска. Медленно, по одной букве, набирайте |
| 837 | слово "курсор", останавливаясь после каждой введенной буквы и замечая, что |
| 838 | происходит с курсором. |
| 839 | Сейчас вы нашли первое вхождение слова "курсор". |
| 840 | >> Нажмите C-s снова, чтобы найти следующее вхождение слова "курсор". |
| 841 | >> Теперь нажмите <DEL> четыре раза и проследите за перемещениями курсора. |
| 842 | >> Нажмите <Return> для завершения поиска. |
| 843 | |
| 844 | Вы заметили, что произошло? Emacs в режиме инкрементального поиска пытался |
| 845 | переходить к строкам, совпадающим с набираемой вами строкой. Чтобы перейти |
| 846 | к следующему вхождению слова "курсор", просто нажмите C-s снова. Если больше |
| 847 | нет вхождений, то Emacs издаст звуковой сигнал и сообщит, что ваш поиск не |
| 848 | удался ("failing"), C-g также завершает поиск. |
| 849 | |
| 850 | Если вы во время инкрементального поиска нажмете <DEL>, то поиск "вернется" |
| 851 | к предыдущему найденному месту. Если вы наберете <DEL> сразу после того как |
| 852 | вы нажали C-s для перемещения к следующей позиции, то <DEL> переместит к |
| 853 | предыдущему вхождению. Если предыдущей позиции не было, то <DEL> удалит |
| 854 | последний символ в строке поиска. Например, предположим, что вы набрали "к", |
| 855 | поиск перейдет к первому вхождению символа "к". Теперь, если вы наберете |
| 856 | "у", курсор перейдет к первому вхождению "ку". Нажатие <DEL> удалит символ |
| 857 | "у" из строки поиска, и курсор вернется к первому вхождению "к". |
| 858 | |
| 859 | Если вы во время поиска введете control- или meta- сочетание клавиш (за |
| 860 | некоторыми исключениями, например, такими, как C-s и C-r, которые имеют |
| 861 | специальное значение в поиске), то поиск прекратится. |
| 862 | |
| 863 | C-s начинает поиск и ищет любые вхождения искомой строки ПОСЛЕ текущей |
| 864 | позиции курсора. Если вы хотите найти что-то ранее в тексте, то нажмите |
| 865 | C-r. Все, что мы говорили о C-s, применимо и к C-r, только C-r ищет в |
| 866 | противоположном направлении. |
| 867 | |
| 868 | |
| 869 | * МНОЖЕСТВО ОКОН (MULTIPLE WINDOWS) |
| 870 | ----------------------------------- |
| 871 | |
| 872 | Одной из приятных возможностей Emacs является то, что вы можете одновременно |
| 873 | отображать на экране несколько окон. (Заметьте, что Emacs использует термин |
| 874 | "фрейм" (frame), описанный в следующем разделе, для того, что другие |
| 875 | приложения называют окна. В Руководстве Emacs имеется подробный глоссарий). |
| 876 | |
| 877 | >> Переместите курсор на эту строку и наберите C-l C-l. |
| 878 | |
| 879 | >> Теперь наберите C-x 2, что разделит экран на два окна. |
| 880 | Оба окна отображают учебник. Курсор остался в верхнем окне. |
| 881 | |
| 882 | >> Нажмите C-M-v для прокрутки нижнего окна. |
| 883 | (если у вас нет клавиши META (Alt), то нажмите <ESC> C-v.) |
| 884 | |
| 885 | >> Нажмите C-x o ("o" от слова "other" -- другое) для перемещения курсора в |
| 886 | нижнее окно. |
| 887 | >> Используйте C-v и M-v в нижнем окне, для прокрутки текста. |
| 888 | Продолжите чтение этой инструкции в верхнем окне. |
| 889 | |
| 890 | >> Снова нажмите C-x o, чтобы переместить курсор назад в верхнее окно. |
| 891 | Курсор в верхнем окне там же, где и был до того. |
| 892 | |
| 893 | Вы можете продолжать использовать C-x o для переключения между окнами. |
| 894 | "Выбранное окно", где производится редактирование -- это окно с видимым |
| 895 | курсором, который мигает когда вы не набираете текст. Остальные окна |
| 896 | сохраняют собственные позиции курсора. Если вы используете Emacs в |
| 897 | графической среде, то эти курсоры будут отображаться как немигающие полые |
| 898 | прямоугольники. |
| 899 | |
| 900 | Команда C-M-v очень удобна, когда вы редактируете текст в одном окне, а |
| 901 | второе используете в качестве справочника. С помощью C-M-v вы можете |
| 902 | прокручивать текст в другом окне не покидая текущего окна. |
| 903 | |
| 904 | C-M-v -- пример CONTROL-META сочетания клавиш. Если у вас есть клавиша META |
| 905 | (или Alt), то вы можете набрать C-M-v, нажав одновременно CONTROL и META и, |
| 906 | не отпуская их, нажать v. Не важно, какая из клавиш, CONTROL или META, будет |
| 907 | нажата первой, поскольку обе эти клавиши изменяют набираемый вами символ. |
| 908 | |
| 909 | Если у вас нет клавиши META, и вместо нее вы используете <ESC>, то порядок |
| 910 | нажатия важен: сначала вы должны нажать <ESC>, а затем CTRL-v, поскольку |
| 911 | CONTROL-<ESC> v не будет работать. Это происходит потому, что <ESC> сама |
| 912 | является символом, а не модифицирующей клавишей. |
| 913 | |
| 914 | >> Нажмите C-x 1 (в верхнем окне), чтобы избавиться от нижнего окна. |
| 915 | |
| 916 | (Если бы вы нажали C-x 1 в нижнем окне, то вы бы избавились от верхнего. |
| 917 | Понимайте эту команду как "Оставить только одно окно -- то, в котором я |
| 918 | сейчас нахожусь"). |
| 919 | |
| 920 | Вам не нужно отображать один и тот же буфер в обоих окнах. Если вы |
| 921 | используете C-x C-f, чтобы открыть файл в одном окне, другое останется без |
| 922 | изменения. Вы можете независимо открывать файлы в каждом окне. |
| 923 | |
| 924 | Есть и другой путь использовать два окна, отображающих разные файлы: |
| 925 | |
| 926 | >> Наберите C-x 4 C-f, и введите имя одного из ваших файлов. Завершите ввод |
| 927 | нажатием <Return>. Заметьте, что выбранный файл появился в нижнем окне. |
| 928 | Курсор перешел туда же. |
| 929 | |
| 930 | >> Наберите C-x o, чтобы вернуться в верхнее окно, и затем C-x 1, чтобы |
| 931 | удалить нижнее окно. |
| 932 | |
| 933 | |
| 934 | * МНОЖЕСТВО ФРЕЙМОВ (MULTIPLE FRAMES) |
| 935 | ------------------------------------- |
| 936 | |
| 937 | Emacs также может создавать множество "фреймов" (frames). Фрейм -- это то, |
| 938 | что мы называем коллекцией окон, вместе со строкой меню, полосами прокрутки, |
| 939 | областью эхо, и т.д. На графических дисплеях, то что в Emacs называется |
| 940 | "фрейм", большинство других приложений называют "окно". В графической среде |
| 941 | одновременно может быть отображено несколько фреймов. А на текстовых |
| 942 | терминалах, может быть показан только один фрейм в конкретный момент |
| 943 | времени. |
| 944 | |
| 945 | >> Наберите M-x make-frame <Return>. |
| 946 | Вы увидите что новый фрейм появился на экране. |
| 947 | |
| 948 | В новом фрейме вы можете делать все то же самое что и в оригинальном |
| 949 | фрейме. Между ними нет особых отличий. |
| 950 | |
| 951 | >> Наберите M-x delete-frame <Return>. |
| 952 | Эта команда удалит текущий фрейм. |
| 953 | |
| 954 | Вы также можете удалить фрейм используя стандартные методы вашей графической |
| 955 | среды (часто путем нажатия кнопки "X" в верхней части фрейма). Если вы |
| 956 | таким способом удалите последний имеющийся фрейм Emacs, то это приведет к |
| 957 | завершению работы Emacs. |
| 958 | |
| 959 | |
| 960 | * РЕКУРСИВНЫЕ УРОВНИ РЕДАКТИРОВАНИЯ (RECURSIVE EDITING LEVELS) |
| 961 | -------------------------------------------------------------- |
| 962 | |
| 963 | Иногда вы будете попадать в так называемые "рекурсивные уровни |
| 964 | редактирования". На это указывают прямоугольные скобки в строке состояния, |
| 965 | окружающие обычные скобки вокруг имени основного режима. Например, вы |
| 966 | увидите [(Fundamental)] вместо (Fundamental). |
| 967 | |
| 968 | Чтобы выйти из рекурсивных уровней редактирования, нажмите <ESC> <ESC> |
| 969 | <ESC>. Это многоцелевая команда "выхода". Вы также можете использовать ее |
| 970 | как для уничтожения лишних окон, так и для выхода из мини-буфера. |
| 971 | |
| 972 | >> Нажмите M-x, чтобы попасть в мини-буфер, а затем нажмите <ESC> <ESC> |
| 973 | <ESC>, чтобы покинуть его. |
| 974 | |
| 975 | Вы не можете использовать C-g для выхода из рекурсивных уровней |
| 976 | редактирования. Это потому, что C-g используется для отмены команд и |
| 977 | аргументов ВНУТРИ рекурсивных уровней редактирования. |
| 978 | |
| 979 | |
| 980 | * КАК ПОЛУЧИТЬ ДОПОЛНИТЕЛЬНУЮ ПОМОЩЬ |
| 981 | ------------------------------------ |
| 982 | |
| 983 | В этом учебнике мы попытались снабдить вас достаточной информацией для |
| 984 | начала использования Emacs. В Emacs очень много разной функциональности, и |
| 985 | представить все это здесь не представляется возможным. Однако, возможно вы |
| 986 | захотите узнать больше о возможностях Emacs. Emacs предоставляет команды |
| 987 | для чтения документации о командах Emacs. Все команды "справки" (help) |
| 988 | начинаются с сочетания CONTROL-h, который является "символом справки". |
| 989 | |
| 990 | Чтобы использовать справку, нажмите C-h, а затем -- символ, который |
| 991 | расскажет, какой именно вид справки вы хотите получить. Если вы |
| 992 | ДЕЙСТВИТЕЛЬНО растерялись, наберите C-h ?, и Emacs расскажет вам о том, |
| 993 | какую справку он может вам предоставить. Если вы нажали C-h и передумали |
| 994 | обращаться к справке, то просто нажмите C-g, чтобы отменить эту команду. |
| 995 | |
| 996 | (Если C-h не отображает справку внизу экрана, то попробуйте вместо этого |
| 997 | нажать клавишу F1 или набрать M-x help RET). |
| 998 | |
| 999 | Одна из самых главных функций справки -- C-h c. Нажмите C-h, а затем c и |
| 1000 | символ команды или последовательность, и Emacs отобразит краткое описание |
| 1001 | набранной команды. |
| 1002 | |
| 1003 | >> Нажмите C-h c C-p. |
| 1004 | |
| 1005 | Сообщение должно выглядеть примерно так: |
| 1006 | |
| 1007 | C-p runs the command previous-line |
| 1008 | (C-p выполняет команду previous-line {предыдущая строка}) |
| 1009 | |
| 1010 | Вам сообщают "имя функции". Поскольку имена функций выбраны так, чтобы |
| 1011 | показать, что именно команда делает, то они могут служить короткой |
| 1012 | документацией -- достаточно чтобы напомнить вам об уже выученных командах. |
| 1013 | |
| 1014 | Многосимвольные сочетания клавиш, такие как C-x C-s и (если у вас нет клавиши |
| 1015 | META или EDIT или ALT) <ESC> v также будут доступны для получения справки с |
| 1016 | помощью C-h c. |
| 1017 | |
| 1018 | Вы можете получить больше информации о сочетании клавиш используя C-h k вместо C-h c. |
| 1019 | |
| 1020 | >> Наберите C-h k C-p. |
| 1021 | |
| 1022 | В отдельном окне Emacs вы увидите описание функции, а также ее имя. Когда вы |
| 1023 | завершите чтение, нажмите C-x 1, чтобы избавиться от окна с текстом справки. |
| 1024 | Не обязательно нажимать C-x 1 сразу: вы можете сначала выполнить какие-либо |
| 1025 | изменения текста во время просмотра текста справки, и только затем нажать |
| 1026 | C-x 1. |
| 1027 | |
| 1028 | Есть еще несколько полезных функций, доступных через C-h: |
| 1029 | |
| 1030 | C-h f Описывает функцию. Вам необходимо набрать имя функции. |
| 1031 | |
| 1032 | >> Попробуйте набрать C-h f previous-line<Return>. |
| 1033 | Это отобразит информацию Emacs о функции, которая выполняется командой |
| 1034 | C-p. |
| 1035 | |
| 1036 | Аналогичная команда C-h v отображает документацию о переменных, включая те, |
| 1037 | значение которых вы можете изменить для настройки поведения Emacs. Вам нужно |
| 1038 | набрать имя переменной, когда Emacs запросит его. |
| 1039 | |
| 1040 | C-h a (Command Apropos). Введите ключевое слово и Emacs покажет вам |
| 1041 | список всех команд и функций, имена которых содержат это слово. |
| 1042 | Эти команды могут быть запущены с помощью Meta-x. |
| 1043 | Для некоторых команд, эта команда также покажет последовательности |
| 1044 | клавиш которые могут использоваться для их запуска. |
| 1045 | |
| 1046 | >> Наберите C-h a file<Return>. |
| 1047 | |
| 1048 | Это отобразит в другом окне список всех команд M-x, у которых в именах |
| 1049 | содержится слово "file". Также в списке кроме таких команд, как find-file, |
| 1050 | вы увидите соответствующие символьные команды, такие как C-x C-f. |
| 1051 | |
| 1052 | >> Наберите C-M-v для прокрутки окна справки. Выполните это несколько раз. |
| 1053 | |
| 1054 | >> Наберите C-x 1 для удаления окна справки. |
| 1055 | |
| 1056 | C-h i Читать интерактивные руководства (команда Info). Эта команда |
| 1057 | переходит в специальный буфер с именем "*info*", где вы можете |
| 1058 | читать интерактивные руководства для пакетов, установленных в вашей |
| 1059 | системе. Наберите m emacs <Return> для чтения руководства по |
| 1060 | Emacs. Если вы никогда ранее не использовали Info, то наберите ? и |
| 1061 | Emacs откроет учебник по возможностям режима Info. Однажды |
| 1062 | ознакомившись с этим учебником, вы должны использовать руководство |
| 1063 | Emacs Info в качестве основной документации. |
| 1064 | |
| 1065 | |
| 1066 | * ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ |
| 1067 | ---------------------------- |
| 1068 | |
| 1069 | Вы можете узнать больше об Emacs, читая руководство по нему, книги или |
| 1070 | интерактивный справочник (используйте меню Help или наберите F10 h r). Вам |
| 1071 | особенно понравятся две функции -- дополнение имен (completion), которое |
| 1072 | сокращает количество нажимаемых клавиш, и dired, который упрощает работу с |
| 1073 | файлами. |
| 1074 | |
| 1075 | Дополнение имен используется для того, чтобы избежать набора лишних |
| 1076 | символов. Например, если вы хотите переключиться в буфер *Messages*, то вы |
| 1077 | можете набрать C-x b *M<Tab> и Emacs дополнит остаток имени буфера, |
| 1078 | поскольку он может определить его из того, что вы уже набрали. Дополнение |
| 1079 | имен описано в Info-версии руководства по Emacs в разделе "Completion". |
| 1080 | |
| 1081 | Dired позволяет вам отображать список файлов в каталоге (а также |
| 1082 | подкаталогах, в зависимости от настройки), перемещаться по списку файлов, |
| 1083 | открывать их, переименовывать, удалять и выполнять прочие действия над |
| 1084 | файлами. Dired описан в Info-версии руководства по Emacs в разделе "Dired". |
| 1085 | |
| 1086 | В руководстве также описаны остальные возможности Emacs. |
| 1087 | |
| 1088 | |
| 1089 | * ЗАКЛЮЧЕНИЕ |
| 1090 | ------------ |
| 1091 | |
| 1092 | Для выхода из Emacs, используется сочетание клавиш C-x C-c. |
| 1093 | |
| 1094 | Этот учебник должен быть понятен всем новым пользователям, но если вы |
| 1095 | найдете что-нибудь неясное, не нужно сидеть и порицать себя -- жалуйтесь! |
| 1096 | |
| 1097 | |
| 1098 | * УСЛОВИЯ РАСПРОСТРАНЕНИЯ |
| 1099 | ------------------------- |
| 1100 | |
| 1101 | Этот учебник произошел из длинной серии учебников Emacs, начатой с однажды |
| 1102 | написанного Stuart Cracraft учебника для оригинального Emacs. |
| 1103 | |
| 1104 | Эта версия учебника, как и GNU Emacs, защищена правами копирования |
| 1105 | (copyrighted) и приходит с ограничениями распространения копий со |
| 1106 | следующими соглашениями: |
| 1107 | |
| 1108 | Copyright (C) 1985, 1996, 1998, 2001-2014 Free Software Foundation, Inc. |
| 1109 | |
| 1110 | Permission is granted to anyone to make or distribute verbatim copies |
| 1111 | of this document as received, in any medium, provided that the |
| 1112 | copyright notice and permission notice are preserved, |
| 1113 | and that the distributor grants the recipient permission |
| 1114 | for further redistribution as permitted by this notice. |
| 1115 | |
| 1116 | Permission is granted to distribute modified versions |
| 1117 | of this document, or of portions of it, |
| 1118 | under the above conditions, provided also that they |
| 1119 | carry prominent notices stating who last altered them. |
| 1120 | |
| 1121 | Условия распространения самого Emacs более сложные, но примерно в том же духе. |
| 1122 | Пожалуйста, прочтите файл COPYING и затем раздайте копию GNU Emacs вашим |
| 1123 | друзьям. Помогите уничтожить обструкционизм в области программного |
| 1124 | обеспечения ("владение"), используя, создавая и распространяя свободное |
| 1125 | программное обеспечение! |
| 1126 | |
| 1127 | // жду замечаний и исправления ошибок по адресу alexott@gmail.com. |
| 1128 | // Alex Ott. |
| 1129 | |
| 1130 | ;;; Local Variables: |
| 1131 | ;;; coding: utf-8 |
| 1132 | ;;; sentence-end-double-space: nil |
| 1133 | ;;; fill-column: 76 |
| 1134 | ;;; End: |