Какие операции с файлами можно выполнять при работе в текстовом редакторе

Обновлено: 21.11.2024

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

Общие возможности редактора emacs

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

Emacs использует управляющие и escape-символы, чтобы отличать команды редактора от текста, вставляемого в буфер. В этом документе обозначение «Control-X» означает удержание нажатой клавиши управления и ввод буквы x. Вам не нужно использовать заглавную букву x или любой другой управляющий символ, удерживая нажатой клавишу Shift. "ESCAPE-X" означает нажать клавишу выхода, отпустить ее, а затем ввести x.

Работа с буферами

Когда вы редактируете файл в emacs, вы на самом деле не редактируете сам файл, поскольку он находится где-то на диске. Вместо этого emacs делает копию файла и сохраняет эту копию в части оперативной памяти, называемой буфером. Все изменения, которые вы вносите в файл, применяются к буферу. Когда вы сохраняете файл, emacs записывает содержимое буфера на диск.

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

Основные операции в emacs

Запуск emacs

Чтобы запустить emacs, просто введите команду emacs в оболочку Unix. Если вы хотите, чтобы emacs запускался с файлом, уже загруженным в буфер, введите имя файла emacs, где "имя файла" — это имя файла, который вы хотите отредактировать.

Выход из emacs

Чтобы выйти из emacs и вернуться в оболочку Unix, нажмите Control-X-Control-C. Если вы вносили изменения в буфер с момента последнего сохранения его на диск, emacs спросит вас, хотите ли вы его сохранить. Введите y, если да, или n, если нет.

Получение помощи

Emacs имеет интерактивную справочную систему, которую можно вызвать, нажав Control-H. Если вы введете вопросительный знак (?), emacs представит список разделов справки, которые вы можете выбрать.

Отображение emacs

Дисплей в emacs разделен на три основные области. Верхняя область называется текстовым окном. Текстовое окно занимает большую часть экрана, и в нем отображается редактируемый документ. В нижней части текстового окна есть единственная строка режима. Строка режима дает информацию о документе и о сеансе emacs. Нижняя строка экрана emacs называется мини-буфер. Мини-буфер содержит место для команд, которые вы даете emacs, и отображает информацию о состоянии.

Отмена команды

Работа с файлами

Чтобы прочитать файл с диска в буфер emacs, введите команду Control-X-Control-F. Emacs спросит у вас имя файла. Когда вы вводите имя файла, оно будет отображаться в мини-буфере. Когда вы ввели имя файла, нажмите клавишу возврата, и emacs загрузит файл в буфер и отобразит его в текстовом окне.

Команда для сохранения содержимого буфера в файл на диске — Control-X-Control-S. Команда сохранения перезаписывает старую версию файла. Вы также можете записать содержимое буфера в другой файл с помощью команды Control-X-Control-W. Emacs запросит у вас имя файла, который вы хотите создать.

Чтобы создать новый файл, используйте Control-X-Control-F, как если бы файл уже существовал. Когда emacs запросит у вас имя файла, введите имя, которое вы хотите, чтобы ваш новый файл имел, и emacs создаст файл и отобразит пустой буфер, который вы должны ввести.

Emacs выполнит за вас завершение имени файла. Введите часть имени нужного файла и нажмите пробел или клавишу табуляции, чтобы emacs завершил имя файла. Если указанное вами частичное имя соответствует более чем одному файлу, emacs отобразит список всех возможных совпадений. Вы можете продолжать вводить имя файла и нажимать любую клавишу завершения файла, пока не найдете нужный файл.

Движение курсора

  • Control-F перемещает курсор вперед к следующему символу.
  • Control-B возвращает курсор к предыдущему символу.
  • Control-N перемещает курсор на следующую строку.
  • Control-P перемещает курсор на предыдущую строку.
  • Control-A перемещает курсор в начало текущей строки.
  • Control-E перемещает курсор в конец текущей строки.
  • ESCAPE-F перемещает курсор вперед к следующему слову.
  • ESCAPE-B возвращает курсор к предыдущему слову.
  • ESCAPE-< перемещает курсор в начало буфера.
  • ESCAPE-> перемещает курсор в конец буфера.

Вставка и удаление текста

Чтобы вставить текст в буфер, поместите курсор туда, где вы хотите начать вставку текста, и начните вводить текст.

Если вы хотите вставить содержимое другого файла в текущий буфер, поместите курсор в нужную точку вставки и нажмите Control-X-I. Emacs спросит у вас имя файла, который вы хотите вставить.

Вы также можете вставить текст, вырезав его из одного места и вставив в точку вставки. Информацию о вырезании и вставке см. в следующем разделе.

  • Control-D удаляет одну букву вперед.
  • Control-K удаляет от точки до конца строки.
  • ESCAPE-D удаляет одно слово вперед.
  • ESCAPE-delete удаляет одно слово назад.

