LINUX.ORG.RU

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

 , , , , ,


0

0

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

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

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

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

Неа. Просто иногда платят за число знаков.

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

>Ты сам признал что для нажатия эскейпа ты руку отрываешь от клавиатуры, то есть насчет неснимания пальцев - ложь.

Это в каком месте я так говорил? Эскейп я нажимаю мизинцем левой руки. Воду в лужах газируем?

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

> По сравнению с вимом это кстати большой шаг вперед.

Да такой же он. Цветов в подсветке синтаксиса больше, выделение щрифтом можно делать, табы кнопочками понагляднее, да выделение мышкой покузявее работает, если кому нужно.

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

Быдло Месс бегом на секретутские курсы учить чепятать в слепую!!! ну или раз виндузятнег до кучи то Соло на клавиатуре спасет твою душу.

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

> Эскейп я нажимаю мизинцем левой руки

Мощный мизинец - уважаю :)

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

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

Теперь ИМХО. Профи и им подобные всегда будут осваивать сложные инструменты (слепую печать, скрипты и др.), и будут довольны. Любители же будут использовать "кнопочки", избавляющие их от необходимости что-либо учить, и тоже будут довольны. Предлагаю на этом и успокоиться.

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

P.S. Не все выходили их вима первый раз по killall vim, при старте вима без параметров выводится справка, где написано, что выход по :q<Enter>

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

>>для нажатия эскейпа ты руку отрываешь от клавиатуры

>нажми Ctl-[

Ну хоть что-то полезное вынес из этого треда.

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

>>Ты сам признал что для нажатия эскейпа ты руку отрываешь от клавиатуры, то есть насчет неснимания пальцев - ложь.

>Эскейп я нажимаю мизинцем левой руки.

Паганини. Талант прозябает в IT.

>Это в каком месте я так говорил?

Ну значит не ты, успокойся.

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

>предлагаю концепцию vim жив, значит кому-то нужен.

На сайте вима есть только один более-менее доделанный экстешен - тот самый навигатор по тегам который позволяет в виме сделать скриншот с a-la IDE и запостить на ЛОР. К сожалению, с экстеншеном gdb он не дружит, и кроме того экстеншен gdb конечно же недоделан(*). Все экстеншены апдейтились очень давно опять же судя по их сайту. Так что жизнь у них нынче неторопливая.

(*) Да да знаю - дебагер не нужен.

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

> Эскейп я нажимаю мизинцем левой руки.

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

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

Фчёрт, уже-таки сказали про Ctrl+[ %)

Ладно, тогда ещё раз скажу.

Возможность не снимать руки с алфавитно-цифрового блока клавиатуры вообще, в принципе (в том числе, кстати, управление табами :)), это огромное преимущества для 10-пальцевиков. По сему vim заруливает не по-детски. Мне теперь сложно пользоваться любым другим редактором для кода - настолько я привык к удобным фишечкам вима. Примеры:

A - переход в конец строки в режиме ввода
dib/cib/diB/ciB - если курсор находиться в пределе круглых скобок - удалить текст из скобок/то же, но с переключением режима ввода/то же, но удалить при этом ещё и сами скобки (+ аналогичные команды для фигурных скобок).
bce - перейти в начало слова, удалить его и начать ввод нового
[X]dw - удалить x слов
Ctrl+O - переход на прошлую позицию курсора, если ты начал редактировать что-то в другом месте.

Особой темы заслуживают регистры в виме :).
Ещё одной темы заслуживает режим quick-fix для программинга - советую почитать.

В общем, не 10-пальцевикам, наверное, вряд ли будет удобно.
Всем остальным советую неделю попользоваться, а потом судить. Это непередаваемое ощущение, особенно когда ты начал понимать эту штуку.

Обучение - vimtutor + просмотр справки насчёт полезных сочетаний клавиш.

Фуххъ :)

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

Стена ждёт тебя. Я пользуюсь переключением одной/двумя клавишами между исходником/хедером в разных режимах, автодополнением. Это два рабочих расширения. И поверь, их там больше :)

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

>Да да знаю - дебагер не нужен.

О, про дебагер вспомнили. Встречайте - cgdb - консольный дебагер в стиле вим с подстветкой кода :)

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

>из него _все_ (ну кроме самых одаренных у которых был за спиной местрых гуру) первый раз выходили по killall vim в соседней консоли.

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

Кстати то, что ты говоришь за _всех_, уже хорошо показывает уровень твоего интеллекта..

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

>А модальность для компьютерных интерфейсов по мнению многих экспертов в пользовательских интерфейсах - вред.

Скажи, а какого мнения твои эксперты о пальцеломных труднозапонимаемых комбинациях вида Ctrl-x-Alt-a? ;)

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

> Скажи, а какого мнения твои эксперты о пальцеломных труднозапонимаемых комбинациях вида Ctrl-x-Alt-a? ;)

В свете сегодняшних холиваров вспоминается игрушка gate88, где большая часть действий производилась путем нажатия четырехсимвольных комбинаций вроде "e+(w-d-d)", где "+" обозначает одновременность, а "-" - последовательность. И автор утверждал, что это ппц как экономит время и нервы геймера.

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

1,$s/^ */<CTRL>V<CTRL>m/

где <CTRL>v одновременное нажатие control и v

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

кстати классная была игрушка :)))

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

> А модальность для компьютерных интерфейсов по мнению многих экспертов в пользовательских интерфейсах - вред.

В отношении софта, который не предназначен для ньюбаев все мнения экспертов идут нафик.

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

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

Не заткнулся, а пиво ушёл пить! :) Решили, и ладушки. Долгонько пришлось упрашивать, с третьего раза только злость виеводов взяла, напрягли тумкалки, кто сумел, выдали. Вот я не знал до сей поры, что таки можно \n удалить как простой символ. А я засим покидаю вас в этой ветке, мне стало неинтересно.

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

Скажи, а какого мнения твои эксперты о пальцеломных труднозапонимаемых комбинациях вида Ctrl-x-Alt-a? ;)

Да скорее всего такого же. В нормальном редакторе должны быть понятные, легко запоминающиеся и простые в использовании хоткеи. Как показывает моя личная практика помнишь все равно штук 10 - 20, не более. А все убогие комбинации по 3-4 кнопки, нажимаемые в разной последовательности такое же зло как и модальность.

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

> В отношении софта, который не предназначен для ньюбаев все мнения экспертов идут нафик.

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

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

Долго общаться с компьютером и иметь ежедневной задачей чтение и редактиование таких текстов как исходники программ это очень разные вещи. У тебя просто задач таких нет, в vim'е не говоря уже о emacs масса вкусных плюшек для этого. Кстати перепутать режим ввода в виме, трудно потому что он отображается курсором на который ты полюбому смотришь, в отличии от раскладки.

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

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

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

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

Я обычно сосредоточен не виде курсора, а на тексте который печатаю.

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

IDE - не панацея, а часто наоборот - я могу сравнивать свою эффективность в разработке, используя Emacs, и программистов, использующих IDE. Почему-то я быстрее разрабатываю, да еще и зачищаю баги понаделанные этими ИДЕвыми программистами

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

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

Очень удобно когда в 2409 строчке кода надо что-то поменять

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

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

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

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

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

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

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

>Очень удобно когда в 2409 строчке кода

2409 строчка кода не нужна. Как, впрочем и тысячная, и возможно даже пятисотая.

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

Гы. Удобство конечно вопрос субъетивный, но даже простые комбинации типа C-x <что-то> мне особо удобными не кажутся. Возьмем то же самое undo для примера. В emacs C-x u, в любом редакторе c cua-mode по умолчанию ctrl-z. Чтобы сделать n откатов, где n заранее неизвестно, в емаксе необходимо нажать n раз 'c-x' и 'n' раз u, чтобы сделать n откатов в обычном редаторе надо один раз зажать контрол и n раз нажать 'z'. Если n велико, то 'z' можно зажать и дождаться того момента когда изменения откатятся до нужного места. Где проще ? Лично мне проще в обычном редакторе. Я понимаю, что такие "многоэтажные" кейбиндинги введены в емаксе потому что их много и коротких комбинаций кнопок не хватает. Но мне, например, не нужно 100 кейбиндингов, мне хватит 10-20 и по возможности простых. Все остальное я буду использовать редко и если понадобится, то могу использовать либо через меню, либо командой через M-x. Благо сигнатуру команд мне запомнить проще.

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

> IDE нафик не нужны:)

От поколника интерфейса vim я другого ответа и не ожидал :) А если задуматься - что такое IDE ? IDE это:

1) редактор кода;

2) навигатор по файлам проекта;

3) навигатор по языковым сущностям программы (по функциям, классам, методам ... етц);

4) интеграция с компилятором;

5) интеграция с системой сборки;

6) интеграция с отладчиком;

7) интеграция с системой контроля версий;

8) интеграция с рисовалкой гуйни;

9) автоматический генератор типового кода

9) средство рефакторинга

10) ... допиши свое ...

Какой функционал из перечисленного тебе кажется избыточным, лишним, ненужным ?

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

>> IDE нафик не нужны:)

>От поколника интерфейса vim я другого ответа и не ожидал :)

Они походу весь код в один файл набивают, поэтому могут обходиться и без IDE.

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

сразу видно, что даже тюториал не читали. почти все команды emacs понимают префиксный аргумент - чтобы откатить n шагов надо сказать C-u (или Esc) N C-x u и все. Префиксы C-x и другие - очень удобны, тем что они разбивают команды на группы.

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

вот кроме рисовалки (и то, насколько я помню был проект на эту тему) Emacs (по крайней мере) умеет очень хорошо. А вот ваша IDE умеет интегрироваться с darcs, git, mercurial и еще пачкой систем контроля версий?

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

нет, я печатаю достаточно медленно, особенно если сравнивать с intellicast. но разработчик (а не кодер) печатает достаточно мало по сравнению со временем продумывания алгоритмов.

p.s. недавно как раз обсуждали зависимость между использованием IDE и количеством кривого кода - зависимость практически прямая - IDE со всеми этими средствами генерации кода и подсказками, способствует возникновению монстрообразных интерфейсов и классов

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

