24.01.2020

Сім звичок ефективного редагування тексту

Original: https://www.moolenaar.net/habits.html

Брам Муленаар (Bram Moolenaar)

Листопад 2000 р.

Якщо ви витрачаєте багато часу на введення простого тексту, написання програм або HTML, ви можете зекономити значну частину цього часу, використовуючи хороший редактор і ефективно використовуючи його. У цьому документі будуть представлені вказівки та підказки щодо швидшої роботи та з меншою кількістю помилок.

Тут буде використаний текстовий редактор з відкритим кодом Vim (Vi IMproved) для представлення ідей щодо ефективного редагування, але вони також стосуються інших редакторів. Вибір правильного редактора – це фактично перший крок до ефективного редагування. Дискусія про те, який редактор найкращий для вас, займе занадто багато місця, і цього не вдасться. Якщо ви не знаєте, яким редактором користуватися, або не задоволені тим, що ви зараз використовуєте, спробуйте Vim; ви не розчаруєтесь.

[Команди та параметри Vim друкуються цим шрифтом]

Частина 1: редагування файлу

1. Рухайтеся швидко

Більшість часу витрачається на читання, перевірку помилок та пошук потрібного місця для роботи, а не на вставлення нового тексту чи його зміну. Навігація по тексту відбувається дуже часто, тому ви повинні навчитися робити це швидко.

Досить часто вам захочеться шукати текст, який ви знаєте, що там є. Або подивіться всі рядки, де використовується певне слово чи фраза. Ви можете просто використовувати команду/шаблон пошуку для пошуку тексту, але є розумніші способи:

  • Якщо ви бачите певне слово і хочете шукати інші випадки того самого слова, скористайтеся командою *. Це схопить слово з-під курсору та шукатиме наступне.
  • Якщо ви встановите параметр ‘incsearch‘, Vim покаже першу відповідність шаблону, поки ви все ще вводите його. Це швидко показує помилку на друку в шаблоні.
  • Якщо встановити параметр ‘hlsearch‘, Vim виділить усі збіги для візерунка з жовтим фоном. Це дає швидкий огляд того, куди вас переведе команда пошуку. У програмному коді він може показувати, де використовується змінна. Вам навіть не потрібно рухати курсором, щоб переглянути сірники.