Вырезание и вставка текстовых областей

Emacs позволяет вам выбирать область текста и выполнять над ней операции вырезания и вставки. Он использует область временного хранения, называемую «буфером уничтожения», чтобы вы могли хранить и извлекать блоки текста. В emacs есть только один буфер уничтожения, что означает, что вы можете вырезать текст из одного документа и вставить его в другой.

Чтобы определить область текста, поместите курсор на один конец области и нажмите Control-пробел. Это устанавливает отметку. Затем переместите курсор на другой конец области. Текст между меткой и курсором определяет область.

Чтобы вырезать область текста и поместить ее в буфер уничтожения, используйте команду Control-W (вспомните Wipe).

Команда вставки — Control-Y. Он извлекает блок текста из буфера уничтожения и помещает его туда, где находится курсор. Команда Control-Y извлекает только последний вырезанный блок текста.

Вы можете вставить более ранние фрагменты, нажав ESCAPE-Y. Повторно использованная команда ESCAPE-Y возвращает вас к нескольким предыдущим текстовым блокам, которые были вырезаны. Команда ESCAPE-Y не работает, если сначала вы не нажмете Control-Y.

Вы можете скопировать область текста в буфер уничтожения, не вырезая его. Определите текстовый блок, установив метку на одном конце и переместив курсор на другой конец. Затем введите ESCAPE-W.

Отмена изменений

Внесенные в файл изменения можно отменить, введя команду Control-_. (Это Control-underscore. На некоторых клавиатурах для ввода символа подчеркивания нужно удерживать одновременно клавиши Control и Shift.)

Многие текстовые редакторы могут отменить только самую последнюю команду, но emacs запоминает длинную историю команд, позволяя вам отменить многие изменения, повторно введя код Control-_.

Настройка Emacs

Редактор emacs можно настроить несколькими способами. Вы можете настроить свои собственные привязки клавиш, создать свои собственные макросы и даже создать свои собственные пользовательские функции. Кроме того, некоторые аспекты поведения emacs контролируются переменными, которые вы можете установить.

Вы можете узнать больше о функциях emacs, вызвав интерактивную справку (набрав ESC-X help), а затем нажав клавишу "f", чтобы просмотреть список функций. Нажатие пробела для завершения приведет к тому, что emacs отобразит список всех встроенных функций. Аналогичным образом можно получить список переменных, вызвав интерактивную справку, затем набрав «v», а затем пробел.

Если вы поместите настройки переменных, привязки клавиш и объявления функций в текстовый файл с именем ".emacs" в вашем домашнем каталоге, редактор emacs загрузит эти определения во время запуска. Вот файл конфигурации emacs с некоторыми основными определениями переменных и привязками клавиш для ознакомления.

Редакторы или текстовые редакторы — это программы, которые позволяют пользователю создавать и редактировать текстовые файлы. В области программирования термин «редактор» обычно относится к редакторам исходного кода, которые включают множество специальных функций для написания и редактирования кода. Блокнот, Wordpad — некоторые из распространенных редакторов, используемых в ОС Windows, а vi, emacs, Jed, pico — редакторы в ОС UNIX. Функции, обычно связанные с текстовыми редакторами: перемещение курсора, удаление, замена, вставка, поиск, поиск и замена, сохранение и т. д.

  1. Редактор строк: здесь вы можете редактировать только одну строку за раз или целое число строк. У вас не может быть свободной последовательности символов. Он позаботится только об одной строке.
    Пример: телетайп, эдлин, теко
  2. Потоковые редакторы. В редакторах этого типа файл обрабатывается как непрерывный поток или последовательность символов, а не номеров строк, что означает, что здесь вы можете вводить абзацы.
    Пример: редактор Sed в UNIX
  3. Экранные редакторы. В редакторах этого типа пользователь может видеть курсор на экране и может легко выполнять операции копирования, вырезания и вставки. Использовать указатель мыши очень просто.
    Пример: vi, emacs, Блокнот
  4. Текстовый процессор. Преодолев ограничения экранных редакторов, он позволяет использовать определенный формат для вставки изображений, файлов, видео, использования шрифта, размера и стиля. Основное внимание уделяется естественному языку.
  5. Редактор структуры. Редактор структуры ориентирован на языки программирования. Он предоставляет функции для написания и редактирования исходного кода.
    Пример: IDE Netbeans, gEdit.

Некоторые другие редакторы:

  • Полноэкранные редакторы. На компьютерах полноэкранный редактор или редактор, не отвлекающий внимание, – это текстовый редактор, который занимает весь экран с целью отстранения пользователя от ОС и других приложений. Это помогает пользователю сосредоточиться только на письме и не отвлекаться на другие приложения и загроможденный интерфейс. Часто полноэкранные редакторы имеют темный фон и текстовое поле со светлым текстом. Они включают в себя настраиваемые интерфейсы и такие функции, как подсчет слов.
    Пример: Acme, Coderoom, FocusWriter
  • Многооконный редактор. Многооконный редактор позволяет работать с несколькими файлами одновременно, а также вырезать и вставлять текст из одного файла в другой путем извлечения и вставки. Две фундаментальные концепции, лежащие в основе многооконных редакторов, — это буфер и окна.

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

