[C] в каком редакторе редактировать? [re: задчки на C]

Anturag

А вообще чтобы такого не возникало, можно придерживаться хотя бы
Оформление текста программы
Каждый оператор должен быть отделен пробелами, кроме унарных.
Каждый разделитель (",", ":", ...) должен быть отделен пробелом справа.
Все ключевые слова с параметрами (if (параметр for (параметры etc.) должны быть отделены пробелом от открывающейся скобки. Если ключевое слово/символ начала блока ставится на строке вместе с данной конструкцией, то оно/он должен быть отделен пробелом от закрывающейся скобки.
А indent'а уже не хватает? Зачем человек должен делать то, что умеет делать машина? Человек должен делать только то, что машина делать не умеет.

laki

А это смотря в чем писать. Есть люди которые до сих пор пишут в far-e.

koly

Есть люди которые до сих пор пишут в far-e
Нехрен в фаре писать! Все нормальные люди уже давно в vi першли!

Elina74

vi -
Уж лучше я буду всю жизнь писать в ФАРе.
Вы когда-нибудь видели интуитивно понятные среды, типа Visual Studio, Borland C++ Builder, да хотя бы Borland C++3.1 ?

ppplva

интуитивно-понятность не имеет ничего общего с эффективностью

Marinavo_0507

Видел однажды Visual Studio.
За 10 мин не смог найти, куда там код вбивать - интуиция не та, наверное.

artimon

Видели.
vim (не vi!) мне нравится больше. Хотя бы потому, что им можно польховаться в окне PuTTY.

maggi14

да, если за 10 минут из трех подокошек, которые в студии по умолчанию, не понял, в которое вбивать код (при условии, что в два окошка не удается вбить ничего) - наверно, с интуицией серьезные проблемы. Я сел - и сразу начал писать. При том, что до тех пор ни разу не работал в виндузе (только в досе) и ни разу не писал на си (только читал советские брошюрки).

Marinavo_0507

давно это было
вроде бы ни одного окна, куда сразу можно было вбивать, не было
надо ж ещё сказать, на каком языке это, и т.д.

maggi14

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

koly

А если хочешь научиться сразу писать правильные программы, то нужно пользоваться редактором echo!
Вот так это можно делать в никсах
#echo 'include <stdio.h>' > myprog.c
#echo 'int main ( int argc, char * argv[] ) ' >> myprog.c
и т. д.

Elina74

эффективностью
Стародумачи небрюхочувств ангсоц.
Вот по-моему, ФАР весьма эффективный редактор.
В нем есть все что нужно, ентер вводит новую строку, бекспейс стирает предыдущий символ, стрелочки на клаве двигают курсор туда, куда скажешь. Автоотступ есть. Есть выделение блоков стрелочками с шифтом. Есть простые операции копирования, вырезания, вставления, отмены последнего действия (такие же, как и в винде, во всех остальных приложениях). Подсветка синтаксиса для кучи языков есть.
А в vi все эти же действия делаются неинтуитивно понятно. С моей точки зрения.

a10027

эффективный редактор не обязан быть "интуитивно-понятным"

Elina74

Вы еще не сказали, что такое "такая охуенная эффективность", которая заставляет вас пожертвовать понятностью интерфейса.

Julie16

+1. пользуюсь mcedit, и очень доволен.

a10027

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

psihodog

+1
кроме того, vim -- это просто круто.

garikus

Если писать программы на некотрых языках программирования, то эффективность vi будет не лучше, чем у интуитивно-понятных специализированных редакторов для этих языков (например Delphi, Visual Studio).

voronina

А если хочешь научиться сразу писать правильные программы, то нужно пользоваться редактором echo!
могет быть я и не прав, но
cat > file.txt
здесь ctrl+D более шустрый способ набить файл, особенно если делаешь copy-paste

voronina

Вы еще не сказали, что такое "такая охуенная эффективность", которая заставляет вас пожертвовать понятностью интерфейса.
понять можно один раз. какая разница потом?
2 недели на усвоение рефлексов в vim, и забываешь, что сначала он кажется не удобным.

Anturag

+1. пользуюсь mcedit, и очень доволен.
Аналогично. mcedit/nedit (дома и на работе соответственно) + ddd + snavigator. Всё, для 99% прикладных задач ничего больше не нужно(подразумевается, что sh/perl/tcl/tickle/awk/sed и _grep_ тоже известны).

Papazyan

Вы забыли еще об Emacs! А в студии удобно только С++ набирать, да и то основной плюс - это автокомпилит, а возьми язык поэкзотичней и студия немедленно превращается в полный отстой.

enochka1145

Рекомендую Eclipse. Для C++ есть плагин CDT. Если что-то не нравится или язык экзотический, можно написать свой плагин.

evgen5555

Есть такая штука - WYSIWYG.
И она рулит.
Иначе зачем в виме делали такое позерство, как адекватная реакция на клавиши со стрелочками (типа даже прокрутка команд есть) и надписями Insert и Delete?

artimon

Я не понял твоего поста.
Как WYSIWYG соотносится с кнопочками на клавиатуре?

evgen5555

Как WYSIWYG соотносится с кнопочками на клавиатуре?
Типа, если это шутка, то довольно-таки плоская.

artimon

Это не шутка. Я действительно не понимаю, что связывает wysiwyg и клавиатуру.

evgen5555

Я не про всю клавиатуру говорил, если что. Я имел в виду клавиши навигации и редактирования.

maggi14

wytiwys - вот ю тайп из вот ю си

artimon

Хм. Интересно, а какую ещё реакцию vim'а на эти кнопки можно ожидать?
В конце концов, vim написан вовсе не для того, что б им было неудобно пользоваться.

evgen5555

Интересно, а какую ещё реакцию vim'а на эти кнопки можно ожидать?

^]]A, ^]]B, и так далее...

