LINUX.ORG.RU

Операционная система GNU/Linux: Текстовые редакторы

 , , , , ,


0

0

В лекции вводится понятие «текстовый редактор». Задача лекции – познакомить читателя с двумя наиболее развитыми инструментами Linux, предназначенными для редактирования текста и решения смежных с редактированием задач: Vim/Vi и Emacs. В одной лекции невозможно дать подробное описание этих программ, поэтому изложение ограничивается основными принципами работы с этими редакторами, простейшими примерами и перечислением случаев, когда удобно и рационально использовать Vim/Vi и Emacs.

>>> Подробности

Ответ на: комментарий от Mess

Некоторым людям нужно от текстового редактора гораздо больше чем правка маленького конфига. Как вам задача внести однотипные правки в каждую строку в 30Мб файл? Или найти определение функции в исходнике программы, особенно когда точно ее имя не помнишь:) Или не подскажите как в фаре править текст в utf8?

vgudkov
()
Ответ на: комментарий от cvs-255

> А если терминал не понимает стрелочек?

Тогда vi. Но проще такой терминал в топку отправить. Или подобрать корректный тип терминала для $TERM, или, наконец, вкурить man termcap.

Mess
()
Ответ на: комментарий от Mess

> Пока ты, дебилушко, будешь шевеля губами и загибая пальцы считать строчки на экране, я зажму курсорную клавишу и одним нажатием доберусь до двадцатой строки. Если реакция подведёт, и на одну-две строки промахнусь, той же курсорной пару раз, и я в нужной строке. Потом два раза Ctrl+->, Ctrl+Del. Вуаля, набираем нужное слово. Теперь давай, посчитай, сколько ты клавиш нажмёшь после того, как подсчитал (и при том не ошибся, что человеку вполне не чуждо) строчки и слова.

Это не слишком полезно при правке естественных текстов, но для специфических таких как конфиги, исходники программ и .т.п Очень даже полезно. Пальцы не жалко?

vgudkov
()

>...я зажму курсорную клавишу и одним нажатием доберусь до двадцатой строки. Если реакция подведёт, и на одну-две строки промахнусь, той же курсорной пару раз, и я в нужной строке. Потом два раза Ctrl+->, Ctrl+Del. Вуаля...

Пользователь notepad.exe детектед

anonymous
()
Ответ на: комментарий от Mess

> в лучшем инструменте для работы с текстом, созданным человечеством - мсворде.

Кому и кобыла - невеста.

kraw ★★★★
()
Ответ на: комментарий от Evgueni

>> Для набора текстов - OpenOffice >s/набора текстов/коротких служебных записок/

И то по инерции, бо для таких задач более чем достаточно plain text, а уж доколе приспичило форматировать, то даже возможностей веб-интерфейса любого почтовика достаточно, не говоря уже об AbiWord/WordPad. Writer и Word -- избыточные по функциональности ненужные монстры, IMHO

bigc ★★
()
Ответ на: комментарий от vgudkov

> теперь давай, посчитай, сколько ты клавиш нажмёшь после того, как подсчитал (и при том не ошибся, что человеку вполне не чуждо) строчки и слова.

:21 3w cw

7 и будет это гораздо быстрее

vgudkov
()
Ответ на: комментарий от Opeth

> Этот треш создан для программистов, а не для набора текстов. Для набора текстов - OpenOffice

Да что Вы?!?!?

Надо же, а я тексты в vim'е набираю.

kraw ★★★★
()
Ответ на: комментарий от vgudkov

> Некоторым людям нужно от текстового редактора гораздо больше чем правка маленького конфига

И эти люди используют соответсвующие инструменты, а не используют всякую хрень.

> Как вам задача внести однотипные правки в каждую строку в 30Мб файл?

Странная задача, но допустим. И при каких делах тут вообще текстовый редактор?! sed, awk, perl, наконец. Вием это делать - отменное задротсвто.

> Или не подскажите как в фаре править текст в utf8?