Процесс редактирования

  • Выбрана часть документа, которую необходимо отредактировать или изменить.
  • определение того, как форматировать эти строки при просмотре и как их отображать.
  • Укажите и выполните операции, изменяющие документ.
  • Правильно обновите представление.

Вышеуказанные шаги включают фильтрацию, форматирование и перемещение.

  • Форматирование: отображение на экране дисплея.
  • Фильтрация: выявление основного/важного подмножества.
  • Путешествие: поиск интересующей области.

Пользовательский интерфейс редакторов. Пользовательский интерфейс редакторов обычно означает ввод, вывод и язык взаимодействия. Устройства ввода используются для ввода текста, данных в документ или для обработки команд. Устройства вывода используются для отображения редактируемой формы документа и результатов выполненных операций/команд. Язык взаимодействия обеспечивает взаимодействие с редактором.

  • Устройства ввода. Устройства ввода обычно делятся на устройства ввода текста, кнопочные устройства и устройства локатора. Текстовое устройство — клавиатура. Кнопочные устройства представляют собой специальные функциональные клавиши. Устройства локатора включают мышь. Существуют также специальные голосовые устройства, которые записывают в текст все, что вы говорите.
  • Устройства вывода:TFT-мониторы, принтеры, телетайпы, технология электронно-лучевой трубки, усовершенствованные ЭЛТ-терминалы.
  • Язык взаимодействия:Язык взаимодействия может быть ориентирован на набор текста или текстовую команду, а также может быть пользовательским интерфейсом, ориентированным на меню. Язык взаимодействия, ориентированный на набор текста или текстовой команды, очень стар, используется в самых старых редакторах, в виде команд, использования функций и клавиш управления и т. д. Интерфейс, ориентированный на меню, имеет меню с набором множественного выбора текстовых строк. Область отображения ограничена, и пользователь может включать и выключать меню.

Структура редактора

Процессор командного языка принимает команды, выполняет такие функции, как редактирование и просмотр. Это включает в себя путешествие, редактирование, просмотр и отображение. Операции редактирования задаются пользователем, а операции отображения задаются редактором. Компоненты перемещения и просмотра вызываются редактором или самим пользователем во время операций.

Компонент редактирования — это модуль, отвечающий за задачи редактирования. Текущая область редактирования определяется текущим указателем редактирования, связанным с компонентом редактирования. При выполнении команды редактирования компонент редактирования вызывает фильтр редактирования, генерирует новый буфер редактирования. Буфер редактирования содержит документ, который нужно отредактировать в текущем местоположении указателя редактора.
При просмотре документа начало просматриваемой области определяется текущим указателем просмотра. Компонент просмотра — это набор модулей, используемых для просмотра следующего представления. Текущий просмотр можно настроить или сбросить в зависимости от последней операции.
Когда отображение необходимо обновить, компонент просмотра вызывает фильтр просмотра, создает новый буфер и содержит документ для просмотра с использованием текущего буфера просмотра. Затем буфер просмотра передается компоненту дисплея, который создает отображение путем отображения буфера.Буферы редактирования и просмотра могут быть идентичными или полностью не пересекаться. Буферы редактирования и просмотра также могут частично перекрываться или содержаться один внутри другого. Компонент редактора взаимодействует с документом от пользователя на двух уровнях: оперативной памяти и файловой системы диска.

Иногда вы, возможно, чувствовали, что управление различными типами файлов в C становится немного сложным, будь то текстовый файл или двоичный файл. Но эта задача оказывается довольно простой, когда мы говорим об обработке файлов в C.

Обработка файлов в C относится к задаче хранения данных в форме ввода или вывода, созданных при выполнении программ C в файлах данных, а именно в текстовом файле или двоичном файле для дальнейшего использования и анализа.

В этом руководстве по обработке файлов в C мы обсудим:

Прежде чем мы начнем, давайте признаем важность обработки файлов.

После того, как мы скомпилируем и запустим программу, будет получен вывод, но этот вывод не сохраняется в виде информации где-либо в системе.

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

1. Что такое обработка файлов в C?

Файл — это не что иное, как источник постоянного хранения информации в виде последовательности байтов на диске. Содержимое файла не изменчиво, как память компилятора C. Различные доступные операции, такие как создание файла, открытие файла, чтение файла или управление данными внутри файла, называются обработкой файла.

Прежде чем двигаться дальше, вы должны знать, что такое стандартные библиотечные функции в C?