artimon

А смысл?
Ещё раз, vim существует не для того, что б им было неудобно пользоваться.

evgen5555

А смысл?

Типа, смысл в приучении программеров к командному стилю редактирования, как полной противоположности Visual Studio.
Почему же ed'ом никто не пользуется?

artimon

Ты вторую строчку принципиально игнорируешь?

yolki

Хрен! если нету фара - в vim. если нету vim - в фаре
Не гнать на фар!

psihodog

Согласен.
Но у меня только TC, поэтому vim.

laki

полностью согласен.
а еще одна из фишек вертикальное выделение. еще ни одного похожего редактора не встречал

ppplva

Что это за зверь - вертикальное выделение ? Ctrl-V в виме ?

Dasar

> Что это за зверь - вертикальное выделение ?
Это которое - Alt + мышь в word-е

laki

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

ava3443

Развели недофлейм какой-то по поводу редакторов
Почитать старые флеймы на тему vim vs emacs на каком-нибудь LOR и то интереснее и полезнее будет: потому как там хоть часть народу была хороша знакома с обоими редакторами и аргументы соответствующие были. А тут vim в основном ругает народ, не осиливший его или не захотевший осилить

Olyalyau

echo это только половина редактора. Ещё нужны head и tail.
Для глобального поиска -- grep, для замены ed или awk.

Olyalyau

В нем есть все что нужно, ентер вводит новую строку, бекспейс стирает предыдущий символ, стрелочки на клаве двигают курсор туда, куда скажешь. Автоотступ есть. Есть выделение блоков стрелочками с шифтом. Есть простые операции копирования, вырезания, вставления, отмены последнего действия
Да это ж vim!
С поправкой: откат/накат (стековый) не только последнего действия а всех.
+ выделение синтаксиса (для любого языка)
+ автодополнение
+ гибкая система замены, работающая с регулярными выражениями
+ поддержка редактирования в одной кодировке, а сохранения в другой
+ ...

Olyalyau

Объясняю:
интуитивная понятность = малое время обучения всем доступным возможностям данного инструмента; чаще всего соответствует инструментам с малым спектром возможностей;
эффективность = малое время, затрачиваемое на выполнение конкретной работы данным инструментом; чаще всего соответствует инструментам сложным, требующим сравнительно долго обучения работы с ними; а также (в случае программ) -- не требующим при работе низкоскоростных интерфейсов (например, мышей)
PS. "Единственным интуитивно понятным интерфейсом обладает материнская грудь". Не помню кто сказал.

Olyalyau

И куда же она рулит?
В WYSIWYG редакторе Word после печати документа получается то же самое безобразие, которое было на экране.
В не WYSIWYG TeX'е после печати получается результать превосходящий по качеству многое
вполне приличные книги.

Olyalyau

Это ты не настроил терминал. Или точнее, это делатели твоего дистрибутива настроили
vim под другой терминал.
Штука такая, что в отличие от Студио и прочей виндоус дряни,
нормальные программы работают на разных архитектурах. Это по той простой причине, что
здравомыслящие люди не хотят изучать один редактор для работы на домашнем писюке,
другой -- для работы на рабочей станции, третий -- для работы с мейнфреймом, четвёртый -- ...
По этому они берут один (например, vi) и компилируют его под этими разными системами.
Но у каждой из этих систем, своя клавиатура. И кнопочки везде разные. У PC кнопочки тебе привычны, у альфы -- они другие, у vt200 -- третьи. Так что vi'ю приходится корректно обрабатывать
все возможные клавиатуры (а также такую стандартную ситуацию, когда сам vi запущен на одной
машине, а человек сидит по ssh или telnet'у на другой машине с другой клавиатурой).
Так что ты просто расскажи vim'у (который вырос из vi'я) какие кнопочки у тебя есть и что делать, когда ядро посылает ему эти
^]]A, ^]]B
эскейп последовательности.

Olyalyau

ed очень даже пользуются. В скриптах. Потому что это строковый редактор, а не экранный.

garikus

интуитивная понятность = малое время обучения всем доступным возможностям данного инструмента; чаще всего соответствует инструментам с малым спектром возможностей;
В большинстве случаев нужна только базовая функциональность, т.е. базовый набор интуитивно-понятных простых операций. С помощью этого набора можно делать почти всё.
Более сложные и нужные функции больше зависят от типа редактируемого текста - например, синтаксический анализатор для конкретного языка программирования.

bastii

+1

yolki

"Видел один текстовый редактор - видел их все" не совсем правильный принцип.
vim достаточно понятен, быть может не интуитивно, но легко воспринимаем.
Благо в комплекте идёт vimtutor - это обычный текстовый файл, пройдя его быстро узнаёшь базовые возможности. файл небольшой, осилить его можно минут за 30, как в нём написано.
например, вставка/выделение: найдите в хелпе вашего любимого редактора место, в котором описано "как выделить текст", "как скопировать текст в буфер", "как вставить текст из буфера"..

Dasar

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

yolki

Есть редактор, создатели которого гордятся тем, что у них энтер не вводит новую строку, а переходит на следующую (не вставляет пустой строки и не разрывает строку, если нажать энтер посередине строки).
Знаешь такой?

bastii

А оно кому-то нужно? Ни разу не пользовался.

yolki

Может, мало программил или не на тех языках, где это полезно.
Лично мне вертикальное выделение сильно помогает в C, Delphi, TeX.
Очень полезно вертикальные блоки пользовать, когда надо столбец пробелов вставить, например "в строках с 10 по 110 вставить 4 пробела на 7 позицию" - вертикальным блоком на "ура", можно не только пробелы.. запятые-скобки-точкисзапятой массово вставлять тоже помогает.

bastii

Интересно, что ты там такое прогаешь на С и Дельфи.

ava3443

> в строках с 10 по 110 вставить 4 пробела на 7 позицию
Ни разу не возникало такой задачи. Что это за язык такой своеобразный, где такое может понадобиться? Не знаю, чего там в Delphi, но для C/C++, равно как и для LaTeX не вижу применения этой фиче.

ppplva

Комментарии в перле, например.

ava3443

vim позволяет закомментарить нужное число строк как минимум в C, C++, PHP, Perl, TeX, Sh, LISP, Python, HTML, XML, Java без вертикального выделения.
http://www.vim.org/scripts/script.php?script_id=4
http://www.vim.org/scripts/script.php?script_id=23

yolki

Например, сделать такой код:

const
//
// Типы операторов
// ===============
//
// Анализатор C,C++
// ----------------
Op_C_Unknown = 1000; // Неопределён
OP_C_Decl = 1001; // Объявление переменной
OP_C_Null = 1002; // Пустой оператор
OP_C_Expr = 1005; // Арифметическое выражение
OP_C_If = 1006; // Условный оператор
OP_C_For = 1007; // Оператор цикла
OP_C_Goto = 1011; // Оператор перехода
OP_C_Complex = 1012; // Составной оператор
OP_C_Break = 1013; // Оператор выхода из цикла
OP_C_Continue = 1014; // Оператор продолжения цикла
OP_C_Return = 1015; // Оператор выхода из функции
OP_C_Fork = 1016; // Ветвление
OP_C_Fictive = 1017; // Фиктивный оператор после метки
OP_C_CaseEntry= 1018; // Фиктивный оператор для case, default
OP_C_Asm = 1019; // Ассемблерная вставка
OP_C_Try = 1020; // Обработчик исключений
OP_C_Catch = 1021; // Перехват исключений
OP_C_Throw = 1022; // Возмущение исключения
OP_C_Switch = 1023; // Оператор выбора
OP_C_Do = 1024; // Оператор do
OP_C_While = 1025; // Оператор while
//
// Анализатор Pascal-Delphi
// ------------------------
Op_Pas_Unknown = 2000; // Неопределён
OP_Pas_Decl = 2001; // Объявление переменной
OP_Pas_Null = 2002; // Пустой оператор
OP_Pas_Expr = 2003; // Арифметическое выражение
OP_Pas_If = 2004; // Условный оператор
OP_Pas_For = 2005; // Оператор цикла
OP_Pas_Goto = 2006; // Оператор перехода
OP_Pas_Complex = 2007; // Составной оператор
OP_Pas_Break = 2008; // Оператор выхода из цикла
OP_Pas_Continue = 2009; // Оператор продолжения цикла
OP_Pas_Fork = 2010; // Ветвление
OP_Pas_Fictive = 2011; // Фиктивный оператор после метки
OP_Pas_Asm = 2012; // Ассемблерная вставка
OP_Pas_Try = 2013; // Начало секции перехвата исключений
OP_Pas_Except = 2014; // Перехват исключений
OP_Pas_Finally = 2015; // ...
OP_Pas_Raise = 2016; // Возмущение исключения
OP_Pas_Case = 2017; // Оператор выбора
OP_Pas_Repeat = 2018; // Оператор repeat
OP_Pas_While = 2019; // Оператор while
OP_Pas_Call = 2020; // Вызов функции или процедуры
OP_Pas_Ass = 2021; // Оператор присваивания
OP_Pas_Exit = 2022; // Оператор выхода из функции
OP_Pas_Empty = 2023; // Пустой оператор
OP_Pas_Label = 2024; // Метка
Op_Pas_CaseLabel= 2025; // Метка альтернативы в операторе case
Op_Pas_With = 2026; // Оператор With
OP_Pas_Halt = 2027; // Функция Halt
...
OpNames: array [0..SizeOPNames-1] of TOPName
=(
// C, C++
(OpID:Op_C_Unknown; FullName:'Неопределён'; ShortName:'~~~'
(OpID:OP_C_Decl; FullName:'Объявление переменной'; ShortName:'Decl'
(OpID:OP_C_Null; FullName:'Пустой оператор'; ShortName:'[]'
(OpID:OP_C_Expr; FullName:'Арифметическое выражение'; ShortName:'Expr'
(OpID:OP_C_If; FullName:'Условный оператор'; ShortName:'If'
(OpID:OP_C_For; FullName:'Оператор цикла'; ShortName:'For'
(OpID:OP_C_Goto; FullName:'Оператор перехода'; ShortName:'Goto'
(OpID:OP_C_Complex; FullName:'Составной оператор'; ShortName:'{...}'
(OpID:OP_C_Break; FullName:'Оператор выхода из цикла'; ShortName:'Break'
(OpID:OP_C_Continue; FullName:'Оператор продолжения цикла'; ShortName:'Continue'
(OpID:OP_C_Return; FullName:'Оператор выхода из функции'; ShortName:'Return'
(OpID:OP_C_Fork; FullName:'Ветвление'; ShortName:'-<'
(OpID:OP_C_Fictive; FullName:'Фиктивный оператор после метки'; ShortName:'Label'
(OpID:OP_C_CaseEntry; FullName:'Фиктивный оператор для case, default';ShortName:'SwLabel'
(OpID:OP_C_Asm; FullName:'Ассемблерная вставка'; ShortName:'Asm'
(OpID:OP_C_Try; FullName:'Обработчик исключений'; ShortName:'Try'
(OpID:OP_C_Catch; FullName:'Перехват исключений'; ShortName:'Catch'
(OpID:OP_C_Throw; FullName:'Возмущение исключения'; ShortName:'Throw'
(OpID:OP_C_Switch; FullName:'Оператор выбора'; ShortName:'Switch'
(OpID:OP_C_Do; FullName:'Оператор do'; ShortName:'Do'
(OpID:OP_C_While; FullName:'Оператор while'; ShortName:'While'
// Pascal-Delphi
(OpID:Op_Pas_Unknown; FullName:'Неопределён'; ShortName:'~~~'
(OpID:OP_Pas_Decl; FullName:'Объявление переменной'; ShortName:'Decl'
(OpID:OP_Pas_Null; FullName:'Пустой оператор'; ShortName:'[]'
(OpID:OP_Pas_Expr; FullName:'Арифметическое выражение'; ShortName:'Expr'
(OpID:OP_Pas_If; FullName:'Условный оператор'; ShortName:'If'
(OpID:OP_Pas_For; FullName:'Оператор цикла'; ShortName:'For'
(OpID:OP_Pas_Goto; FullName:'Оператор перехода'; ShortName:'Goto'
(OpID:OP_Pas_Complex; FullName:'Составной оператор'; ShortName:'{...}'
(OpID:OP_Pas_Break; FullName:'Оператор выхода из цикла'; ShortName:'Break'
(OpID:OP_Pas_Continue;FullName:'Оператор продолжения цикла'; ShortName:'Continue'
(OpID:OP_Pas_Fork; FullName:'Ветвление'; ShortName:'-<'
(OpID:OP_Pas_Fictive; FullName:'Фиктивный оператор после метки'; ShortName:'Label'
(OpID:OP_Pas_Asm; FullName:'Ассемблерная вставка'; ShortName:'Asm'
(OpID:OP_Pas_Try; FullName:'Начало секции перехвата исключений'; ShortName:'Try'
(OpID:OP_Pas_Except; FullName:'Перехват исключений'; ShortName:'Except'
(OpID:OP_Pas_Finally; FullName:'...'; ShortName:'Finally'
(OpID:OP_Pas_Raise; FullName:'Возмущение исключения'; ShortName:'Raise'
(OpID:OP_Pas_Case; FullName:'Оператор выбора'; ShortName:'Case'
(OpID:OP_Pas_Repeat; FullName:'Оператор repeat'; ShortName:'Repeat'
(OpID:OP_Pas_While; FullName:'Оператор while'; ShortName:'While'
(OpID:OP_Pas_Call; FullName:'Вызов функции или процедуры'; ShortName:'Call'
(OpID:OP_Pas_Ass; FullName:'Оператор присваивания'; ShortName:':='
(OpID:OP_Pas_Exit; FullName:'Оператор выхода из функции'; ShortName:'Exit'
(OpID:OP_Pas_Empty; FullName:'Пустой оператор'; ShortName:'[]'
(OpID:OP_Pas_Label; FullName:'Метка'; ShortName:'Label'
(OpId:Op_Pas_CaseLabel;FullName:'Метка альтернативы в операторе case';ShortName:'CaseLabel'
(OpID:Op_Pas_With; FullName:'Операторный блок With'; ShortName:'With'
(OpID:OP_Pas_Halt; FullName:'Функция Halt'; ShortName:'Halt'

bleyman

Такой код легче делать регексами/киборд макросами. Я проверял.

yolki

дело тут вот в чём. этот код набирался не сразу, а развивался.
сначала были константы

name = value; //comment

Потом потребовалась функция, которая бы по значению value возвращала название константы (=comment)
пусть у неё тривиальный код, например:

...
case id of
...
value : Result := 'comment';
...

как это сделать кеймакросами/регексами?
В С/С++ я знаю извращения другого типа.. За примерами далеко ходить не надо. берём gcc :
в файле tree.def

...
DEFTREECODE (INTEGER_CST, "integer_cst", 'c', 0)
/* Contents are in TREE_REAL_CST field. */
DEFTREECODE (REAL_CST, "real_cst", 'c', 0)
/* Contents are in TREE_REALPART and TREE_IMAGPART fields,
whose contents are other constant nodes. */
DEFTREECODE (COMPLEX_CST, "complex_cst", 'c', 0)
/* Contents are in TREE_VECTOR_CST_ELTS field. */
DEFTREECODE (VECTOR_CST, "vector_cst", 'c', 0)
...

А вот так оно используется:

#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE,
const char tree_code_type[] = {
#include "tree.def"
'x',
#include "c-common.def"
};
#undef DEFTREECODE
/* Table indexed by tree code giving number of expression
operands beyond the fixed part of the node structure.
Not used for types or decls. */
#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH,
const unsigned char tree_code_length[] = {
#include "tree.def"
0,
#include "c-common.def"
};
#undef DEFTREECODE
/* Names of tree components.
Used for printing out the tree and error messages. */
#define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME,
const char *const tree_code_name[] = {
#include "tree.def"
"@@dummy",
#include "c-common.def"
};
#undef DEFTREECODE


Но в дельфях такое не катит. посему... ручками, ручками..

Dasar

Рег. выражениями тоже можно, но мороки больше пока выражение придумываешь/отлаживаешь
copy/paste, а дальше заменяешь:
:b+(\w+):b+=:b+(\w+);:b+//(\w+)
\1 : Result := '\3';

rosali

Рег. выражениями тоже можно, но мороки больше пока выражение придумываешь/отлаживаешь
copy/paste, а дальше заменяешь:
:b+(\w+):b+=:b+(\w+);:b+//(\w+)
\1 : Result := '\3';
Жжошь! А что по твоему тогда означает "Рег. выражениями"?
PS. Написал бы уж тогда
\1 : Result := '\3'; //\2
а то непонятно зачем \2 то нужен

bleyman

> как это сделать кеймакросами/регексами?
Подождика. Ты, кажется, не знаешь, что такое "кеймакрос"!
Объясняю. В своём любимом вижуальнике ты ставиш курсор на начало очередной строчки и жмёшь ctrl+alt+R.
Потом ты аккуратно преобразуешь строчку к нужному виду. Аккуратно == таким образом, чтобы действия не зависили от длины слов, например, используя комбинации (ctrl+rarrow/ctrl+larrow (word right/left. В результате произведённых действий курсор должен оказаться в начале следующей строчки. Замечу, что в процессе строчка может превратиться в несколько строк, можно использовать клипборд, сёрч етс. Потом снова жмёшь ctrl+alt+R.
Потом нужное количество раз жмёшь ctrl+alt+P, редактор каждый раз проигрывает записанную последовательность нажатий.
+ продвинутый метод - залезаешь в макросы, выдираешь оттуда свежезаписанный (он выглядит как процедура на VB сохраняешь куда-нить и подправляешь если хочется чё-нить подправить.
Наличие подобной возможности делает вертикальное выделение совершенно не нужным.

Dasar

> А что по твоему тогда означает "Рег. выражениями"?
Да, я в доказательство своих слов привел пример такого рег. выражения.
А ты что подумал?
> а то непонятно зачем \2 то нужен
Чтоб был

rosali

Да, я в доказательство своих слов привел пример такого рег. выражения.
Ну я потом уже понял вообще писать регулярные выражения именно для этих целей не очень трудно, в большинстве случаев достаточно \s*(\S*)\s*(\S*)... И все таки я пришел к выводу, что perl -n -e лучше, есть вещи которые регекспами не выражаются.

evgen5555

Это ты не настроил терминал.
Стандартная проблема юнексойдов.
Гипотетически у меня нет времени настраивать терминал, и я практически не знаю как это делается (терминфо с термкапами ниасиливаю).

У PC кнопочки тебе привычны, у альфы -- они другие, у vt200 -- третьи.
А вот ненавистная винда делает так, чтобы они были привычны пользователю на _всех_ системах. Так ли это сложно? Думаю, нет. Зачем ебаться с настройкой каждый раз при переходе на другую систему?

evgen5555

Такой код легче делать в редакторах более высокого уровня абстракции.

sergey_m

А вот ненавистная винда делает так, чтобы они были привычны пользователю на _всех_ системах.
Ты хотел сказать: на _всех системах который начинаются на Windows_.

Olyalyau

В vi команда
:.:s/^[^=]*=[ \t]*\([^;]*\)[^\/]*\/\/\(.*\)$/\1 : Result := '\2';
делает из строки
name = value; //comment
строку
value : Result := 'comment';
Регулярные выражения рулят.

Olyalyau

Стандартная проблема юнексойдов.
Гипотетически у меня нет времени настраивать терминал, и я практически не знаю как это делается (терминфо с термкапами ниасиливаю).
А я и не знал, что у меня есть такая "стандартная проблема"
Я ни разу не настраивал терминалы, хотя и знаю, где это делается. И у меня всё работает на ура.
Может, дело в карме?
А вот ненавистная винда делает так, чтобы они были привычны пользователю на _всех_ системах. Так ли это сложно? Думаю, нет. Зачем ебаться с настройкой каждый раз при переходе на другую систему?
Винда не запускается на альфе. Попытки были, но они ничем не закончились. Винда ничего не знает
про VT200. Допустим я запускаю телнет с VT200 на винду... уже смешно?
А в природе ещё встречаются X Terminal'ы. Если я вхожу с такого на UNIX машину, вижу привычную оконную
систему - X Windows. Равно как и при входе по ssh с одной UNIX машины на другую.
Попробуй войти удалённо с чего угодно на Windows машину и запустить оконное приложение.
Я тут недавно сидел на Sparc'е, что-то не нашёл там ни word'а, ни даже notepad'а. А вот vi там есть.
У моего отца ноут маковский с Mac OS X (больше известной как FreeBSD) и там тоже есть vi!
Повторяю свой вопрос: зачем изучать новый редактор на каждой платформе?

Marinavo_0507

Равно как и при входе по ssh с одной UNIX машины на другую.
Попробуй войти удалённо с чего угодно на Windows машину и запустить оконное приложение.
В Windows оконное приложение на удалённой машине ещё и звук будет обычным образом играть (на твоём терминале, а не на сервере в стойке в запертом помещении и доступ к локальным дискам этого "терминала" можно ему дать, говорят. Про принтеры и прочую периферию не спрашивал.

Marinavo_0507

Ах да, забыл мегафичу - можно отсоединиться от сессии, а потом зайти с другого терминала, и она продолжится.

Olyalyau

А по-подробнее можно?
Как это реально делается?

artimon

ну screen тоже не вчера придумали. Или ты имеешь в виду именно окошечки (иксы)?

artimon

В меню выхода есть пункт Disconnect session или как-то так.

fortuna77-90

Как оно в UNIX'е делается, я знаю. А вот про то, что это и под Windows'ом бывает --
в первый раз слышу. Про Windows и спрашивал, как оно там делается.

Trams

Remote Desktop видимо имелся в винду (для Windows Terminal Server, который есть на каждой серверной версии, и даже урезанный в WinXP). подключение удалённых дисков, принтеров, serial ports, дисплей до 24bit color и прочее

Marinavo_0507

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

korsar0156

вперемешку нельзя.
весь РД это отдельное окно.

Marinavo_0507

нет в мире совершенства, всё сосёт

Trams

можно запустить сколько хочешь Remote Desktop'ов, а в них уже сколько надо окон %)
зы. все операционные системы - кал ©virgin
Оставить комментарий
Имя или ник:
Комментарий: