LINUX.ORG.RU

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

 , , , , ,


0

0

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

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

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

>Тут надо равняться на VS2003 - 2005.

мышевоз.

>Там с отладчиком работать одно удовольствие.

индус.

показана немедленная эвтаназия.

AVL2 ★★★★★
()

В емаксе есть такая фишка: когда правишь код, то при нажатии таба строка кода с курсором позиционируется на правильный отступ в не зависимости от позиции курсора в строке --- к этому на столько сильно привыкаешь, что как только приходится править код где-нибудь еще, начинает "ломать" по-черному. Объяснять удобство такой фишки тому, кто этого не видел сложно. Короче, для поддержания дискуссии (у меня четыре дня пасхальных выходных впереди...) вопрос: в альтернативных редакторах/IDE (на ваш вкус: Eclipse, joe, IntelliIDEA, gedit, kate, FAR editor, etc.), такое возможно?

--

aborigen

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

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

Яркий пример сознания испорченного вимом.

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

А чем тебе C-x C-f не нравится, вполне размное сочетание. Надеюсь тебе не приходится ее нажимать n-раз, где n --- большое заранее неизвестное число?

--

aborigen

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

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

Ага я заметил. четыре из 5 товарищей, пользующихся MSVC не знают как автоматом выровнять оступы в файлике с кодом.:) Кстати очень интересно чем ctags убог? А для случаев когда не помнишь набираешь :e . и о чудо наблюдаешь браузер файлов.

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

> А чем тебе C-x C-f не нравится, вполне размное сочетание.

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

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

> Кстати очень интересно чем ctags убог?

ctags не является полноценным парсером. По этой причине он никогда не сможет построить список мест в которых вызывается некоторая заданная функция foo, в то время как номральные ide это делают уж лет пять как. Он не понимает специализации шаблонов Си++. Он не знает что такое препроцессор. Он совершенно непригоден для нормального рефакторинга. Наконец, он неинтерактивен. Его верхняя планка - построение списка функций и классов в простеньких IDE.

> А для случаев когда не помнишь набираешь :e . и о чудо наблюдаешь браузер файлов.

Ну да, да. Тут вим не отстает от остального разумного человечества.

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

>Короче, для поддержания дискуссии (у меня четыре дня пасхальных выходных впереди...) вопрос: в альтернативных редакторах/IDE (на ваш вкус: Eclipse, joe, IntelliIDEA, gedit, kate, FAR editor, etc.), такое возможно?

В плане набивания кода на жабе виаю до идеи как до луны пешком. Можно на вкус поговорить о переименовании класса или о переносе класса в другой пэкедж (F6 или Shift+F6 -> подтверждаешь список файлов, которые будут затронуты), можно о интродуцировании переменной ( выделяешь выражение -> Ctrl+Alt+V, пишешь имя для переменной). Можно поговорить о динамических шаблонах типа itar+[Tab] c автовыведением макроподстановок в шаблон на основании текщего контекста.

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

> По этой причине он никогда не сможет построить список мест в которых вызывается некоторая заданная функция foo

ни одна IDE это стропроцентно правильно не делает:) Пример когда имя функции определяется в месте вызова, через define, стандартная практика при системном программировании на С. А в vim'e или emacs с помощью простейших макрокоманд наура прыгаем по этому коду

> Он не понимает специализации шаблонов Си++

Он не сможет выбрать точное место определения, но это не сделает правильно ни одна IDE, если код под ifdef для этого его нужно собрать:) Та же QT собирается от 2х часов на быстрйо машине:)

> Он не знает что такое препроцессор

Прекрсно знает. Или ты имеешь ввиду, что он не попадет в нужное место еслт код под ifdef? никто не попадет:) ctags предложит выбор из 3х вариантов.

> Он совершенно непригоден для нормального рефакторинга.

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

> Наконец, он неинтерактивен.

Что ты имеешь в виду?

> Ну да, да. Тут вим не отстает от остального разумного человечества.

В этом списке кстати можно поискать так же как в любом файле:)

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

ctags прост как 5 копеек и в этом его сила. Он не отменяет головы. Можно написать свой индексатор в ctags формате для своих нужд. Как к той же студии прикрутить навигацию по ошибкам моих препроцессоров? Или собрать код компилятором не от MS? У тебя просто примитивные потребности

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

> ни одна IDE это стропроцентно правильно не делает:) Пример когда имя функции определяется в месте вызова, через define, стандартная практика при системном программировании на С.

Та же VS2005 вполне сносно дружит с препроцессором.