Будьте в курсе последних технологических тенденций
Присоединяйтесь к DataFlair в Telegram!!

2. Необходимость обработки файлов в C

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

  • Повторное использование. Это помогает сохранить данные или информацию, сгенерированные после запуска программы.
  • Большой объем хранилища. Используя файлы, вам не нужно беспокоиться о проблеме хранения данных в большом количестве.
  • Экономия времени. Некоторые программы требуют от пользователя большого количества действий. Вы можете легко получить доступ к любой части кода с помощью определенных команд.
  • Переносимость. Вы можете легко перенести содержимое файла с одной компьютерной системы на другую, не беспокоясь о потере данных.

3. Различные типы файлов в C

Когда речь идет о файлах в отношении обработки файлов, мы обычно называем их файлами данных. В языке программирования C доступно два основных типа файлов данных:

3.1 Текстовые файлы

Это простейшие файлы, которые пользователь может создать при работе с файлами на языке C. Он создается с расширением .txt в любом простом текстовом редакторе. Обычно мы используем блокноты для создания текстовых файлов. Текстовый файл хранит информацию в виде символов ASCII внутри, но когда вы открываете текстовый файл, вы обнаружите, что содержимое текста доступно для чтения людям.

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

3.2 Двоичные файлы

Двоичный файл хранит информацию в форме двоичной системы счисления (0 и 1), поэтому занимает меньше места для хранения. Проще говоря, он хранит информацию так же, как информация хранится в памяти компьютера. Следовательно, к нему гораздо проще получить доступ.

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

4. C Операции обработки файлов

  • Создание нового файла: fopen()
  • Открытие существующего файла в вашей системе: fopen()
  • Закрытие файла: fclose()
  • Чтение символов из строки: getc()
  • Запись символов в файл: putc()
  • Чтение набора данных из файла: fscanf()
  • Запись набора данных в файл: fprintf()
  • Чтение целочисленного значения из файла: getw()
  • Запись целочисленного значения в файл: putw()
  • Установка нужной позиции в файле: fseek()
  • Получение текущей позиции в файле: ftell()
  • Установка положения в начальной точке: перемотка назад()

Ключевой вывод: важно отметить, что при работе с файлами необходимо объявлять указатель типа файла. Он устанавливает связь между файлом и программой.

Вот как это делается:

ФАЙЛ *fpointer;

Из этих различных операций есть несколько основных операций, используемых в языке программирования C, которые мы подробно обсудим одну за другой:

5. Открытие текстового файла в C

Мы используем функцию fopen() для создания или открытия файла, как упоминалось ранее. Совершенно очевидно, что создание или открытие файла — это первый шаг в работе с файлом. После создания файла его можно открыть, изменить или удалить.

Основной синтаксис открытия файла:

*fpointer — это указатель на файл, который устанавливает соединение между файлом и программой.

*file_name — это имя файла.

*mode — это режим, в котором мы хотим открыть наш файл.

< td>Мы используем его, чтобы открыть текстовый файл как в режиме чтения, так и в режиме записи< td>rb

6. Закрытие текстового файла в C

Мы используем функцию fclose(), чтобы закрыть уже открытый файл. Совершенно очевидно, что файл необходимо открыть, чтобы можно было выполнить операцию закрытия файла.

Здесь fpointer — это указатель, связанный с закрытием файла. Эта функция отвечает за возврат значения 0, если файл успешно закрыт. В противном случае EOF (конец файла) в случае какой-либо ошибки при закрытии файла.

7. Чтение и запись текстового файла в C

После обсуждения того, как открыть и закрыть файл, важно отметить, что в файле есть 3 типа потоков (последовательности байтов):

Операции ввода/вывода в файле помогают читать и писать в файл.

Самые простые функции, используемые при выполнении операций чтения и записи символов в файл, — это getc() и putc() соответственно.

Для чтения и записи набора данных в файл мы используем операторы fscanf() и fprintf().

Отдохните и пересмотрите концепцию операторов в C

Вот программа на C, иллюстрирующая использование fprintf() для записи текстового файла:

После успешной компиляции приведенного выше кода на системном диске будет создан текстовый файл.

Когда мы открываем текстовый файл, он будет отображать введенный в программе символ:

После понимания того, как писать в файл, давайте приступим к чтению строки.

Вот программа на C, иллюстрирующая использование fscanf() для чтения текстового файла:

Код —

Выход-

Теперь давайте попробуем понять разницу между режимом записи и режимом добавления.

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

Режим записи обозначается буквой "w", тогда как режим добавления обозначается буквой "a".

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

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

8. Чтение и запись двоичного файла в C

Мы используем функции fread() и fwrite() для чтения и записи данных из двоичного файла соответственно.

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

Обе функции fread() и fwrite() принимают для работы 4 аргумента.