Хрен знает. Наверно, перекодировать, если только один язык, или применить другой редактор/процессор. Я до сих пор как-то обходился. Если это очень надо (а мне не попадаются тексты в utf8), то ФАР нынче - опенсурс, могут и допилить.

Mess
()
Ответ на: комментарий от Mess

>я зажму курсорную клавишу и одним нажатием доберусь до двадцатой строки.

А я смогу в vim'е как мне сделать удобнее. "клавишу зажимать", или набрать ":20". Угадай, что быстрее сделать?

Я уже не говорю о разных там вставках "прямоугольных фрагментов". Как связанных с копированием, так и без оного.

kraw ★★★★
()
Ответ на: комментарий от vgudkov

>Это не слишком полезно при правке естественных текстов

Для естественнывх текстов в том же VIM есть прекрасная навигация не по строке, а по словам/абзацам и.т.д. В любом случае, работая с естественном текстом в редакторе, призванном эффективно этот текст править, а не создавать иллюзию предпечатного просмотра, будешь думать над содержанием, а не над правкой корявок форматирования, кое -- следующий(и не всегда обязательный) этап. =)

bigc ★★
()
Ответ на: комментарий от Mess

> И эти люди используют соответсвующие инструменты, а не используют всякую хрень.

Вы не пробовали. Все эти интструменты убоги, неудобны и расчитаны на какой-то определенный технологический процесс. Быстро открыть и посомтреть исходники в них как правило не получится... Нужно проекты создавать... что-то импортировать.... жуть... Да и они узкие... Даже упертые как ты исходники правят и изучают преимущественно в убогом far, а не во всяких MSVC

> то ФАР нынче - опенсурс, могут и допилить.

Не могут... Быдловиндоконсоль непозволяет

> Странная задача, но допустим. И при каких делах тут вообще текстовый редактор?! sed, awk, perl, наконец. Вием это делать - отменное задротсвто.

Ну вот вы про vimscript интерфейсы к куче яп и продвинутые возможности редактирования в vim не слышали, а что-то говорите... К тому же не везде есть sed, awk, perl. В винде, например, нет

vgudkov
()
Ответ на: комментарий от vgudkov

> 7 и будет это гораздо быстрее

Восемь, при условии, что ты перед этим был в командном режиме.

Один раз курсор вниз, один раз контрол, два раза курсор вправо, один раз делете. Итого - пять. И мне не надо было считать строчки. Я ж говорю, фанаты вия - мозгом ущербны.

Mess
()
Ответ на: комментарий от kraw

> А я смогу в vim'е как мне сделать удобнее. "клавишу зажимать", или набрать ":20". Угадай, что быстрее сделать?

И я в своих редакторах могу попасть сразу в нужную строку. Я уже показал, что быстрее. Даже по количеству нажатых клавиш человеческий способ быстрее морлокского. Но при морлокском предварительно нужно строки сосчитать, что явно дольше и труднее, при том абсолютно бессмысленное занятие, строчки считать.

Mess
()
Ответ на: комментарий от Mess

> Один раз курсор вниз, один раз контрол, два раза курсор вправо, один раз делете. Итого - пять. И мне не надо было считать строчки. Я ж говорю, фанаты вия - мозгом ущербны.

Ущербный ты... Ты на первой строке... Скролишься к 1456.... Сколько у тебя эт времени займет клавишей вниз? минут 5? Похоже спорить с тобой бесполезно, аргументы ты не воспринимаешь. Да и задачу можно и усложнить.

vgudkov
()
Ответ на: комментарий от Mess

> Но при морлокском предварительно нужно строки сосчитать

Я что-то не понимаю. Что считать? Рядом со строкой написан ее номер.

vgudkov
()
Ответ на: комментарий от Mess

Mess, ты либо непроходимый дурак, либо еще очень молодой... Лучше, если бы ты просто был очень молодым, но в любом случае учись читать и принимать критику. Поможет в будушем и многому научишься.

anonymous
()
Ответ на: комментарий от vgudkov

> Вы не пробовали.

