Предположим, что у нас есть два текстовых документа:
- Наш первый файл содержит "
hi
" в качестве текста. - Наш второй файл содержит "
hi
" в качестве текста.
Когда мы открываем эти два файла в gedit, vi или vim, эти два файла визуально идентичны во всех отношениях.
Однако, когда мы запускаем xxd
в файлах, мы получаем следующее:
- Содержимое шестнадцатеричного файла нашего первого файла:
6869
- Содержимое шестнадцатеричного кода нашего второго файла:
6869 0a
Ага! Там невидимая новая линия. В vim, если мы уделяем достаточно пристальное внимание строке состояния и понимаем, что означает [noeol]
, тогда мы можем подобрать это, но в gedit оба файла открываются точно так же!
В небольшом опросе, когда я попросил людей различать два файла, используя только gedit или vim, они потерпели неудачу в течение 100% времени. Когда я попросил их выполнить ту же задачу, используя листовую панель или emacs, они преуспели в 100% случаев.
Я понимаю, что vi и gedit хотят добавить новую строку для каждого создаваемого файла (и я признаю, что, вероятно, есть преимущества для этого). Я не понимаю, почему gedit и vim считают визуальное скрытие этой новой строки от своих пользователей полезной? Особенно, когда такое поведение потенциально чрезвычайно разрушительно...
(Возьмем, к примеру, двух C-программистов, которые видят содержимое этих двух файлов одинаково в своем текстовом редакторе vi/gedit, а затем, предполагая, что они видят, они получают, продолжайте писать содержимое в массив
char greeting[2]
. Первый программист, записывающий первый файл, хотя и немного неряшливый с его кодом, продолжает славу и удачу, но второй программист, пишущий второй файл, умирает в нищете, смущен и недоуменен этим невидимым (и предотвратимым ) переполнение стека.)
Итак, молитесь, каковы преимущества того, чтобы текстовые редакторы, такие как vim и gedit, добавляли невидимые строки в конце каждого создаваемого ими документа, а затем продолжайте скрывать эти новые строки от пользователя, так что истинное содержимое этих файлов заметны только с помощью других текстовых редакторов?