Основной синтаксис для чтения двоичного файла в C:

fread(data_address, data_size, number_of_data_items, file_pointer);

Основной синтаксис для записи двоичного файла в C:

fwrite(data_address, data_size, number_of_data_items,file_pointer);

Вот программа на C, иллюстрирующая, как читать двоичный файл на C:

Код-

Выход-

Подобным образом вы можете записать содержимое в двоичный файл с помощью функции fwrite().

Вот программа на C, иллюстрирующая, как писать в двоичный файл:

Код-

Выход-

Вот как вывод файла сохраняется в текстовом файле:

В этой главе мы поймем, как редактор vi работает в Unix. В Unix существует множество способов редактирования файлов. Одним из лучших способов является редактирование файлов с помощью экранного текстового редактора vi. Этот редактор позволяет редактировать строки в контексте с другими строками в файле.

Улучшенная версия редактора vi, которая называется VIM, также стала доступной. Здесь VIM означает Vi IMproved.

vi обычно считается стандартом де-факто в редакторах Unix, потому что -

Обычно он доступен во всех разновидностях системы Unix.

Его реализации очень похожи по всем направлениям.

Для этого требуется очень мало ресурсов.

Он более удобен для пользователя, чем другие редакторы, такие как ed или ex.

Вы можете использовать редактор vi для редактирования существующего файла или для создания нового файла с нуля. Вы также можете использовать этот редактор, чтобы просто прочитать текстовый файл.

Запуск редактора vi

В следующей таблице перечислены основные команды для использования редактора vi —

имя файла vi

Создает новый файл, если он еще не существует, иначе открывает существующий файл.

vi-R имя файла

Открывает существующий файл в режиме только для чтения.

просмотреть имя файла

Открывает существующий файл в режиме только для чтения.

Ниже приведен пример создания нового файла testfile, если он еще не существует в текущем рабочем каталоге —

Приведенная выше команда сгенерирует следующий вывод —

Вы заметите тильду (~) в каждой строке после курсора. Тильда обозначает неиспользуемую строку.Если строка не начинается с тильды и кажется пустой, в ней присутствует пробел, табуляция, новая строка или какой-либо другой невидимый символ.

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

Режимы работы

При работе с редактором vi мы обычно сталкиваемся со следующими двумя режимами —

Командный режим — этот режим позволяет выполнять административные задачи, такие как сохранение файлов, выполнение команд, перемещение курсора, вырезание (дергание) и вставка строк или слов, а также поиск и замена. В этом режиме все, что вы вводите, интерпретируется как команда.

Режим вставки — этот режим позволяет вставлять текст в файл. Все, что набирается в этом режиме, интерпретируется как ввод и помещается в файл.

vi всегда запускается в командном режиме. Чтобы ввести текст, вы должны быть в режиме вставки, для которого просто введите i. Чтобы выйти из режима вставки, нажмите клавишу Esc, и вы вернетесь в командный режим.

Подсказка. Если вы не уверены, в каком режиме находитесь, дважды нажмите клавишу Esc; это приведет вас в командный режим. Вы открываете файл с помощью редактора vi. Начните с ввода нескольких символов, а затем перейдите в командный режим, чтобы понять разницу.

Выход из vi

Команда для выхода из vi: :q. В командном режиме введите двоеточие и 'q', а затем return. Если ваш файл был каким-либо образом изменен, редактор предупредит вас об этом и не даст выйти. Чтобы проигнорировать это сообщение, выполните команду выхода из vi без сохранения: :q!. Это позволяет выйти из vi без сохранения каких-либо изменений.

Команда для сохранения содержимого редактора: :w. Вы можете комбинировать указанную выше команду с командой quit или использовать :wq и return.

Самый простой способ сохранить изменения и выйти из vi — использовать команду ZZ. Когда вы находитесь в командном режиме, введите ZZ. Команда ZZ работает так же, как и команда :wq.

Если вы хотите указать/указать какое-либо конкретное имя для файла, вы можете сделать это, указав его после :w. Например, если вы хотите сохранить файл, над которым вы работали, под другим именем файла, называемым имя_файла2, вы должны ввести :w имя_файла2 и вернуться.

Перемещение внутри файла

Чтобы перемещаться по файлу, не затрагивая текст, вы должны находиться в командном режиме (дважды нажмите клавишу Esc). В следующей таблице перечислены несколько команд, которые вы можете использовать для перемещения по одному символу за раз —

Перемещает курсор вверх на одну строку

Перемещает курсор вниз на одну строку

Перемещает курсор на один символ влево

Перемещает курсор вправо на один символ

Для перемещения по файлу необходимо учитывать следующие моменты:

vi чувствителен к регистру. При использовании команд необходимо обращать внимание на использование заглавных букв.

Большинству команд в vi может предшествовать количество повторений действия. Например, 2j перемещает курсор на две строки вниз от позиции курсора.