Пробовал :)

> Быстро открыть и посомтреть исходники в них как правило не получится

Быстро открыть исходники, если мне важна подсветка синтаксиса и прочая лабуда, я для этого джини использую. Но и мои повседневные редакторы вполне годятся.

> в убогом far

Гы. До мощи ФАРа чтоб дотянуться, надо применять всю мощь баша и кучи юниксовых утилит. И освоение этих утилит занимает несколько месяцев, если не использовать какую-то несколько месяцев, чтобы применить обязательно в ман придётся лезть снова. А маленький ФАР обходится десятком плагинов.

> Не могут... Быдловиндоконсоль непозволяет

Ну и хрен с ней. Мне проще игнорировать быдлокодировку utf8.

> Ну вот вы про vimscript интерфейсы к куче яп и продвинутые возможности редактирования в vim не слышали, а что-то говорите

Слышал, слышал :) Я просто считаю эти все извраты именно извратами, и мне они не интересны, потому как неудобны. А главное - просто не входят в круг моих задач и интересов.

> К тому же не везде есть sed, awk, perl. В винде, например, нет

В винде есть. На моей, например, перла, разве что, нету, я его не использую. А может и есть в глубине цигвина, но мне пох. Вот тока не надо про искаропки, не демонстрируй очередную грань убогости своей натуры.

Но, что забавно, под виндой у меня и задач не возникает для обработки огромных текстовых файлов ;) Не держу я там логов сквида и апача. Там, где держу, там нету ФАРа, но есть баш и всё остальное.

Mess
()
Ответ на: комментарий от Mess

месс, а сколько нажатий клавиш тебе понадобится, чтоб сделать подсветку текущего слова по всему тексту? у меня в виме ровно 2 клавиши (Shift+F7 если точнее быть).

Банальный пример, который иногда очень нужен и полезен.

а сколько потом нажатий тебе понадобиться чтоб заменить ВСЕ эти слова на другое? мне ровно 1 + длина нового слова

слушаем твои пляски с со стрелочками, F7, нажанием заменить все.

anonymous
()
Ответ на: комментарий от vgudkov

> Ты на первой строке... Скролишься к 1456.... Сколько у тебя эт времени займет клавишей вниз?

Для даунов рассказываю: Есть клавиша Page Down, если что. Есть средства перехода к нужной строке по её номеру, или сразу на 50% - в середину файла, например.

> Похоже спорить с тобой бесполезно, аргументы ты не воспринимаешь.

Ыгы. Придуркам со мной спорить бесполезно, и даже вредно. Я аргументы привожу, у придурков только готовые мантры и суры, а неспособность не говорю даже воспринимать, но даже просто видеть аргументы оппонента говорит окружающим о глпости придурка яснее всего. Попробуй спорить с аругментами, а не со своим представлением о моральной сущности оппонента.

> Да и задачу можно и усложнить.

Можно. Всё можно. Я и сам могу придумать примеры, когда вий таки даст выигрыш перед хорошим, но простым текстовым редактором. Но эти примеры, во первых, очень замудрённые будут, а во вторых и в главных, крайне редко встречаться могут. В подавляющем количесвто юзкейсов вий ухудшает производительнсть труда.

Mess
()
Ответ на: комментарий от anonymous

Да при этом заметь, я могу продолжать редактировать текст, а подсветка останется и редактор позволит продолжить работу с ней снова одним нажатием.

anonymous
()
Ответ на: комментарий от anonymous

И еще заметь, когда ты тянешь руки к стрелочками и контролю, у меня руки остаются на месте.

anonymous
()
Ответ на: комментарий от vgudkov

> Я что-то не понимаю. Что считать? Рядом со строкой написан ее номер.

Это как настроишь. У меня не показывает. Не говоря уже о чистом vi. Что там говорили о терминалке за тридевять хопов?

Mess
()
Ответ на: комментарий от Mess

