Re: как удалить пустую строку в конце файла? (или вправить мозги gedit)

2011-08-09 Нитка Игорь Гольденберг
09.08.2011 20:03, Serge Matveenko пишет:

>> А кто сказал, что именно leafpad поступает правильно? Например, если
>> такой test открыть в vim и сохранить, он тоже допишет LF. И надо очень
>> постараться, чтобы он сделал по-другому.

> А вы потом откройте этот файл снова в vim. Он ведь покажет эту
> добавленную строку, да? А gedit - нет.

Скорее наоборот, когда я открою оригинальный test, тогда vim в статусе
напишет [noeol], да и то до первого обновления строки статуса. В
остальном внешний вид последней строки что с EOL, что без никак не
отличается. Пустой строки в конце файла точно не появляется.

Если смотреть логически. Есть файл из N строк, где N > 1. Все строки в
нём (ну, кроме последней) всегда содержат перевод строки. Но в самих
этих строках ничего такого не видно. Почему же последняя должна быть
какой-то другой?

vim и gedit, видимо, используют подход, что если есть строка текста, то
в конце у неё уже есть невидимый LF. Как в regexp, строка размещена
между ^ и $, где конец строки $ материален :)

-- 
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru


Re: как удалить пустую строку в конце файла? (или вправить мозги gedit)

2011-08-09 Нитка Serge Matveenko
2011/8/9 Игорь Гольденберг :
> А кто сказал, что именно leafpad поступает правильно? Например, если
> такой test открыть в vim и сохранить, он тоже допишет LF. И надо очень
> постараться, чтобы он сделал по-другому.

А вы потом откройте этот файл снова в vim. Он ведь покажет эту
добавленную строку, да? А gedit - нет.


-- 
Serge Matveenko
se...@matveenko.ru
http://www.ohloh.net/accounts/lig
http://ru.linkedin.com/in/sergematveenko
-- 
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru


Re: как удалить пустую строку в конце файла? (или вправить мозги gedit)

2011-08-09 Нитка Игорь Гольденберг
09.08.2011 18:01, dimas пишет:

> ладно, объясню на примере: открываем leafpad, пишем "test", сохраняем
> файл.

>> 15:48:32 221 ~$ hd tmp/test
>   74 65 73 74   |test| 
> 0004

>> 15:48:47 221 ~$ gedit tmp/test
> # ничего не далем, жмем "сохранить"
>> 15:49:29 221 ~$ hd tmp/test
>   74 65 73 74 0a|test.| 
> 0005

А кто сказал, что именно leafpad поступает правильно? Например, если
такой test открыть в vim и сохранить, он тоже допишет LF. И надо очень
постараться, чтобы он сделал по-другому.

Текстовый файл без перевода строки в конце вообще неудобен. Например, он
плохо отображается с помощью cat. Хотя zsh это немного скрашивает.

snow:~% cat test
test%
snow:~% bash
[igold@snow ~]$ cat test
test[igold@snow ~]$

-- 
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru


Re: как удалить пустую строку в конце файла? (или вправить мозги gedit)

2011-08-09 Нитка Serge Matveenko
2011/8/9 Dmitry Agafonov :
>> пустую строку в конце даже не отображает
>
> Тут какие-то непонятки. Вы не путаете пустую строку и символ конца строки?

я проверял

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


-- 
Serge Matveenko
se...@matveenko.ru
http://www.ohloh.net/accounts/lig
http://ru.linkedin.com/in/sergematveenko
-- 
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru


Re: как удалить пустую строку в конце файла? (или вправить мозги gedit)

2011-08-09 Нитка dimas
> Тут какие-то непонятки. Вы не путаете пустую строку и символ конца строки?

ладно, объясню на примере: открываем leafpad, пишем "test", сохраняем файл.

>15:48:32 221 ~$ hd tmp/test
  74 65 73 74   |test|
0004
>15:48:47 221 ~$ gedit tmp/test
# ничего не далем, жмем "сохранить"
>15:49:29 221 ~$ hd tmp/test 
  74 65 73 74 0a|test.|
0005

http://asdfghjlk.narod.ru/images/test.png - вот разница в отображении файла в 
leafpad и gedit. т.е. gedit не показывает/не обрабатывает 0x0a в конце файла. 
таким образом, при добавлении данных в нормальной программе (да хотя бы echo 
"line2" >> test) текст начнется с новой строки (после финального 0x0a), а в 
gedit я по ctrl+end попадаю в конец последней строки, т.е. чтобы что-то 
добавить, я должен еще раз бить по энтеру (и добавлять еще один 0x0a до кучи к 
существующему). по-моему, не так все должно быть.

-- 
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru


Re: как удалить пустую строку в конце файла? (или вправить мозги gedit)

2011-08-09 Нитка Dmitry Agafonov
> пустую строку в конце даже не отображает

Тут какие-то непонятки. Вы не путаете пустую строку и символ конца строки?

-- 
Dmitry Agafonov ~ http://agafonov.pp.ru/
-- 
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru


Re: как удалить пустую строку в конце файла? (или вправить мозги gedit)

2011-08-09 Нитка dimas
> Вот что пишут: 
> https://answers.launchpad.net/ubuntu/+source/gedit/+question/8787
> https://bugs.launchpad.net/ubuntu/+source/gedit/+bug/379367
> Обход: https://github.com/dinkel/gedit-whitespace-remover/