> 1) редактор кода;

В виме лучше

> 2) навигатор по файлам проекта;

Зачем это нужно? :e ./common/test.h куда быстрее мышекликанья с учетом автоподстановок

> 3) навигатор по языковым сущностям программы (по функциям, классам, методам ... етц);

на практике ctgas всегда удобнее, потому что он простой и индексирует 43 яп. Часто в проекте помесь из языков и платформ, что под кждый файл, который редактировать нужно свою IDE пускать?

> 4) интеграция с компилятором;

vim отлично интегрируется набери :make и прыгай по ошибкаи

> 5) интеграция с системой сборки;

то же самое

> 6) интеграция с отладчиком;

ест всякие vimgdb и clewn, которые работают но не пользую

> 7) интеграция с системой контроля версий;

В vim сделано очень удобно:). Очень удобно смотреть различия ревизий и.т.п

> 8) интеграция с рисовалкой гуйни;

Зачем? Я пускаю qtdesigner или glade когда мне нужно так.

> 9) автоматический генератор типового кода

Этого в виме зашибись. Набей паттерны которые тебе нужны. Сделать например ifndef define или шапки в новых файлах элементарно

> 9) средство рефакторинга

У...

> 10) ... допиши свое ...

Я в виме максимум через 5 минут могу начать работу над любыми исходниками(с учетом построения тегов). исходники QT импортируются под eclipse-cdt несколько часов при полном парсинге.

Ты предлагаешь из-за каких-то скромных преимуществ учить с десяток IDE на каждый чих? или принуждать себя пользоваться убогими редакторами?

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

В виме отмена просто u. потому что undo. правда легко запомнить? w - это слово:) W - польшое слово и.т.п Каждая команда строиться по определенным правилам, каждая ее часть имеет легкий и понятный смысл. В имаксе тоже самое, но распальцовок больше. А почму ctrl-z - это отмена... хз... Кстати для таких упертых в дистрибутиве лежит vimsimple похожий на твои любимые убогие редакторы

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

> сразу видно, что даже тюториал не читали. почти все команды emacs Я понимают префиксный аргумент - чтобы откатить n шагов надо сказать C-u (или Esc) N C-x u и все.

Я специально оговорил - n - неизвестно. Ну не знаю я насколько исправлений назад нужно откатиться. Я эти исправления не считаю, я не вимер. Мне известно как должен выглядеть фрагмент программы после отката и постепено, откатывая изменения, я оцениваю, соответствует ли код требуемому виду или нет.

> Префиксы C-x и другие - очень удобны, тем что они разбивают команды на группы.

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

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

>> 1) редактор кода; > В виме лучше

Ну тут с тобой понятно

> Зачем это нужно? :e ./common/test.h куда быстрее мышекликанья с учетом автоподстановок

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

> на практике ctgas всегда удобнее,

на практике ctags достаточно убог. Если надо могу обосновать.

> Часто в проекте помесь из языков и платформ, что под кждый файл, который редактировать нужно свою IDE пускать?

Современные IDE давным давно имеют модульную расширяемую структуру, с поддержкой туевой хучи языков. По сути тот же vim и emacs тоже IDE, просто у фанатов в голове понятие "IDE" четко сассоциировано с понятием "плохо,фу" и они предпочитают думать как-то по другому.

> 4) интеграция с компилятором; > 5) интеграция с системой сборки; > 6) интеграция с отладчиком;

vim это и есть IDE, см. выше.

> ест всякие vimgdb и clewn, которые работают но не пользую

Да понятно, и у emacs-а ( и у vim-а скорее всего) интеграция с отладчиком gdb откровенно неудобная. Тут надо равняться на VS2003 - 2005. Там с отладчиком работать одно удовольствие.

>> 9) средство рефакторинга > У...

Да тут полный у... Vim по этому пункту сливает по черному. У emacs-а хотяб есть платный xrefactory.

> Ты предлагаешь из-за каких-то скромных преимуществ учить с десяток IDE на каждый чих?

А нафига их учить, они все одинаковые как матрешки. Учить надо vim и emacs.

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

> недавно как раз обсуждали зависимость между использованием IDE и количеством кривого кода - зависимость практически прямая - IDE со всеми этими средствами генерации кода и подсказками, способствует возникновению монстрообразных интерфейсов и классов

Да ну, как же такую зависимость удалось вывести ? Можно ссылочку ?

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

>Я специально оговорил - n - неизвестно. Ну не знаю я насколько исправлений назад нужно откатиться. Я эти исправления не считаю, я не вимер. Мне известно как должен выглядеть фрагмент программы после отката и постепено, откатывая изменения, я оцениваю, соответствует ли код требуемому виду или нет.

Лифтом ты так же пользуешься? садишься на первом этаже и поднимаешься в цикле по одному этажу, пока свой не увидишь?

Умиляют такие раненые в голову мышевозы...

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

> ну раз все молчат, я тебе скажу: в емаксе C-/ делает undo так же как твой ctrl-z.

Это как раз доказывает, что даже среди емаксеров встречаются разумные люди :) А что у нас, напимер, C-x f ?

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