Во многом согласен с Mess и считаю joe лучшим текстовым редактором всех времён и народов. VI существенно упрощает редкие операции (в основном ведь нужно просто вводить текст и легко перемещаться по нему буквально в пределах горячей зоны 5-10 строк) засчёт неоправданного усложнения операций по сути элементарных.

DRVTiny ★★★★★
()
Ответ на: комментарий от anonymous

> месс, а сколько нажатий клавиш тебе понадобится, чтоб сделать подсветку текущего слова по всему тексту?

Нисколько. Не умеют этого мои редакторы. Да, иногда полезно, в Опере мне этот режим поиска нравится. Но этот плюс пока си-ильно не перевешивает прочие фундаментальные недостатки вия.

> а сколько потом нажатий тебе понадобиться чтоб заменить ВСЕ эти слова на другое? мне ровно 1 + длина нового слова

Одна? Из любого режима? Или только когда найденное подсвечено? Тю. S&R в любом редакторе вызывается аккордом из двух клавиш. В вие надо нажать не меньше ;)

> слушаем твои пляски с со стрелочками, F7, нажанием заменить все.

Какие пляски? Если мне надо заменить, то вызываю команду "Найти и заменить".

Давай юзкейс, как бы из реальной практики, и посчитаем клавишки ;)

Mess
()
Ответ на: комментарий от anonymous

> И еще заметь, когда ты тянешь руки к стрелочками и контролю, у меня руки остаются на месте.

На каком? Убери руки с места, это неприлчино в обществе.

На твоей клавиатуре контрол находится где-то далеко? Курсорные клавиши на мышке? Уй. Сочувствую. На моей - контрол очень близко к остальным буквам, и стрелочки очень удобно расположены.

Mess
()
Ответ на: комментарий от Mess

Да легко.

Книгу в fb2 редактировал, значит смысл в том, что несколько слов были написаны с ошибками, заменил все слова по мере вычитывания. 

+ вот еще что: 

Обычно сноски в таких книгах пишутся в конце файла тоесть примерно следующее 

текст текст текст {2} далее текст текст..

ниже сноска примерно следующая 

-2- 

 абзац текста абзац текста абзац текста абзац текста абзац текста 

Теперь считаем сколько нужно чтобы вместо {2} Вставить {абзац текста абзац текста абзац .... }...Ну не удобно мне на телефоне прыгать туда-сюда.

В Виме я это сделал минуты за 2 все 40 замен. 

логика очень проста:
 найти -(число из скобочек)-
Пропустить пустую строку,
скопировать все до следующей пустой строки,
заменить {(число из скобочек)} на {скопированый текст}

Я не спорю, это и перлом делается быстро, но это в перле еще надо написать, а в виме на каждую {циферка} было по 6-7 нажатий, НО после первой замены просто сделал повтор операции 39 раз то есть фактически клавиш 15 от силы.

+ вим еще нравится тем, что очень легко прикрутить новую подсветку синтаксиса, причем сделать ее можно прямо в документе, которому нужна подсветка, а потом просто сохранить этот файл.

anonymous
()
Ответ на: комментарий от anonymous

> абзац текста абзац текста абзац

Да, минуты полторы только ушло на то, чтоб придумать как это сделать, теперь такое быстрее сделаю.

anonymous
()
Ответ на: комментарий от anonymous

> а в виме на каждую {циферка} было по 6-7 нажатий,

Да и вообще Нажатия считать это какой-то изврат.

Сколько нажатий надо чтоб в тексте из числа 9999 сделать 10000? в виме ровно одно.

anonymous
()
Ответ на: комментарий от DRVTiny

> VI существенно упрощает редкие операции (в основном ведь нужно просто вводить текст и легко перемещаться по нему буквально в пределах горячей зоны 5-10 строк) засчёт неоправданного усложнения операций по сути элементарных.

И в случае vi и в случае emacs такие простые перемещения ничем не сложнее чем в joe, но если набор текста - это основная работа, то этого мало. Сложные замены, поиск по шаблону, квадратные вставки, подсчёт числа знаков, создание макроса на лету для простых операции, именение регистра и исправление символов напечатанных не в той расскладке, далеко не так уже редко встречающиеся операции.