> А в vim'e или emacs с помощью простейших макрокоманд наура прыгаем по этому коду

Это радует, но этого ничтожно мало.

> Прекрсно знает. Или ты имеешь ввиду, что он не попадет в нужное место еслт код под ifdef? никто не попадет:) ctags предложит выбор из 3х вариантов.

Полагаю он вообще не поймет более или менее сложный ifdef. Не сумеет его правильно проинтерпретировать. При работе с gcc ему проще - он может использовать штатный cpp. Но как быть с другими компиляторами ?

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

Внешняя тулза это и будет IDE :) Я рефакторю нечасто, но мощно :)

> Наконец, он неинтерактивен. Что ты имеешь в виду?

Не умеет подхватывать изменения на лету. Требуется пинок. Это не очень стращно, но лично меня раздражает.

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

> У тебя просто примитивные потребности

Моим примитивным потребностям до конца не удовлетворяют ни vim ни emacs

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

> Та же VS2005 вполне сносно дружит с препроцессором.

Она у меня стоит. Навигация по тегам ctags горавздо удобнее.

> Моим примитивным потребностям до конца не удовлетворяют ни vim ни emacs

Назови лучшую альтернативу:)

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

текстовые процессоры это sed, grep и LaTeX. а вим/емакс и проч. *office -- именно редакторы.

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

> Честно говоря такие высказывания рождаются только тогда когда ничего не знаешь о редакторе.

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

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

>У Vim ошибка в ДНК, называется она "режимы".

Фига се, а чего этой ошибкой удобно пользоваться?

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

>Вот я не знал до сей поры, что таки можно \n удалить как простой символ.

Лооооол! ~_~

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

>А все убогие комбинации по 3-4 кнопки, нажимаемые в разной последовательности такое же зло как и модальность.

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

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

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

Благородный дон не осилил split view и multitab?

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

> исходники QT импортируются под eclipse-cdt несколько часов при полном парсинге.

Это проблемы языка C++. 250кБ исходников на D парсятся Descent за секунду. 30МБ исходников на Java парсятся IntelliJ IDEA чуть больше, чем за минуту.

ps использую vim

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

> А чем тебе C-x C-f не нравится, вполне размное сочетание.

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

Если тебе не нравиться, то перебинди.
(global-set-key (kbd "C-f") 'findfile)
(global-set-key (kbd "C-b") 'switch-to-buffer)
Но после этого ты не сможешь перемещаться побуквенно используя C-b (назад) и C-f (вперед). Так что лучше вместо них использовать свободные C-; и C-', или C-, и C-., или C-` и C-~.

Стандартные комбинации расчитаны на комфортное *редактирование текста*. Открыть новый файл или переключить буффер - это не редактирование и используется оно намного реже, чем редактирование. Однако существуют режимы типа dired и gnus, где основное занятие чтение и манипуляция и там *нет* префикса в виде C-x.

Основное преимущество emacs перед vim - это возможность "на лету" программировать сам редактор, т.е. без перекомпиляции и перезапуска. Или оно уже больше не преимущество?

ps, я наверное единственный такой, кто либо читал доку перед первым использованием vi/emacs, либо сворачивал (отправлял в background) их по Ctrl+Z, чтобы дочитать. В то время я не знал о существовании screen, а переключаться по Alt+Fn, чтобы увидеть login(1) с его приглашение набрать логин/пароль было крайне лениво. Вот так до сих пор и использую Ctrl+Z, чтобы свернуть, и Ctrl+Z, чтобы равзернуть (run-fg-editor из tcsh), но последнее время че-то emacsclient и tramp все чаще, бо картинки и pdf-ки в консоли не отображаются.

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

Че-то ты так и не ответил как закомментировать 20 строчек в конфиге.

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

> Если тебе не нравиться, то перебинди.

Что и делаю.

> Но после этого ты не сможешь перемещаться побуквенно используя C-b (назад) и C-f (вперед).

Этим действительно кто-то пользуется ?

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

Зависит от ситуации. Лично мне периодически достаточно часто приходится переключаться между буферами и открывать новые файлы. Гораздо чаще чем перемещаться по буквам используя C-b и C-f. Для перемещений у меня есть стрелочки.

> Основное преимущество emacs перед vim - это возможность "на лету" программировать сам редактор, т.е. без перекомпиляции и перезапуска. Или оно уже больше не преимущество?

Данное преимущество представляется сомнительным. Редактор должен настраиваться один раз, а потом только использоваться. Правки конфигурации должны быть минимальными.

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