Есть много других способов перемещения внутри файла в vi. Помните, что вы должны находиться в командном режиме (дважды нажмите Esc). В следующей таблице перечислены несколько команд для перемещения по файлу —

Ниже приведен список команд для перемещения по файлу.

Помещает курсор в начало строки

Помещает курсор в конец строки

Перемещает курсор к следующему слову

Помещает курсор на предыдущее слово

Помещает курсор в начало текущего предложения

Помещает курсор в начало следующего предложения

Перемещается в конец слова с разделителями-пустотами

Перемещает абзац назад

Перемещает абзац вперед

Перемещает раздел назад

Перемещает раздел вперед

Переходит к столбцу n в текущей строке

Переход к первой строке файла

Переходит к последней строке файла

Переходит на n-ю строку файла

Переходит на n-ю строку файла

Перемещается вперед к c

Возврат к c

Перемещается в верхнюю часть экрана

Перемещается на n-ю строку сверху экрана

Перемещается в центр экрана

Перейти к нижней части экрана

Перемещается на n-ю строку снизу экрана

Двоеточие, за которым следует число, поместит курсор на номер строки, представленный x

Команды управления

С помощью клавиши управления можно использовать следующие команды для выполнения функций, указанных в таблице ниже –

Ниже приведен список команд управления.

Перемещается на 1/2 экрана вперед

Перемещается на один полный экран вперед

Перемещение назад на 1/2 экрана

Перемещается назад на один полный экран

Перемещает экран на одну строку вверх

Перемещает экран на одну строку вниз

Перемещает экран на 1/2 страницы вверх

Перемещает экран на 1/2 страницы вниз

Перемещает экран на одну страницу вверх

Перемещает экран на одну страницу вниз

Перерисовывает экран

Редактирование файлов

Для редактирования файла необходимо находиться в режиме вставки. Есть много способов войти в режим вставки из командного режима —

Вставляет текст перед текущим положением курсора

Вставляет текст в начало текущей строки

Вставляет текст после текущего положения курсора

Вставляет текст в конец текущей строки

Создает новую строку для ввода текста под курсором

Создает новую строку для ввода текста над курсором

Удаление символов

Вот список важных команд, которые можно использовать для удаления символов и строк в открытом файле –

Удаляет символ под курсором

Удаляет символ перед курсором

Удаляет от текущего положения курсора к следующему слову

Удаляет от текущей позиции курсора до начала строки

Удаляет от текущей позиции курсора до конца строки

Удаляет от позиции курсора до конца текущей строки

Удаляет строку, на которой находится курсор

Как упоминалось выше, перед большинством команд в vi можно указать количество повторений действия. Например, 2x удаляет два символа под курсором, а 2dd удаляет две строки, на которых находится курсор.

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

Команды изменения

У вас также есть возможность изменять символы, слова или строки в vi, не удаляя их. Вот соответствующие команды —

Удаляет содержимое строки, оставляя вас в режиме вставки.

Изменяет слово, на котором находится курсор, с курсора на строчную букву w в конце слова.

Заменяет символ под курсором. vi возвращается в командный режим после ввода замены.

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

Заменяет текущий символ введенным вами символом. После этого вы остаетесь в режиме вставки.

Удаляет строку, на которой находится курсор, и заменяет ее новым текстом. После ввода нового текста vi остается в режиме вставки.

Команды копирования и вставки

Вы можете скопировать строки или слова из одного места, а затем вставить их в другое место, используя следующие команды –

Копирует текущую строку.

Копирует текущее слово, начиная с символа, на котором стоит курсор w в нижнем регистре, до конца слова.

Помещает скопированный текст после курсора.

Помещает скопированный текст перед курсором.

Дополнительные команды

Есть несколько расширенных команд, которые упрощают повседневное редактирование и позволяют более эффективно использовать vi —

Ниже приведен список расширенных команд.

Соединяет текущую строку со следующей. Несколько команд соединяют несколько строк.

Сдвигает текущую строку вправо на одну ширину сдвига.

Переключает регистр символов под курсором.

Нажмите одновременно клавиши Ctrl и G, чтобы отобразить текущее имя файла и статус.

Восстанавливает текущую строку в состояние, в котором она находилась до того, как курсор вошел в строку.

Это помогает отменить последнее изменение, внесенное в файл. Повторный ввод 'u' повторит изменение.

Соединяет текущую строку со следующей. Счетчик объединяет столько строк.

Отображает текущую позицию в файле в % и имя файла, общее количество файлов.

Переименовывает текущий файл в имя файла.

Записывает в файл имя_файла.

Открывает другой файл с именем файла.

Изменяет текущий рабочий каталог на имя_каталога.

Переключение между двумя открытыми файлами.

Если вы открываете несколько файлов с помощью vi, используйте :n для перехода к следующему файлу в последовательности.

