Bram Moolenaar
Ноябрь 2000
Если вы тратите много времени на набирание простого текста, написание программ или HTML, вы можете сэкономить большую часть этого времени с помощью хорошего редактора и его эффективного использования. Эта статья представит рекомендации и подсказки для того, чтобы вы могли сделать свою работу быстрее и с меньшим количеством ошибок.
Открытый исходный текстовый редактор Vim (Vi IMproved) будет использоваться здесь для того, чтобы предоставить идеи для эффективного редактирования, но они относятся к другим редакторам так же хорошо. Выбор правильного редактора – это первый шаг на пути к эффективному редактированию. Дискуссия о том, который редактор подойдет вам лучше всего, будет занимать слишком много места и, потому, не введена. Если вы не знаете, какой редактор использовать или недовольны состоянием нынешнего, попробуйте Vim; Вы не разочаруетесь.
[Vim комманды и опции написаны этим шрифтом]
Часть 1: отредактируйте файл
1. Делайте все быстро
Большая часть времени тратится на чтение, проверку на наличие ошибок и поиск правильного места, для работы, а не редактирование текста. Навигация по тексту осуществляется очень часто, и таким образом, вы должны узнать, как это сделать быстро.
Довольно часто вы ищите какой-нибудь текст, который, вы знаете, там есть. Или посмотрите на все линии, где используется определенное слово или фраза. Вы могли бы просто использовать поисковую команду/шаблон, чтобы найти текст, но есть более умные способы:
В структурированном тексте есть даже больше возможностей для быстроты. Vim имеет специфические команды для программ на языке С (и подобных языках, таких как C ++ и Java):
Есть еще много чего, конечно.Дело в том, что вам нужно узнать эти команды. Вы можете возразить, что вы не можете выучить все эти команды – есть сотни различных команд перемещения, некоторые простые, некоторые очень замысловатые – и это заняло бы недели обучения, чтобы выучить их всех. Но вам это и не нужно; вам необходимо лишь понять, каков ваш конкретный способ редактирования ивыучить только те команды, которые делают ваше редактирование более эффективным.
Есть три основных шага:
Давайте используем эти советы на примере:
Некоторые вещи, на которые стоит обратить внимание, когда вы используете эти три шага:
В следующих разделах будет предложены действия, с которыми большинство людей иметь дело. Вы можете использовать их в качестве вдохновения при использовании три основных шага в вашей работе.
2. Не печатайте дважды одно и то же
Существует ограниченный набор слов, которые мы можем напечатать. И даже ограниченное число фраз и предложений. Особенно в компьютерных программах. Очевидно, вы не хотите вводить то же самое два раза подряд.
Очень часто вы захотите изменить одно слово на другое. Если это будет сделано во всем файле, вы можете использовать команду: S (заменить). Если только несколько мест требуют изменений, быстрый способ заключается в использовании команды * для поиска следующего нахождения слова и использование "cw", чтобы изменить слово. Затем введите "n", чтобы найти следующее слово и "." (точка), чтобы повторить cwcommand.
Команда "." повторяет последнее изменение. Изменение, в этом контексте, является вставкой, удалением или заменой текста. Команда в состоянии повторить этот очень мощный механизм. Если вы организуете свое редактирование вокруг нее, многие изменения возможны просто ударом по клавише "." . Следите за совершением иных изменений в промежутке, потому что это заменит изменения, которые вы повторяли. Вместо этого, вы можете пометить место с командой "m", продолжайте ваше повторное изменение и вернитесь туда позже.
Некоторые функции и имена переменных может быть неудобно набирать. Можете ли вы быстро напечатать "XpmCreatePixmapFromData" без опечатки и не глядя? Vim имеет механизм завершения, который делает это намного проще. Он ищет слова в файле, который вы редактируете, а также в # include'd файлах. Вы можете ввести "XpmCr", а затем нажмите Ctrl-N и Vim расширит его до "XpmCreatePixmapFromData" для вас. Это не только сэкономит довольно много набора текста, но также поможет избежать опечаток и необходимость исправить это позже, когда компилятор выдаст сообщение об ошибке.
Когда вы набираете фразу или предложение несколько раз, существует даже более быстрый подход. Вим имеет механизм для записи макроса. Вы набираете ОК, чтобы начать запись в регистр 'a'. Затем вы вводите ваши команды как обычно и, наконец, нажимаете q, чтобы остановить запись. Если вы хотите, повторить записанные команды, наберите @a. Есть 26 регистров, доступных для этого.
При записи вы можете повторять много различных действий, не только вставки текста. Держите это в уме, когда вы знаете, вы собираетесь повторить что-то.
Одна вещь, которую нельзя упустить при записи является тем, что команды будут воспроизводиться именно так, как вы их набрали. При перемещении вы должны помнить, что текст, который вы прошли, может быть иным, когда команда повторится. Перемещение влево на четыре символа может работать с тексте, где вы записываете, но может потребоваться пять символов там, где вы повторяете команды. Часто необходимо использовать команды для перемещения на текстовые объекты (слова, предложения) или перейти к определенным символам.
Когда команды, которые вы должны повторять, становятся все более сложными, набирать их за раз становится сложнее. Вместо того, чтобы записывать их, вы должны написать скрипт или макрос. Это очень полезно, чтобы сделать шаблоны для частей вашего кода; Например, заголовок функции. Вы можете сделать все настолько удобным, насколько вам нравится.
3. Исправьте, если что-то не так
Это нормально делать ошибки во время набора текста. Никто не может избежать их. Хитрость заключается в том, чтобы быстро их найти и исправить. Редактор должен быть в состоянии помочь вам в этом. Но вы должны сказать ему, что неверно и что правильно.
Очень часто вы будете делать ту же ошибку снова и снова. Ваши пальцы просто не делают то, что вы хотите. Это может быть исправлено с помощью сокращений. Несколько примеров:
:abbr Lunix Linux
:abbr accross across
:abbr hte the
Слова будут автоматически исправлены после того, как вы их напечатаете.
Тот же самый механизм может быть использован для ввода длинного слова с помощью нескольких символов. Особенно полезно для слов, которые трудно печатать, и это позволяет избежать их неверный ввод. Примеры:
:abbr pn penguin
:abbr MS Mandrake Software
Тем не менее, они, как правило, расширяют до полного слова, когда вы не хотите этого, что делает неудобным, особенно когда вы действительно хотите включить "MS" в вашем тексте. Лучше всего использовать короткие слова, которые не имеют самостоятельного смысла.
Чтобы найти ошибки в тексте, Vim имеет умный механизм подсветки. Это было на самом деле предназначено для использования в подсветке синтаксиса программ, но это может также поймать и выделить ошибки.
Подсветка синтаксиса показывает комментарии в цвете. Это не кажется важной особенностью, но как только вы начнете использовать ее, вы увидите, что это очень помогает. Вы можете быстро определить текст, который должен быть комментарием, но не выделены в качестве такового (вы, наверное, забыли маркер комментария). Или увидеть строку кода выделенным в качестве комментария (вы забыли вставить "*/"). Эти ошибки, которые трудно обнаружить в чернобелом файле могут потратить много времени, пытаясь отладить код.
Подсветка синтаксиса также может поймать несбалансированные скобки. Несбалансированный ")" выделен ярко-красным фоном. Вы можете использовать команду %, чтобы увидеть, как они совпадают, и вставить "(" или ")" на правильном месте.
Другие распространенные ошибки также быстро определены, например, с использованием "#included <stdio.h>" вместо "#include <stdio.h>". Вы легко пропустить ошибку в чернобелом варианте, но быстро обнаружите, что "включать" выделено, когда "включен" – нет.
Более сложный пример: для английского текста есть длинный список из всех слов, которые могут использоваться. Любое слово не в этом списке может расцениваться ошибкой. С файлом синтаксиса можно выделить все слова, которые не в списке. С помощью нескольких дополнительных макросов, вы можете добавлять слова в список, так что они больше не будут помечены как ошибка. Это работает так же, как и в текстовом процессоре. В Vim это осуществляется с помощью скриптов, и вы можете настроить его дальнейшего для собственного использования: например, только проверьте комментарии в программе орфографических ошибок.
Часть 2: редактируйте большее количество файлов
4. Файл редко приходит один
Как правило, люди не работают только лишь с одним файлом. В основном существую
ет много связанных файлов, и вы редактируете несколько файлов друг за другом, или даже несколько одновременно. Вы должны быть в состоянии воспользоваться редактором, чтобы выполнять работу с несколькими файлами более эффективно.
Упомянутый ранее механизм тегов работает для переходов между файлами. Обычный подход заключается в создании файла с тегом для всего проекта, над которым вы работаете. Вы можете быстро переключаться между всеми файлами в проекте, чтобы найти определения функций, структуры, типов, и т.д. Время, которое вы сохраняете, по сравнению с поиском вручную, значительно; создание файла с тегом является первым, что я делаю при просмотре программы.
Еще один мощный механизм, чтобы найти все случаи наличия имени в группе файлов – сделать это с помощью команды :grep. Vim составляет список всех соответствий, и переходит к первой. Команда :сn приводит вас к каждому следующему соответствию. Это очень полезно, если вам нужно изменить количество параметров в вызове функции.
Файлы содержат полезную информацию. Но найти тот, который содержит декларацию, которую вам нужно увидеть может занять много времени. Vim знает о включаемых файлах, и может искать их по слову, которое вы ищете. Наиболее распространенным способом является поиск прототипа
функции. Установите курсор на имя функции в файле и введите [I: Вим покажет список всех матчей к имени функции в включенным файлам. Если вы хотите увидеть больше контекста, вы можете перейти непосредственно к декларации. Подобная команда может быть использована для проверки того, включены ли в правые заголовочные файлы.
В Vim можно разделить область текста на несколько частей, чтобы редактировать различные файлы. Тогда вы можете сравнить содержимое двух или более файлов и копировать/ вставить текст между ними. Есть много команд для открытия и закрытия окна, переключения между ними, временного скрытия файлов и т.д. Опять вам придется использовать три основных шага, чтобы выбрать набор команд, которые вы хотите научиться использовать.
Можно по-разному использовать несколько окон. Механизм предварительного просмотра тегов будет очень хорошим примером. Он открывает специальное окно предварительного просмотра, сохраняя курсор в файле, с которым вы работаете. Текст в окне предварительного просмотра показывает, например, декларацию функции для имени функции, которая находится под курсором. Если вы переместите курсор к другому имени и оставите его там на секунду, окно предварительного просмотра покажет определение этого имени. Это также может быть имя структуры или функции, которая декларирована во включаемый файл вашего проекта.
5. Давайте работать вместе
Редактор создан для редактирования текста. Программа электронной почты создана для отправки и получения сообщений. Операционная система – для запущенных программ. Каждая программа имеет свою собственную задачу и должно быть хороша для этого. Настоящая сила приходит тогда, когда программы работают вместе.
Простой пример: Вы должны написать резюме не более 500 слов. Выберите текущий абзац и напишите его в программу "wc": vip:w !wc -w. Внешняя команда "wc -w" используется для подсчета слов. Легко, не так ли?
Всегда найдется некоторая функциональность, которая вам нужна, и которой нет в редакторе. Возможность фильтрации текста с другой программой означает, что вы можете добавить эту функциональность внешне.
Это всегда было в духе Unix иметь отдельные программы, которые хорошо выполгяют свою работу, и работать вместе, чтобы выполнить задачу большего уровня. К сожалению, большинство редакторов работают не слишком хорошо вместе с другими программами – вы не можете заменить редактор электронной почты в Netscape на другой. Либо бы останетесь с искалеченным редактором. Другая тенденция будет включением всех видов функциональности внутри редактора; Emacs является хорошим примером того, чем это может закончиться. (Некоторые называют ее операционной системой, которая также может быть использована для редактирования текста.)
Vim попробовал интегрироваться с другими программами, но это все еще находится в стадии развития. В настоящее время можно использовать Vim в качестве редактора в MS-Developer Studio и Sniff. Некоторые программы электронной почты, которые поддерживают внешний редактор, как Mutt, могут использовать Vim. Интеграция с Sun Workshop работает в настоящее время. Обычно это область, которая должна быть улучшена в ближайшем будущем. Только тогда мы получим систему, которая будет чем-то лучшим, чем сумма ее частей.
6. Текст структурирован
Вы будете часто работать с текстом, который имеет какую-то структуру, но отличается от того, что поддерживается доступными командами. Тогда вам придется возвращаться обратно к "строительным блокам" в редакторе и создавать свои собственные макросы и модули для работы с этим текстом. Здесь мы подходим к более сложным вещам.
Один из самых простых способов – ускорить цикл редактирования-компиляция-исправление. Vim может: сделать команду, которая начнет вашу компилляцию, ловит ошибки, которые создает и позволяет перейти к местам ошибок, чтобы исправить проблемы. Если вы используете другой компилятор, сообщения об ошибках не будут опознаны. Вместо того, чтобы вернуться к старой системе "запишите это себе", вы можете настроить опцию 'errorformat'. Она сообщает Vim, как выглядят ваши ошибки и как получить из них имя файла и номер строки. Это работает для сложных GCC сообщений об ошибках, и, следовательно, у вас должно получиться поставить его практически на любой компилятор.
Иногда адаптирование к типу файла это просто вопрос установки нескольких опций или написания нескольких макросов. Например, чтобы перемещаться по справочным страницам, вы можете написать макрос, который захватывает слово под курсором, очищает буфер и затем считывает страницу руководства для этого слова в буфер. Это простой и эффективный способ для поиска перекрестных ссылок.
Используя три основных шага, вы можете работать более эффективно с любым видом структурированного файла. Просто продумайте действия, которые необходимо выполнить с файлом, найдите команды редактора, которые делают их, и начинайте использовать их. Это действительно так просто, как кажется. Вам просто нужно это сделать.
Часть 3: «Заострение пилы»
7. Сделайте это привычкой
Обучение вождению автомобиля требует усилий. Но разве это причина, чтобы продолжать ездить на велосипеде? Нет, вы понимаете, что вы должны вложить время, чтобы научиться мастерству. Редактирование текста ничем в этом отличается. Вы должны изучать новые команды и превращать их в привычку.
С другой стороны, вы не должны пытаться узнать каждая команду, которую предлагает редактор. Это было бы пустой тратой времени. Большинству людей нужно знать от 10 до 20 процентов команд для их работы. Но для каждого небходим разный набор команд. Необходимо, чтобы вы останавливались иногда и интересовались, есть ли некоторые повторяющиеся задачи, которые могут быть автоматизированы. Если вы выполняете задачу только один раз и не собираетесь сделать это снова, не пытайтесь оптимизировать ее. Но вы наверняка знаете, что вы использовали несколько раз за последний час. Тогда поищите в документациикоманды, которые могут сделать это быстрее. Или напишите в макрос, чтобы сделать это. Если это большая задача, как выстраивание текста конкретного рода, вы можете посмотреть группы новостей или в Интернете, вдруг кто-то уже решил ее для вас.
Важный основной шаг является последним. Вы можете думать о повторяющейся задаче, найти хороший решение для нее ,а после выходных вы забыли, как вы это сделали. Это не работает. Вам придется повторять, , пока ваши пальцы не будут делать это автоматически. Только тогда вы достигнете нужной вам эффективности. Не пытайтесь узнать слишком много сразу. Но делать несколько задач одновременно в то же время будет хорошей практикой. Трюки, которые вы не используете часто, чтобы запоминать их, можете записать их, чтобы иметь возможность смотреть на них позже. Во всяком случае, если вы держите имеете цель, вы найдете способы, чтобы сделать ваше редактирование более и более эффективным.
Одно последнее замечание, чтобы напомнить вам о том, что происходит, когда люди игнорируют все вышесказанное: я все еще вижу людей, которые тратят половину их дня за VDU, глядя на экран, затем вниз на два пальца, потом опять на экран, и т.д. – и потом удивляются, почему они так устали … Печатайте десятью пальцами! Это не только быстрее, но и гораздо менее утомительно. Используя компьютерную программу в течение одного часа каждый день, это займет у вас всего пару недель, чтобы научиться печатать вслепую.
В заключение
Идея названия происходит от успешной книги «7 навыков высокоэффективных людей» Стивена Кови. Я рекомендую его всем, кто хочет решить личные и профессиональные проблемы (а кто не хочет?). Хотя некоторые из вас будут утверждать, что это исходит из книги Дилберта "Семь лет высоко неполноценных людей" Скотта Адамса (также рекомендуется!). См. http://iccf-holland.org/click1.html и перейдите к "рекомендуемые книги и компакт-диски".
Об авторе
Брэм Мооленаар является главным автором Vim. Он пишет базовую функциональность Vim и выбирает то, какой код, представленный многими другими, должен быть включен. Окончил в технический университет Делфта в сфере компьютерной техники. Теперь он в основном работает над программным обеспечением, но по-прежнему знает, как обращаться с паяльником. Он является основателем и казначеем ICCF Голландии, которая помогает детям-сиротам в Уганде. Он работает внештатно как системный архитектор, но на самом деле тратит больше всего времени на Vim. Его адрес электронной почты: Bram AT Moolenaar.net.
Оригинал статьи: (http://www.moolenaar.net/habits.html)