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

推荐订阅源

Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
博客园 - 【当耐特】
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recent Announcements
Recent Announcements
D
Docker
GbyAI
GbyAI
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
The Cloudflare Blog
雷峰网
雷峰网
A
About on SuperTechFans
小众软件
小众软件
博客园 - Franky
博客园 - 聂微东
F
Full Disclosure
大猫的无限游戏
大猫的无限游戏
C
Check Point Blog
MongoDB | Blog
MongoDB | Blog
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
V2EX
Engineering at Meta
Engineering at Meta
宝玉的分享
宝玉的分享
aimingoo的专栏
aimingoo的专栏
量子位
P
Proofpoint News Feed
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
罗磊的独立博客
Martin Fowler
Martin Fowler
D
DataBreaches.Net
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
Secure Thoughts
Project Zero
Project Zero
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tailwind CSS Blog
S
Schneier on Security
Blog — PlanetScale
Blog — PlanetScale
The Hacker News
The Hacker News
Spread Privacy
Spread Privacy
Security Latest
Security Latest
NISL@THU
NISL@THU
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
CXSECURITY Database RSS Feed - CXSecurity.com
J
Java Code Geeks

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

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет 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 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Редактор строк в 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