Evgueni ★★★★★
()

Вы вот опять холиварите, хотя наверняка ранее кто-то озвучивал мысль: лучший текстовый редактор - это как "лучшая машина", его просто не существует. Есть задача и есть программа, лучше всего с нею справляющаяся. Можно с некоторой натяжкой найти редактор, эффективно решающий большинство задач, но даже тут вступает в игру привычка и обычное, человеческое мышление. Мне, как начавшему на винде, гораздо ближе "человеческие" редакторы, т.е. где клавиши дают очевидный результат: Backspace, Enter, arrows... Поэтому под Линуксом единственный идеальный редактор для меня был FTE (к тому же, гибко поддерживающий folds). А то, что emacs может компилировать, варить кофе и запускать ЛИСП - это его личное, скороварочное дело. Если есть задача РЕДАКТИРОВАТЬ, я использую редактор. Если ПРОГРАММИРОВАТЬ - тут увы, ни один емакс/вим/херовим не допукает, тут нужна полноценная IDE.

matumba ★★★★★
()
Ответ на: комментарий от Evgueni

> И в случае vi и в случае emacs такие простые перемещения ничем не сложнее чем в joe, но если набор текста - это основная работа, то этого мало. Сложные замены, поиск по шаблону, квадратные вставки, подсчёт числа знаков, создание макроса на лету для простых операции, именение регистра и исправление символов напечатанных не в той расскладке, далеко не так уже редко встречающиеся операции.

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

Кстати емакс тоже тоже очень нравится. Его я первого осилил :))

anonymous
()
Ответ на: комментарий от Evgueni

> Сложные замены, поиск по шаблону, квадратные вставки, подсчёт числа знаков, создание макроса на лету для простых операции, именение регистра и исправление символов напечатанных не в той расскладке, далеко не так уже редко встречающиеся операции.

Это ты ФАРовский редактор описывал? Странно, я думал ты любитель вия. Вот разве что я не очень въезжаю, на кой нужно считать число знаков. Хотя скорее всего на плугринге лежит плагинчик и для этого.

Блин, как меня умиляет гордость виеводов за квадратные вставки! (Правда, во времена ДОСовских редакторов это называлось вертикальными блоками ;))

Mess
()
Ответ на: комментарий от anonymous

> В Виме я это сделал минуты за 2 все 40 замен.

Не забывайте, что не все редактирующие - прогеры. А уж "регэкспы", макросы и прочее для них китайская грамота. И если уж вы хвалитесь своим средним уровнем, всегда найдётся задача исправления (или создания) текста, где вы ни черта не сделаете. Это я к тому, что не надо пальцевать перед простыми смертными своими комбинациями клавиш - они тоже люди и освоили из редактора необходимый минимум средств. Редактор хорош не тем, какой мощный язык в него впихнули, а тем, насколько просты и эффективны его инструменты. Язык - инструмент прогера, не юзера.

matumba ★★★★★
()
Ответ на: комментарий от matumba

> Не забывайте, что не все редактирующие - прогеры. А уж "регэкспы", макросы и прочее для них китайская грамота.

Я даже близко не прогер. Из регекспов знаю только, что "." это любой символ. Но вот доку по виму, я таки почитал.

anonymous
()
Ответ на: комментарий от anonymous

> Сколько нажатий надо чтоб в тексте из числа 9999 сделать 10000? в виме ровно одно.

:) Вот она - нашлась задачка которая в виме делается быстрее чем в остальных отсосных редакторах.

Burbaka ★★
()
Ответ на: комментарий от matumba

s/насколько просты и эффективны его инструменты./насколько привык к этим инструментам/

мекросовт подсадило всех на ctrl+c ctrl+v и многие даже не в курсе, что есть и другие способы.

anonymous
()
Ответ на: комментарий от Mess

> Вот разве что я не очень въезжаю, на кой нужно считать число знаков.

Разве непонятно - подсчет числа знаков, строк и слов - корпоративный спорт вимеров. Кто быстрее это делает, тот и в авторитете.

Burbaka ★★
()
Ответ на: комментарий от anonymous

> Это к вопросу количества нажатий клавиш и почему это глупая затея считать клавиши.

Не глупая. Не, это когда красноглазые с пеной на губах орут, что их способ быстрее (подразумевая, что именно клавиш меньше надо нажать), это не глупо, а в самом деле посчитать. и выяснить, что они очень не правы, то это становится глупым? Извини-ите! Мы ещё не добрались до реальных замеров времени, необходимого на выполнение одного и того же комплекса операций в разных редакторах. А потом мы замеряем время, уходящее на поиск решения, на вспомнить (вычитать в мане) какой клавишей/командой (и какой синтаксис у той команды) делается то, что тебе приспичило сделать.

Не люблю брехунов.

Mess
()
Ответ на: комментарий от matumba

> они тоже люди и освоили из редактора необходимый минимум средств.

И кулиж они тогда лезут эти любители?

Это как на на автофоруме чел, который ниасилил поведение на гололеде кричал, что учиться этому не надо, ведь есть же шипованная резина, и что она всех спасет.

anonymous
()
Ответ на: комментарий от Mess

> Не люблю брехунов.

тогда убейся апстену, освободи себя от не любви к себе.

anonymous
()
Ответ на: комментарий от Burbaka

> :) Вот она - нашлась задачка которая в виме делается быстрее чем в остальных отсосных редакторах.

Не, выше приводился реальный пример, с замороченной заменой. Отличная иллюстрация. И ради вот такого мучаться всю жизнь с убогим интерфейсом повседневного редактора? Нах-нах. Я лучше разик, если такое приспичит, помучаюсь, делая такое тупым обычным способом. Но лучше - книжку верстать буду инструментом, для верстания книжек подходящим гораздо больше, а не утешать себя задротной отмазкой, что зато не нагружаешь свой моск отвлечениями на оформление текста (это виеводы-то говорят, что мозг перегружать не надо, лишние сущности, дескать!)

Mess
()
Ответ на: комментарий от Mess

>Не глупая. Не, это когда красноглазые с пеной на губах орут, что их способ быстрее (подразумевая, что именно клавиш меньше надо нажать), это не глупо, а в самом деле посчитать. и выяснить, что они очень не правы, то это становится глупым? Извини-ите! Мы ещё не добрались до реальных замеров времени, необходимого на выполнение одного и того же комплекса операций в разных редакторах. А потом мы замеряем время, уходящее на поиск решения, на вспомнить (вычитать в мане) какой клавишей/командой (и какой синтаксис у той команды) делается то, что тебе приспичило сделать.

Блин ты еще и туп. Вот тебе задача вставить 100000000 раз букву 'a' в строку. В твеом любимом блокноте это делается нажатием одной клавиши в течение тысячи лет. В виме нажатием 11 но за 5 секунд. Дошло теперь? Кстати как в фаре разбить окно на два и открыть в этих окнах один и тот же файл в разных местах?

vgudkov
()
Ответ на: комментарий от anonymous

> мекросовт подсадило всех на ctrl+c ctrl+v и многие даже не в курсе, что есть и другие способы.

4.2 Мелкософт изначально двигала аккорды Ctrl+Ins, Shift+Ins. Я с них начинал, к ним привык, на ctrl+c ctrl+v ругался и плевался, но, когда понял, что даже спустя много лет практики иногда путаю контрол с шифтом при вставке/замене, пристратился всё же к ctrl+v. Вставляет! :)

Mess
()
Ответ на: комментарий от vgudkov

> Вот тебе задача вставить 100000000 раз букву 'a' в строку

Хм. Примеры применения вима все ближе и ближе к повседневной жизни.

Burbaka ★★
()

Emacs честно не асилил, а vim рулит! "Блокнотщиков" в топку, пусть там жмут свои PgDown.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.