Если вы открываете несколько файлов с помощью vi, используйте :p для перехода к предыдущему файлу в последовательности.

Если вы открываете несколько файлов с помощью vi, используйте :N для перехода к предыдущему файлу в последовательности.

Читает файл и вставляет его после текущей строки.

Читает файл и вставляет его после строки n.

Поиск слов и символов

В редакторе vi предусмотрено два вида поиска: строковый и символьный. Для поиска строки / и ? используются команды. Когда вы запускаете эти команды, только что введенная команда будет отображаться в последней строке экрана, где вы вводите конкретную строку для поиска.

Эти две команды отличаются только направлением поиска —

Команда / выполняет поиск в файле вперед (вниз).

? команда выполняет поиск в файле назад (вверх).

Команды n и N повторяют предыдущую команду поиска в том же или противоположном направлении соответственно. Некоторые символы имеют особое значение. Этим символам должна предшествовать обратная косая черта (\), чтобы они были включены в поисковое выражение.

Выполняет поиск в начале строки (Используйте в начале поискового выражения).

Как системный администратор, и особенно как системный администратор Linux/Unix, вам придется привыкнуть не только к обходу командной строки, но и к редактированию текстовых файлов. Обе эти задачи требуют, чтобы вы ознакомились и освоились с двумя наиболее распространенными текстовыми редакторами в этой области: vi и emacs

Оба этих редактора, vi и emacs, представляют собой утилиты командной строки, запускаемые из окна терминала. Это означает, что вы также можете запускать их на удаленных машинах через ssh-соединение. Несмотря на то, что доступны графические версии этих инструментов (gvim и xemacs), многие администраторы предпочитают текстовые версии, поскольку они обеспечивают единообразие работы независимо от того, работают ли они на своем локальном компьютере или на удаленном компьютере, доступ к которому осуществляется через сеть. Кроме того, отказ от использования мыши означает, что ваши руки остаются на начальном ряду клавиатуры, что означает, что вы работаете быстрее и с меньшей усталостью.

Немного истории¶

В те времена, когда UNIX только начинал появляться на компьютерах с реальными системами ввода-вывода (например, телетайп), взаимодействие с компьютером было исключительно текстовым. Компьютер отправлял некоторые данные в виде символов ASCII* по медленному телефонному каналу. Затем пользователь нажимал несколько клавиш на клавиатуре, что отправляло на компьютер дополнительные символы ASCII, опять же по медленной телефонной линии.

Поскольку обмен данными был очень медленным, программисты и пользователи UNIX сделали свои внутренние инструменты максимально эффективными. Ранние редакторы, такие как ed , позволяли вам видеть только одну строку текста в файле за раз, поскольку широко используемый в то время интерфейс — телетайп, напечатанный на бумаге, и, таким образом, не существовало понятия «перерисовка» или даже «экрана». Эти ранние инструменты позже превратились в более продвинутые редакторы, такие как vi и emacs, используемые сегодня. Но эти инструменты сохраняют наследие UNIX в отношении эффективности бережливого производства. Команды обычно отправляются отдельными символами, «панели инструментов» нет, а редактор предоставляет мощные инструменты для быстрого перемещения курсора по файлу без необходимости отображать ненужный текст/контекст в файле.

* Примечание: вы также можете запустить man ascii, чтобы быстро получить таблицу ASCII

основы vi¶

vi был создан как расширение ex (преемник ed ). Когда «современные» терминалы (например, электронные дисплеи, а не телетайпы) стали обычным явлением, имело смысл использовать «визуальный» режим редактирования, когда вы могли видеть контекст редактируемой строки. Из ed вы должны были войти в «визуальный» режим, запустив :vi — так родился VI.

С тех пор vi был написан и переписан много, много раз. Но внутри вы все равно найдете старый добрый . В разделе «Редактирование текста 201» вы увидите, как по-прежнему можно получить доступ к очень мощным функциям редактирования с помощью команды двоеточия (:).

Существует много версий vi, но самой популярной является vim (VI iMproved). Практически каждый дистрибутив Linux предоставляет vim либо по умолчанию, либо в виде легко устанавливаемого пакета. vim во многих отношениях расширяет набор функций утилиты vi, совместимой с POSIX. В приведенных ниже примерах будут отмечены функции, которые присутствуют только в vim.

Примечание о Vimtutor¶

Vim, современная расширенная версия vi, содержит собственное руководство. В системе с установленным Vim вы сможете запустить vimtutor, чтобы получить интерактивный сеанс, который проведет вас через большую часть того же контента, что и на этой странице. Вам не нужно использовать vimtutor, если вы этого не хотите — просто знайте, что он есть, если вы хотите попробовать его.

Режимы vi¶

Первое, что нужно понять о том, как работает vi, это то, что он работает в разных режимах.

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