вот за инфу спасибо. баг плюсанул, на досуге поставлю плагин или пересоберу 
пакет мб.
и да, я не против, и очень даже за, если пустая строка будет в fstab, в других 
конфигах, в файлах сырцов и прочем, где оно необходимо. но в моем случае имеют 
место простые текстовые файлы, которые читает человек, а не машина. и при 
печати, допустим, мне нет нужды тратить бумагу на пустые строку (везде по 
одной, а в сумме лишний лист, например). но что самое противное - он эу самую 
пустую строку в конце даже не отображает, как будто и нет ее. то есть, редактор 
кажет мне не все содержимое файла - следовательно, свои функции он уже не 
выполянет на 100%. грубо
 говоря, от меня наличие этой самой пустой строки просто скрывают. а это уже 
наглость, я считаю. имею я право видеть содержимое своего же файла в полном 
объеме, или как?

-- 
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru


Re: как удалить пустую строку в конце файла? (или вправить мозги gedit)

2011-08-08 Нитка Serge Matveenko
2011/8/8 Serge Matveenko :
> 2011/8/8 Alexander Smirnov :
>> По-моему мнению, если эта функциональность не задокументирована, и редактор
>> принудительно добавляет что-то, пусть даже по-его мнению безобидное, помимо
>> желания пользователя -- то это дефект ПО. И на этот счет, по правилам
>> хорошего тона в мире Свободного ПО, надо отписаться в соответствующий
>> баг-трекер. Если же это поведение задокументировано -- стоит посмотреть
>> другие редакторы, благо их выбор велик.
>
> С этим полностью согласен.
>
> Но пустая строка в конце файла должна быть. За gedit такого не
> замечал. Сейчас проверил: действительно. Мало того, даже при наличии
> пустой строки в конце файла он добавляет еще одну!
>
> 100% баг, надо писать в багтрекер.

Вот что пишут: https://answers.launchpad.net/ubuntu/+source/gedit/+question/8787

https://bugs.launchpad.net/ubuntu/+source/gedit/+bug/379367

Обход: https://github.com/dinkel/gedit-whitespace-remover/


-- 
Serge Matveenko
se...@matveenko.ru
http://www.ohloh.net/accounts/lig
http://ru.linkedin.com/in/sergematveenko
-- 
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru


Re: как удалить пустую строку в конце файла? (или вправить мозги gedit)

2011-08-08 Нитка Serge Matveenko
2011/8/8 Alexander Smirnov :
> По-моему мнению, если эта функциональность не задокументирована, и редактор
> принудительно добавляет что-то, пусть даже по-его мнению безобидное, помимо
> желания пользователя -- то это дефект ПО. И на этот счет, по правилам
> хорошего тона в мире Свободного ПО, надо отписаться в соответствующий
> баг-трекер. Если же это поведение задокументировано -- стоит посмотреть
> другие редакторы, благо их выбор велик.

С этим полностью согласен.

Но пустая строка в конце файла должна быть. За gedit такого не
замечал. Сейчас проверил: действительно. Мало того, даже при наличии
пустой строки в конце файла он добавляет еще одну!

100% баг, надо писать в багтрекер.


-- 
Serge Matveenko
se...@matveenko.ru
http://www.ohloh.net/accounts/lig
http://ru.linkedin.com/in/sergematveenko
-- 
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru


Re: как удалить пустую строку в конце файла? (или вправить мозги gedit)

2011-08-08 Нитка Alexander Smirnov

Serge Matveenko wrote:

2011/8/5 dimas:

как вариант - мб, можно отучить gedit от этой привычки?

Как вариант, можно приучить вас к привычке ставить в конце последней
строки файла перевод строки.

Чем эта строка отличается от всех остальных?

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


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


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


--
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru


Re: как удалить пустую строку в конце файла? (или вправить мозги gedit)

2011-08-08 Нитка Artem Pastukhov
+1.
Считается хорошим тоном заканчивать файл пустой строкой, насоклько я помню,
gcc рурается при отсутствии таковой.

2011/8/8 Serge Matveenko 

> 2011/8/5 dimas :
> > как вариант - мб, можно отучить gedit от этой привычки?
>
> Как вариант, можно приучить вас к привычке ставить в конце последней
> строки файла перевод строки.
>
> Чем эта строка отличается от всех остальных?
>
> Перевод строки в конце последней строки должен быть, например, потому
> что, если вы добавите новую строку, то для системы контроля версий это
> будет удаление одной строки и добавление двух, а не добавление одной,
> как это было раньше. Не хорошо.
>
>
> --
> Serge Matveenko
> se...@matveenko.ru
> http://www.ohloh.net/accounts/lig
> http://ru.linkedin.com/in/sergematveenko
> --
> ubuntu-ru mailing list
> ubuntu-ru@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
>
-- 
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru


Re: как удалить пустую строку в конце файла? (или вправить мозги gedit)

2011-08-08 Нитка Serge Matveenko
2011/8/5 dimas :
> как вариант - мб, можно отучить gedit от этой привычки?

Как вариант, можно приучить вас к привычке ставить в конце последней
строки файла перевод строки.

Чем эта строка отличается от всех остальных?

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


-- 
Serge Matveenko
se...@matveenko.ru
http://www.ohloh.net/accounts/lig
http://ru.linkedin.com/in/sergematveenko
-- 
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru


Re: как удалить пустую строку в конце файла? (или вправить мозги gedit)

2011-08-05 Нитка dimas
решил проблему:

function x0a {
for fl in [0-9]* ; do
if [ `tail -c1 "$fl" | xxd -ps` = "0a" ] ; then
   head -c -1 "$fl" > tmp ; mv "tmp" "$fl" ; fi;
done
}

-- 
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru