惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
小众软件
小众软件
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - Franky
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog
Jina AI
Jina AI
博客园 - 聂微东
S
SegmentFault 最新的问题
量子位
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Редактор строк в BASIC на ПЭВМ Корвет
yuukoku · 2026-05-04 · via Все публикации подряд на Хабре

Или почему на Корвете один из самых упоротых редакторов строк

BASIC в режиме редактирования введённой ранее строки

BASIC в режиме редактирования введённой ранее строки

Пролог

Я начинал своё знакомство с персональными компьютерами на ZX Spectrum 48. Он предоставлял довольно специфический, но вполне удобный и быстрый редактор програм. ZX Spectrum 128 уже имел полноценный полноэкранный редактор. На Commodore64 редактор тоже не заставлял чувствовать себя калекой. Даже на суровом отечественном БК0010-01, редактор позволяет вполне сносное редактирование и копирование ранее введённой строки. Что же касаемо BASIC`а Корвета

Особенности

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

Во-вторых, редактор строк настолько уникален и курьёзен, что достоин отдельной статьи, без мануала с ним не разобраться, проще с нуля строку переписать, чем научиться редактировать методом тыка. Я использовал для ознакомления отличную книжку “Знакомьтесь персональная ЭВМ Корвет”. Там не даётся краткой справки, и нужно вдумчиво прочитать всю главу “Редактирование текста программы” на стр. 104.

Обложка книги Знакомьтесь персональная ЭВМ Корвет

Обложка книги Знакомьтесь персональная ЭВМ Корвет

Глава, без которой было бы сложно разобраться...

Глава, без которой было бы сложно разобраться...

Корвет, 8-разрядный компьютер под управлением OS CP/M выпускался серийно с 1988 года, а vi (предшественник текстового редактора vim) под Unix, написан в 1976 году. А ещё в 1987 году был написан клон vi под Atari ST, редактор Stevie. Казалось бы, какая между ними может быть связь?

Vi имеет два режима: командный и модальный, В первом вводятся команды, Во втором режиме правится текст по условиям выбранной команды. В редакторе строк Корвета такой же принцип. даже присутствуют цифровые модификаторы перед некоторыми командами. Если бы тут ещё было копирование строки через изменение её номера, и была копипаста через буфер обмена выделенных фрагментов внутри строки, я бы назвал это уникальным крутым редактором, освоив который, можно смело смотреть на другие реализации, как пользователи vim смотрят на пользователей nano.

Цитаты из книги

В книжке очень своеобразные картинки, это почти маскот Корвета, нужен такой мерч

В книжке очень своеобразные картинки, это почти маскот Корвета, нужен такой мерч

«Прежде чем переходить к редактированию, приготовьтесь к неожиданностям» — гласит начало главы книги про редактор строк BASIC на Корвете. Но vim`овода этим не испугаешь!

Редактор BASIC строк Корвета настолько суров, что «удаляемые символы отображаются на экране, чтобы вы точно видели, что вы стёрли».

Приступим к изучению редактирования

Даже тот функционал, что есть, представляет собой если не практический, то исторический интерес. Хотя лично я планирую писать на BASIC и интерес чисто практический, для повышения КПД работы.

Для редактирования строки надо ввести команду EDIT n, где n — это номер строки. Либо EDIT . — где точка означает редактирование последней исполненной строки.

После нажатия клавиши ВК появится номер редактируемой строки и BASIC перейдёт в командный режим, где ряд клавиш вызывает команды либо их модификаторы, а на все остальные пищит ошибка. Тыкаясь наугад можно безвозвратно испортить строку.

Кстати, интересны причины, почему для отечественного компьютера названия действий режимов брались из английского языка и почему нельзя вводить их в русской раскладке. Если бы я знал, что даже советский ПЭВМ в BASIC в режиме редактирования строк дискриминирует русскую раскладку, и редактируя строку на русском, для вызова управляющих команд необходимо каждый раз переключаться на LAT, я бы не так роптал о неудобности редактора текста vim в аналогичных ситуациях. Казалось бы, почему нельзя опрашивать или код самой клавиши, или оба символа на ней? В vim понятно почему, а почему на Корвете так не очень понятно.

Значения управляющих клавиш:

  • ВК (Возврат Каретки, она же Enter)

  • ПРФ/ESC (возврат в командный режим из модального)

  • ПРОБЕЛ (печать следующего символа в редактируемой строке)

  • L (LIST)

  • D (DELETE)

  • C (CHANGE)

  • I (INSERT)

  • X (без названия, назову eXPAND)

  • H (без названия, назову HALF)

  • S (SEARCH)

  • K (KILL)

  • A (ABORT)

  • Q (QUIT)

  • E (EXIT)

СОВЕТ: вводить команды следует строго только в английской раскладке клавиатуры! После выполнения команды, если это конец редактирования - жмите ВК, а если хотите применить ещё команды, то возвращайтесь в командный режим по клавише ПРФ/ESC. Её полезно жать как можно чаще для контроля командного режима, почти как Esc в vim =)

Разберём их подробно

ВК (Возврат Каретки, она же Enter) Завершает режим редактирования с сохранением изменений и возвратом в интерпретатор команд.

ПРФ/ESC (возврат в командный режим из модального) После применения ряда команд вы попадаете в модальный режим и все буквенно-алфавитные клавиши просто выводят свои символы на экран. Чтобы вернутся обратно в командный режим нужно нажать клавишу ПРФ/ESC.

ПРОБЕЛ (печать следующего символа в редактируемой строке) выводит содержимое строки, на каждое нажатие по одному символу. Если зажать, то посимвольно выведет всю строку. Но для этого лучше использовать следующую команду. Если перед пробелом ввести число nn, то курсор выведет и сместится сразу на nn символов.

L (LIST) Сначала показывается только номер редактируемой строки, чтобы увидеть её целиком надо нажать [L]. Курсор редактирования при этом сместится в начало. Если вместо этого на экране напечаталась “L”, то сотрите её и выйдите из модального режима по клавише ПРФ/ESC.

D (DELETE) Удалить символ под курсором. Если перед командой ввести число nn, то она применится nn раз. (Почти как в vi/vim) Удобное применение — вывести строку: [L], затем ПРОБЕЛОМ переместить курсор в начало удаляемого фрагмента, подсчитать количество удаляемых символов, ввести число и [D].

C (CHANGE) Заменить символ под курсором на символ введённый следующим. Если перед командой ввести число nn, то будет замена сразу nn символов. При переполнении указанного буфера на большинстве клавиш будет раздаваться звуковой сигнал и далее ничего не будет вводиться, пока не нажмёте возврат в командный режим по ПРФ/ESC или завершение по ВК. Но осторожно! При переполнении заданного буфера возможна потеря всего, что в строке правее. Меня удалось это с латинской буквой “H”.

I (INSERT) Вставить один или более символов. Простой ввод текста с вставкой его в позицию курсора (а двигать его вправо можно клавишей ПРОБЕЛ) Стирать лишнее введённое можно забоем (BackSpace, клавиша со стрелкой влево, выше клавиши ВК), по завершению либо выйти с сохранением по ВК, либо вернуться в командный режим по ПРФ/ESC и по клавише [L] посмотреть принятые изменения.

X (без названия, назову eXPAND) Вывести всю строку, поместить курсор в её конец и перейти в модальный режим ввода текста. Возврат в командный режим по ПРФ/ESC. Строка BASIC в Корвете может иметь длину 255 символов, но ввести при написании строки можно только 250. Чтобы ввести оставшиеся 5, как раз поможет этот режим. Например: [EDIT] nn, [X]12345[ВК]. Также можно использовать команду [I] (INSERT).

H (без названия, назову HALF) Стереть все символы справа от курсора и заменить их своей строкой или символом. Затем можно выйти по ВК или вернуться в командный режим по ПРФ/ESC.

S (SEARCH) Мощная команда, оправдывающая этот vim-like режим редактирования. Поиск в строке и переход к символу, который будет введён следующим. Если применить числовой модификатор перед [S], например 4S, то будет найдено 4-е появление искомого символа. Удобно для быстрого перемещения курсора при редактировании переменной в строке.

K (KILL) Удалить фрагмент строки от текущей позиции курсора до символа, который вводится после [K]. Если применить числовой модификатор перед [K] то как и при поиске, будет искаться не первый попавшийся, а n по счёту символ. Осторожно! Если соответствие не найдено, то злюка команда удаляет всю строку от позиции курсора и до конца.

A (ABORT) Отмена последнего редактирования, если ещё не нажали ВК. По сути это undo. Главное не забывайте вернуться в командный режим по ПРФ/ESC.

Q (QUIT) Отмена редактирования с возвратом в интерпретатор BASIC.

E (EXIT) Тоже самое, что и ВК, завершает редактирование с сохранением изменений и возвратом в интерпретатор команд.

ЭПИЛОГ

Вот и всё. Чтобы понять эту систему, было мало просто прочитать главу книги, даже сидя за компьютером и пробуя примеры. Слишком там по древу растеклись мыслею, теряется структура, сложно запоминать. Пришлось законспектировать ручкой на бумаге. Потом захотел причесать конспект и записать его в файл на ПК. И решил не мелочиться, а сразу написать статью и рассказать об этом, чтобы ещё лучше всё понять самому.

И главное, спасибо моему любимому редактору vim, ибо постигши его дао, я смог легче и без особой боли понять этот занимательный режим редактирования в BASIC и даже проникнуться им. Также интересно, его авторы сами это выдумали или пользовались vi? Или может просто эта командно-модальная концепция доминировала в 80е, что очень может быть в эпоху низких скоростей и частых ошибок передачи данных по телефонным линиям.

Придумывал тут шутку а ля vim: “Как в Корвете выйти из режима редактирования BASIC без сброса?” Хотя понял, это же просто — нажать ВК. Ведь он не настолько суров, как vim, и не стоит его бояться. Вполне можно пользоваться, лишь только остаётся открытым вопрос копирования строк программы.

Корвет ПК8010

Корвет ПК8010