Режим вставки — это когда вы на самом деле печатаете текст. Клавиши, которые вы вводите в режиме вставки, просто сбрасываются в буфер (имя vi для файла, который вы редактируете). Чтобы выйти из режима вставки, нажмите клавишу Esc.

Режим командной строки — это когда вы вводите команду в строке cmd в нижней части окна. Это для команд Ex, «:», команд поиска по шаблону, «?» и «/», а команда фильтра — «!».

Привет, мир!¶

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

Запустите vi и отредактируйте новый файл:

Редактор запустится в обычном режиме. Первое, что мы хотим сделать, это добавить текст в файл. Нажмите i, чтобы войти в режим «вставки». Вы заметите, что редактор позволяет вам начать вводить текст в файл. Введите текст в файл:

Теперь вы хотите сохранить содержимое, поэтому выполните следующие действия:

  1. Нажмите клавишу ESC, чтобы выйти из режима вставки и войти в командный режим.
  2. Нажмите :, затем w, затем Enter. Это будет записано в файл.
  3. Редактор остается в командном режиме, ожидая вашей следующей команды.

Теперь вы хотите выйти из редактора:

  1. Нажмите клавишу ESC, чтобы выйти из режима вставки (нажатие клавиши ESC в командном режиме ничего не дает, поэтому можно просто нажать ее на всякий случай)
  2. Нажмите :, а затем q (выход), затем Enter . Вы выйдете из vi .

Движение курсора¶

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

В обычном режиме вы используете клавиши h , j , k и l (ell) для перемещения курсора:

  • ч – слева
  • j - вниз
  • к – вверх
  • л - правильно

Поначалу кажется запутанным и неудобным, верно? На самом деле это не так. Вы быстро выучите движения, не задумываясь об этом, и сможете очень быстро перемещаться по файлу, даже не отрывая рук от основного ряда клавиатуры.

Помимо простых команд перемещения курсора, есть несколько других команд перемещения курсора, которые чрезвычайно полезно знать:

  • w – перейти на одно слово вперед
  • b – вернуться на одно слово назад
  • 0 - перейти к началу строки
  • ^ - перейти к первому непустому символу строки
  • $ — перейти в конец строки
  • /some text — поиск вперед до следующего совпадения некоторого текста и установка курсора туда
  • ?какой-то текст — поиск назад к предыдущему экземпляру некоторого текста и размещение курсора там
  • n — повторить последний поиск
  • N – повторить последний поиск, но в обратном направлении.
  • gg — перейти непосредственно к началу файла
  • G — переход непосредственно к концу файла
  • numberG – перейти непосредственно к номеру строки (пример: 20G — к строке 20)

Команды вставки текста¶

vi предоставляет вам несколько вариантов того, как вы хотите вставить текст при входе в режим вставки.

  • i - вставить текст в позицию курсора. Первый введенный символ появится слева от курсора.
  • a — добавить текст в позицию курсора. Первый введенный символ появится справа от курсора.
  • I — то же, что и вставка, но сначала перемещает курсор в начало строки (эквивалентно ^i .
  • A — то же, что и добавление, но сначала перемещает курсор в конец строки (эквивалентно $a .
  • o – открыть новую строку под курсором и начать вставлять туда текст.
  • O – открыть новую строку над курсором и начать вставлять туда текст.

Команды удаления текста¶

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

  • x — удалить символ под курсором
  • dw — Удалить от символа под курсором до начала следующего слова
  • dd — удалить строку под курсором
  • NUMdd — удалить NUM строк текста, например: 10dd удаляет 10 строк
  • dgg — удалить текущую строку и все остальное в начало файла
  • dG — Удалить текущую строку, а все остальное в конец файла

Отменить и повторить¶

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

В vim (но не в строгом POSIX vi ) вы также можете нажать Ctrl-R, чтобы повторить последнее действие, которое вы не сделали.

Читайте также:

РЕЖИМ ПОЯСНЕНИЕ
r Мы используем его для открытия текстового файла в режиме чтения
w Мы используем его для открытия или создания текстового файла в режиме записи
a Мы используем его, чтобы открыть текстовый файл в режиме добавления
r+
w+ Мы используем его, чтобы открыть текстовый файл как в режиме чтения, так и в режиме записи. режим записи
a+ Мы используем его, чтобы открыть текстовый файл как в режиме чтения, так и в режиме записи
Мы используем его для открытия бинарного файла в режиме чтения
wb Мы используем его для открытия или создания двоичный файл в режиме записи
ab Мы используем его для открытия двоичного файла в режиме добавления
rb+ Мы используем его для открытия двоичного файла в режиме чтения и записи
wb+ Мы используем его открыть бинарный файл в обоих ре режим чтения и записи
ab+ Мы используем его для открытия двоичного файла как в режиме чтения, так и в режиме записи