Почему старые редакторы, такие как Vim и Emacs, показывают разницу между файлом и буфером в интерфейсе? - PullRequest
12 голосов
/ 12 октября 2008

Мой вопрос имеет смысл? Используя Vim или Emacs, вы понимаете, что интерфейс предоставляет представление кода состояния файла, который вы редактируете в буфере, файл является дисковым хранилищем, из которого вы можете заполнить буфер или записать буфер. Все эти вещи должен знать программист, но когда он просто редактирует текст, почему он выставляется? Любой новый редактор просто говорит вам: «Вот файл. Отредактируйте его».

Да, я понимаю технические значения , но это не мой вопрос. Это вопрос даже не о том, стоит ли это делать или нет. Vim и Emacs - наши два самых старых редактора, которые сегодня широко используются, и они разделяют это поведение. Я не знаю ни одного нового редактора, который бы делал то же самое. Когда редакторы прекратили это делать и почему?

Ответы [ 7 ]

30 голосов
/ 12 октября 2008

Для начала Emacs использует множество буферов, которые не связаны ни с одним файлом. Каждый раз, когда вы открываете каталог, читаете почту, открываете терминал, компилируете программу, запускаете интерактивный сеанс Python или подключаетесь к базе данных, вы получаете буфер. Следовательно, основной единицей работы Emacs является буфер, а не файл, и та же логика применима к Vim.

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

10 голосов
/ 12 октября 2008

ОК, вот мой странный философский ответ:

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

Думаешь, это устарело? Единственное место, где идея возвращается с удвоенной силой, - браузер , где у вас нет 1-1 соответствия между вкладками и веб-страницами. Вместо этого внутри каждой вкладки вы можете перемещаться вперед и назад между несколькими страницами. Никто не попытался бы создать интерфейс типа MDI для Интернета, где каждая страница имела свое собственное внутреннее окно. Это было бы невозможно использовать. Это просто не будет масштаб .

Лично я думаю, что IDE становятся слишком сложными в наши дни, и статическая привязка между документами и буферами является одной из причин этого. Я ожидаю, что в какой-то момент произойдет прорыв, когда они перейдут к браузерной модели с вкладками-буферами, где:

a) вы сможете создавать гиперссылки между несколькими файлами в одном буфере / вкладке (и будет кнопка возврата и т. Д.)

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

Другими словами, большая часть модели Vim / Emacs, за исключением того, что она более приспособлена к открытиям, которые делают браузеры.

6 голосов
/ 12 октября 2008

Потому что несколько буферов могут показывать вам разные представления одного и того же файла. Я не знаю других редакторов, но это верно для Emacs. А что ты имеешь в виду именно под Старым?

1 голос
/ 12 октября 2008

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

0 голосов
/ 12 октября 2008

Потому что разработчики этих редакторов не хотели скрывать детали реализации от пользователей.

0 голосов
/ 12 октября 2008

Я думаю, я просто старый хрен (в несгибаемого ВИМ лагере), но и другие пакеты редактирования я использую, такие как MS Word или Open Office, сохранять различие между копией файла, I» редактирование и последняя сохраненная версия. Это совершенно бесценно - я не хочу, чтобы редактор растоптал мою последнюю хорошую версию, пока я не буду готов к этому. Действительно, есть неплохой шанс (скажем, один на тысячу), что я создам новый файл с буфером, на котором я редактирую.

С другой стороны, также полезна возможность создания образа файла путем чтения нескольких файлов (либо нескольких копий одного и того же файла, либо копий нескольких разных файлов). В других документах есть похожие объекты.

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

0 голосов
/ 12 октября 2008

Я думаю, что новые редакторы прекратили делать это по причинам, которые вы указали, что это просто абстракция, которая мешает. Кроме того, большинство современных редакторов имеют неограниченную отмену, поэтому идея «буфера» неявна.

...