У структурованому тексті є ще більше можливостей швидко рухатися. Vim має спеціальні команди для програм у C (і подібних мовах, таких як C++ та Java):

  • Використовуйте %, щоб перейти з відкритої дужки на відповідну фіксацію. Або від “#if” до відповідного “#endif”. Фактично, % може переходити до багатьох різних елементів, які відповідають. Дуже корисно перевірити, чи правильно збалансовані еонструкції () та {}.
  • Використовуйте [{, щоб повернутися до “{” на початку поточного блока коду.
  • Використовуйте gd, щоб перейти від використання змінної до її локальної декларації.

Звичайно, є ще багато. Справа в тому, що вам потрібно ознайомитися з цими командами. Ви можете заперечити, що ви не можете навчитися всім цим командам – є сотні різних команд руху, кілька простих, дуже розумних – і для того, щоб навчитися їх усім, знадобиться тижнів навчання. Ну, не потрібно; замість цього зрозумійте, який саме ваш спосіб редагування, і вивчіть лише ті команди, які роблять ваше редагування більш ефективним.

Є три основні етапи:

  1. Під час редагування слідкуйте за діями, які ви повторюєте, та/або витрачайте на них зовсім небагато часу.
  2. Дізнайтеся, чи є команда редактора, яка зробить цю дію швидше. Прочитайте документацію, запитайте у друга чи подивіться, як це роблять інші.
  3. Тренуйтеся за допомогою команди. Робіть це, поки ваші пальці не вводять його, не замислюючись.

Давайте скористаємося прикладом, щоб показати, як це працює:

  1. Ви виявляєте, що редагуючи програмні файли C, ви часто витрачаєте час на пошук місця, де визначена функція. В даний час ви використовуєте команду * для пошуку інших місць, де відображається назва функції, але в кінцевому підсумку переглядаєте безліч збігів, де функція використовується замість визначених. У вас виникає думка, що повинен бути спосіб зробити це швидше.
  2. Переглянувши короткий довідник, ви знайдете зауваження щодо переходу до тегів. Документація показує, як це можна використовувати для переходу до визначення функції, саме того, що ви шукали!
  3. Ви експериментуєте трохи з генеруванням файлу тегів, використовуючи програму ctags, яка постачається разом з Vim. Ви навчитесь користуватися командою CTRL-] і виявите, що заощаджуєте багато часу, використовуючи її. Щоб зробити це простіше, ви додасте кілька рядків у свій Makefile, щоб автоматично генерувати файл тегів.

Кілька речей, на які слід звернути увагу, коли ви використовуєте ці три дії:

  • “Я хочу завершити роботу, я не встигаю переглянути документацію, щоб знайти якусь нову команду”. Якщо ти подумаєш так, ти застрягнеш у кам’яному віці обчислень. Деякі люди використовують Блокнот для всього, а потім дивуються, чому інші люди виконують свою роботу за половину часу…
  • Не перестарайтеся. Якщо ви завжди намагаєтесь знайти ідеальну команду для кожної дрібниці, яку ви робите, у вашого розуму не залишиться часу на роздуми про роботу, яку ви насправді виконували. Просто виберіть ті дії, які займають більше часу, ніж потрібно, і тренуйте команди, поки вам не потрібно буде думати про це під час їх використання. Тоді ви можете сконцентруватися на тексті.

У наступних розділах будуть запропоновані дії щодо дій більшості людей. Ви можете використовувати їх як натхнення для використання трьох основних етапів для власної роботи.

2. Не вводьте його двічі

Існує обмежений набір слів, які ми набираємо. І навіть обмежена кількість фраз та речень. Особливо в комп’ютерних програмах. Очевидно, ви не хочете вводити одну і ту ж річ двічі.

Дуже часто вам захочеться змінити одне слово на інше. Якщо це потрібно зробити у всьому файлі, ви можете скористатися командою :s (замінити). Якщо потрібно змінити лише декілька локацій, швидким методом є використання команди * для пошуку наступного появи слова та використання cw для зміни слова. Потім введіть n, щоб знайти наступне слово і . (крапка) для повторення команди cw.

Команда . повторює останню зміну. У цьому контексті зміною є вставка, видалення або заміна тексту. Вміти повторити це дуже потужний механізм. Якщо ви організуєте своє редагування навколо нього, багато змін стануть справою враження саме цього ключа .. Слідкуйте за тим, щоб вносити інші зміни між ними, оскільки вони замінять зміни, які ви повторювали. Замість цього ви, можливо, захочете позначити місцезнаходження командою m, продовжуйте повторну зміну та повертайтеся туди пізніше.

Деякі назви функцій та змінних можуть бути незручними для набору. Чи можете ви швидко ввести “XpmCreatePixmapFromData” без друку і не шукаючи його? Vim має механізм завершення, який робить це набагато простіше. Він шукає слова у файлі, який ви редагуєте, а також у файлах #include’d. Ви можете ввести “XpmCr”, потім CTRL-N, і Vim розширить його до “XpmCreatePixmapFromData” для вас. Це не лише заощаджує певну кількість тексту, але й уникає помилки друку і не потребує виправлення пізніше, коли компілятор подає повідомлення про помилку.

Коли ви набираєте фразу чи речення кілька разів, існує ще швидший підхід. Vim має механізм запису макросу. Ви вводите qa, щоб почати запис в регістрі ‘a’. Потім ви вводите команди, як зазвичай, і, нарешті, натискайте кнопку q знову, щоб припинити запис. Коли ви хочете повторити записані команди, ви вводите @a. Для цього є 26 регістрів.

За допомогою запису ви можете повторити безліч різних дій, а не просто вставляючи текст. Майте це на увазі, коли знаєте, що збираєтесь щось повторити.

Одне, на що слід звернути увагу при записі, – це те, що команди будуть відтворюватися саме так, як ви їх вводили. Під час пересування потрібно пам’ятати, що текст, який ви переміщаєте, може бути різним при повторенні команди. Переміщення чотирьох символів вліво може працювати для тексту, де ви записуєте, але це може знадобитися п’ять символів, де ви повторите команди. Часто доводиться використовувати команди для переміщення по текстових об’єктах (словах, реченнях) або переходу до певного символу.

Коли команди, які потрібно повторити, ускладнюються, вводити їх відразу відразу стає складніше. Замість того, щоб записувати їх, слід написати сценарій або макрос. Це дуже корисно для створення шаблонів для частин вашого коду; наприклад, заголовок функції. Ви можете зробити це так розумно, як вам подобається.

3. Виправте це, коли це неправильно

Нормально робити помилки під час набору тексту. Ніхто не може цього уникнути. Хитрість полягає в тому, щоб швидко їх помітити і виправити. Редактор повинен мати можливість вам у цьому допомогти. Але вам потрібно сказати, що не так і що правильно.

Дуже часто ви будете робити одну і ту ж помилку знову і знову. Ваші пальці просто не роблять того, що ви задумали. Це можна виправити за допомогою скорочень. Кілька прикладів:

:abbr Lunix Linux
:abbr accross across
:abbr hte the

Слова будуть автоматично виправлені відразу після їх введення.

Цей же механізм можна використовувати для введення довгого слова з кількома символами. Особливо корисні для слів, які вам важко набрати, і це дозволяє уникнути їх неправильного введення. Приклади:

:abbr pn penguin
:abbr MS Mandrake Software

Однак вони, як правило, розширюються до повного слова, коли ви цього не хочете, а це ускладнює, коли ви дійсно хочете вставити “MS” у свій текст. Найкраще використовувати короткі слова, які не мають власного значення.

Щоб знайти помилки у вашому тексті, Vim має розумний механізм виділення. Це насправді мало бути використане для виділення синтаксису програм, але воно може також вловлювати та виділяти помилки.

Підсвічування синтаксису відображає кольорові коментарі. Це не здається важливою особливістю, але як тільки ви почнете його використовувати, ви виявите, що це дуже допомагає. Ви можете швидко помітити текст, який повинен бути коментарем, але не виділений як такий (ви, мабуть, забули маркер коментаря). Або дивіться рядок коду, виділений як коментар (ви забули вставити “*/”). Це помилки, які важко помітити у B&W-файлі та можуть витратити багато часу при спробі налагодження коду.

Підсвічування синтаксису також може вловлювати незбалансовані дужки. Неврівноважений “)” підсвічується яскраво-червоним фоном. Ви можете використовувати команду %, щоб побачити, як вони відповідають, і вставити “(” або “)” в потрібному положенні.

Інші поширені помилки також швидко помічаються, наприклад, використання “#included <stdio.h>” замість “#include <stdio.h>”. Ви легко пропустите помилку в B&W, але швидко помітите, що “include” виділяється, а “included” ні.

Складніший приклад: для англійського тексту є довгий список усіх вживаних слів. Будь-яке слово, яке не в цьому списку, може бути помилкою. За допомогою синтаксичного файла ви можете виділити всі слова, які відсутні у списку. За допомогою кількох зайвих макросів ви можете додати слова до списку слів, щоб вони більше не позначалися як помилка. Це працює так, як ви очікували в текстовому процесорі. У Vim він реалізований за допомогою скриптів, і ви можете додатково настроїти його для власного використання: наприклад, лише перевірити коментарі програми на наявність орфографічних помилок.

Частина 2: редагуйте більше файлів

4. Файл рідко приходить один

Люди не працюють лише на одному файлі. Переважно багато пов’язаних файлів, і ви редагуєте кілька один за одним, а то й декілька одночасно. Ви повинні мати можливість скористатися своїм редактором, щоб зробити роботу з кількома файлами ефективнішою.

Згаданий раніше механізм тегів також працює для переходу між файлами. Звичайний підхід полягає в створенні файлу тегів для всього проекту, над яким ви працюєте. Потім ви можете швидко переходити між усіма файлами в проекті, щоб знайти визначення функцій, структур, слів typedef тощо. Час, який ви економите, порівняно з ручним пошуком – величезний; створення файлу тегів – це перше, що я роблю під час перегляду програми.

Ще один потужний механізм – це знайти всі входження імені в групі файлів, використовуючи команду: grep. Vim складає список усіх матчів і переходить до першого. Команда: cn переведе вас до кожного наступного матчу. Це дуже корисно, якщо вам потрібно змінити кількість аргументів у виклику функції.

Включити файли, що містять корисну інформацію. Але пошук тієї, яка містить декларацію, яку потрібно побачити, може зайняти багато часу. Vim знає про включення файлів і може шукати в них потрібне слово. Найпоширеніша дія – пошук прототипу функції. Розташуйте курсор на назві функції у вашому файлі та введіть [I: Vim покаже список усіх збігів для імені функції у включених файлах. Якщо вам потрібно побачити більше контексту, ви можете безпосередньо перейти до декларації. Аналогічна команда може бути використана для перевірки, чи включали ви правильні файли заголовків.

У 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 є команда :make, яка запускає вашу компіляцію, фіксує створені помилки та дозволяє переходити до місць помилок, щоб усунути проблеми. Якщо ви використовуєте інший компілятор, повідомлення про помилки не розпізнаються. Замість того, щоб повертатися до старої системи “запишіть її”, слід скорегувати параметр ‘errorformat‘ Це повідомляє Vim, як виглядають ваші помилки та як отримати ім’я файлу та номер рядка. Він працює для складних повідомлень про помилки gcc, таким чином, ви маєте змогу змусити його працювати майже для будь-якого компілятора.

Іноді підлаштування під тип файлу – це лише питання встановлення кількох опцій або написання декількох макросів. Наприклад, щоб перейти навколо сторінок вручну, ви можете написати макрос, який захоплює слово під курсором, очищає буфер і потім читає сторінку вручну для цього слова в буфер. Це простий та ефективний спосіб пошуку перехресних посилань.

Використовуючи три основні етапи, ви можете більш ефективно працювати з будь-яким структурованим файлом. Подумайте лише про дії, які ви хочете зробити з файлом, знайдіть команди редактора, які це роблять, і почніть їх використовувати. Це дійсно так просто, як це звучить. Ви просто повинні це зробити.

Частина 3: загострення пилки

7. Зроби звичку

Навчитися керувати автомобілем вимагає зусиль. Це причина продовжувати керувати велосипедом? Ні, ви розумієте, що вам потрібно вкласти час, щоб навчитися майстерності. Редагування тексту не відрізняється. Потрібно вивчити нові команди і перетворити їх на звичку.

З іншого боку, ви не повинні намагатися вивчити кожну команду, яку пропонує редактор. Це було б повною тратою часу. Більшість людей потребує лише навчитися 10 – 20 відсотків команд для своєї роботи. Але це різні набори команд для всіх. Це вимагає, щоб ви час від часу відкидалися і цікавились, чи існує якесь повторюване завдання, яке можна було б автоматизувати. Якщо ви робите завдання лише один раз і не сподіваєтесь, що потрібно буде виконувати його знову, не намагайтеся оптимізувати його. Але ти, мабуть, усвідомлюєш, що ти повторював щось кілька разів за останню годину. Потім шукайте в документації команду, яка може зробити це швидше. Або напишіть макрос, щоб це зробити. Коли це більш велике завдання, наприклад, викладка певного тексту, ви можете озирнутися в групах новин або в Інтернеті, щоб побачити, чи хтось уже вирішив це для вас.

Основний базовий крок – останній. Ви можете придумати повторюване завдання, знайти приємне рішення для нього і після вихідних ви забули, як це зробили. Це не працює. Вам доведеться повторювати розчин, поки ваші пальці не зроблять це автоматично. Тільки тоді ви досягнете необхідної вам ефективності. Не намагайтеся дізнатися занадто багато речей відразу. Але робити кілька одночасно буде добре. Для хитрощів, які ви не використовуєте досить часто, щоб отримати їх у пальці, ви можете записати їх, щоб мати можливість їх шукати пізніше. У будь-якому випадку, якщо ви дотримуватиметеся мети, ви знайдете способи зробити своє редагування більш ефективним та ефективним.

Останнє зауваження, що нагадує вам про те, що відбувається, коли люди ігнорують усе вищесказане: я все ще бачу людей, які половину дня проводять за VDU, дивлячись на екран, потім вниз двома пальцями, потім вгору на екран тощо – і тоді дивуйся, чому вони так втомлюються… Набирай десять пальців! Це не просто швидше, але й набагато менш втомлює. Використовуючи комп’ютерну програму по одній годині щодня, потрібно лише пару тижнів навчитися сенсорного типу.

Епілог

Ідея назви походить від успішної книги “7 звичок високоефективних людей” Стівена Р. Кові. Я рекомендую її всім, хто хоче вирішити особисті та професійні проблеми (а хто ні?). Хоча деякі з вас стверджують, що це походить із книги Ділберта “Сім років дуже дефектних людей” Скотта Адамса (також рекомендується!). Див. http://iccf-holland.org/click1.html та перейдіть до “рекомендованих книг і компакт-дисків”.

Про автора

Брам Муленаар – головний автор Vim. Він пише основний функціонал Vim і вибирає, який код включений багатьма іншими. Закінчив технічний університет Дельфта як технік з комп’ютерів. Зараз він в основному працює над програмним забезпеченням, але все ще знає, як обробляти паяльник. Він є засновником і скарбником ICCF Holland, який допомагає сиротам в Уганді. Він працює позаштатно як архітектор систем, але фактично витрачає більшість часу на роботу над Vim. Його електронна адреса: Bram AT Moolenaar.net.

About The Author

admin

Comments are closed.