Вопрос или проблема
Я пользователь Windows, который пришел к Bash Ubuntu благодаря WSL. Теперь мне нужно редактировать некоторые файлы, и я действительно ненавижу Vi. Мне придется с этим мириться, или есть более простой аналог?
Функции, которые я ищу:
- На основе CLI
- Простой в использовании (наблюдение и редактирование должно быть похоже на Notepad)
- Достаточно простых возможностей редактирования
Я постараюсь освоить Vim, но мне нужно сделать быстрое редактирование прямо сейчас!
Если вы ищете альтернативный редактор, вы не одиноки. В основном жизнь слишком коротка, чтобы учить vi
, и я говорю это, будучи разработчиком программного обеспечения на профессиональном уровне. Однако вы должны научиться выходить из него, потому что это проблема для каждого 20-го программиста. Также выполнение некоторых базовых операций добавления/вставки может стоить того, чтобы научиться, потому что на некоторых упрямых серверах вы не найдете никакого другого редактора.
Теперь, ответ на ваш вопрос вероятно nano
.
Если вы запускаете какой-то автоматизированный скрипт сборки, используя git
или выполняя другие команды, они могут открыть vim
против вашей воли. Вы можете предотвратить это, запустив следующее перед продолжением:
export EDITOR=nano
Это вопрос мнения.
Начинающие используют nano.
vim (“vi improved”) имеет небольшую кривую обучения, но он очень мощный. Смотрите это руководство для начинающих по vim или любые другие руководства по vim или учебник vim vimtutor
(включен в vim).
На данный момент я настоятельно рекомендую nano
nano -B /path/to/file/to/edit
-B создает резервную копию
Команды вводятся с помощью клавиши управления и перечислены внизу окна редактора.
Существует руководство по подсветке синтаксиса: Как включить подсветку синтаксиса в nano?
emacs
является альтернативой как vim
, так и nano
и имеет много преимуществ. emacs
сложнее, чем nano. Вы можете посмотреть тур emacs.
Для полноты картины, vim + темы такие как Zenburn могут быть весьма полезны
Как продвинутый пользователь Windows, после того как я попробовал vim
и nano
, я понял, что мне нужно что-то среднее по сложности. Поэтому я попробовал slap, и это оказалось то самое, что я искал.
slap — это текстовый редактор на основе терминала, напоминающий Sublime, который стремится сделать редактирование из терминала проще. slap имеет первоклассную поддержку мыши, даже через SSH-соединение.
Установка:
curl -sL https://raw.githubusercontent.com/slap-editor/slap/master/install.sh | sh
Tilde
является именно тем, что вы ищете.
Цитируя с домашней страницы Tilde
Tilde — это текстовый редактор для консоли/терминала, который предоставляет интуитивно понятный интерфейс для людей, привыкших к графическим средам, таким как Gnome, KDE и Windows. Например, сочетание клавиш для копирования текущего выделения — Control-C, а чтобы вставить ранее скопированный текст, можно использовать сочетание Control-V. В качестве другого примера, доступ к меню Файл можно получить, нажав Meta-F.
Если вы привыкли к сочетаниям клавиш, таким как
Ctrl + C
для копирования,Ctrl + V
для вставки,Ctrl + A
для выделения всего,Ctrl + Z
для отмены,Ctrl + Y
для повтора,Ctrl + F
для поиска,Ctrl + S
для сохранения,- и т.д…
Вы найдете, что стандартные сочетания клавиш и интерфейс Tilde в целом очень интуитивно понятны.
Смотрите https://github.com/gphalkes/tilde#installing-tilde для инструкций по установке.
Вы когда-нибудь были расстроены тем, что ваш текстовый редактор не делает то, что вы хотите? Раздосадованы тем, что не можете вспомнить…
- …как найти помощь?
- …что означает :wq?
- …любую из малых команд, которые вы читали в университете?
Маленький, смелый мир ждет!
Пока мы настаиваем на своих любимых легковесных текстовых редакторах, позвольте мне порекомендовать отличный, компактный и быстрый xo
(exofrills).
Это один файл на Python 3, и он хорошо поддерживает подсветку синтаксиса через Pygments (хотя не идеально с не-Python):
У него также есть крайне простые и полезные комбинации клавиш, которые могут быть легко изменены по вашему желанию:
Другие функции:
- Менее 850 строк кода в одном файле!
- Подсветка синтаксиса!
- Сопоставление и замена регулярных выражений!
- Кэширование истории поиска!
- Лицензия WTFPL!
- Полностью настраиваемый!
- Запуск из непервоначальных мест!
- Перемещение между словами в строке!
- Переход в любое место в файле!
- Вставка всего файла!
- Дружелюбный к новичкам – может быть, вы новичок в словах!
- Копирование и вставка текста!
- Статус строки и столбца!
- Только один ряд неписьменного пространства для редактирования!
- Сохранение и загрузка!
Исходный код на Python3 находится на github, и вы можете установить его проще с помощью:
sudo apt install python3-pip
sudo pip3 install exofrills
exofrills: ваш текст был отредактирован…но вы все еще голодны.
Отказ от ответственности: я никоим образом не связан с проектом exofrills.
Mcedit
Это (серьезно недооцененный) встроенный редактор Midnight Commander.
Установка:
sudo apt install mc
Чтобы отредактировать файл с его помощью, введите
mcedit file-name
Настройки для лучшей удобства
-
Поддержка мыши включена, но лучше отключить раздражающий “Постоянный выбор”, нажав F9 и перейдя в меню
Общие
. -
Некоторые из стандартных привязок экзотические, особенно для копирования-выделения-вставки, но все они могут быть настроены через
~/.config/mc/mc.keymap
в разделе[editor]
. Этот файл изначально не будет существовать, так что вы можете взять копию из/etc/mc/mc.keymap
.
Для вашего удобства, я прилагаю свой, который я использовал до перехода на Vim.[editor] Store = ctrl-c Paste = ctrl-v Cut = ctrl-x Undo = ctrl-z Redo = ctrl-y Save = ctrl-s EditNew = ctrl-n MarkAll = ctrl-a Search = ctrl-f SearchContinue = ctrl-alt-f Help = f1 UserMenu = f2 Mark = f3 Replace = f4 Copy = f5 Move = f6 Options = f7 Remove = f8 Menu = f9 Quit = f10; esc SyntaxOnOff = f11 SaveAs = f12 SyntaxChoose = ctrl-alt-x ShowNumbers = alt-n Goto = alt-l Up = up Down = down Left = left Right = right WordLeft = ctrl-left WordRight = ctrl-right Enter = enter Return = shift-enter; ctrl-enter; ctrl-shift-enter BackSpace = backspace Delete = delete PageUp = pgup PageDown = pgdn Home = home End = end Tab = tab Top = ctrl-up Bottom = ctrl-down TopOnScreen = ctrl-pgup BottomOnScreen = ctrl-pgdn DeleteToWordBegin = alt-backspace DeleteToWordEnd = alt-d DeleteToEnd = ctrl-k MarkPageUp = shift-pgup MarkPageDown = shift-pgdn MarkLeft = shift-left MarkRight = shift-right MarkToWordBegin = ctrl-shift-left MarkToWordEnd = ctrl-shift-right MarkUp = shift-up MarkDown = shift-down MarkToHome = shift-home MarkToEnd = shift-end MarkToFileBegin = ctrl-shift-home MarkToFileEnd = ctrl-shift-end MarkToPageBegin = ctrl-shift-pgup MarkToPageEnd = ctrl-shift-pgdn MarkScrollUp = ctrl-shift-up MarkScrollDown = ctrl-shift-down MarkColumnPageUp = alt-pgup MarkColumnPageDown = alt-pgdn MarkColumnLeft = alt-left MarkColumnRight = alt-right MarkColumnUp = alt-up MarkColumnDown = alt-down MarkColumn = f13 ReplaceContinue = f14 Complete = alt-tab InsertOverwrite = insert Refresh = ctrl-l Sort = alt-t Mail = alt-m ParagraphFormat = alt-p MatchBracket = alt-b ExternalCommand = alt-u Bookmark = ctrl-u BookmarkFlush = ctrl-delete BookmarkNext = ctrl-alt-down BookmarkPrev = ctrl-alt-up Shell = ctrl-o InsertLiteral = ctrl-q MacroStartStopRecord = ctrl-r ShowTabTws = alt-underline ShowMargin = ctrl-b FilePrev = alt-minus FileNext = alt-plus SelectCodepage = alt-e WindowFullscreen = ctrl-t # ExtendedKeyMap = # WindowPrev = # WindowNext = # WindowList = # WindowResize = # WindowMove = # LearnKeys = # SpellCheckSelectLang = # SpellCheckCurrentWord = # SpellCheck = # OptionsSaveMode = # RepeatStartStopRecord = # Find = # InsertFile = # MacroDelete = # MacroStopRecord = # MacroStartRecord = # History = # Date = # BlockSave = # MarkColumnParagraphDown = # MarkColumnParagraphUp = # MarkColumnScrollDown = # MarkColumnScrollUp = # MarkParagraphDown = # MarkParagraphUp = # BlockShiftRight = # BlockShiftLeft = # Unmark = # MarkWord = # MarkLine = # Close = # EditFile = # ParagraphDown = # ParagraphUp = # DeleteToHome = # DeleteLine = # ScrollDown = # ScrollUp =
Если вам это нравится, обновите свой редактор по умолчанию, выполнив select-editor
.
micro
кажется идеальным для вас. Это терминальный редактор, аналогичный vi
или nano
, но с гораздо более разумными сочетаниями клавиш. Например, Ctrl+C
— это копирование, Ctrl+V
— это вставка, Ctrl+S
— это сохранение, Ctrl+Q
— выход и т.д. Он имеет встроенную подсветку синтаксиса для многих языков, а также поддержку мыши.
Если вы просто хотите открыть файл, отредактировать его и закрыть, это один из самых безболезненных способов сделать это.
Хотя я не могу отрицать, что в начале у меня тоже были трудности с vi, я думаю, что можно утверждать, что vi на самом деле очень легко учить. (Когда я начал использовать Unix, выбор был либо vi, либо emacs, так что в то время я выбрал ed, ed был очень простым линейным редактором, который я уже выучил, прочитав ранние учебники по Unix.) Я использую vi ежедневно, но, вероятно, использую только очень маленький набор его функций.
Вот первый аргумент в пользу использования vi: vi существует на всех системах, использует очень мало ресурсов и может использоваться по нестабильным и медленным соединениям, где другие редакторы могут не работать или быть медленными и непригодными. Или в ситуациях, когда система повреждена, так что стрелочные клавиши не интерпретируются правильно (например, неправильные настройки terminfo). Таким образом, vi можно использовать для исправления конфигурационных файлов, приводящих к проблеме, не затрагиваясь от самой проблемы.
А вот как узнать полезный подмножество vi:
Сначала: перестаньте рассматривать vi как интерактивный, терминальный GUI “редактор”, и воспринимайте его как язык программирования для манипуляции текстовыми файлами. В начале “vi” означало VIsual режим, и у vi есть невизуальный аналог ex, который является хорошим местом для начала.
Введите ex на командной строке (я буду использовать ¬ для обозначения возврата):
$ ex¬
Вход в режим Ex. Введите "visual", чтобы перейти в нормальный режим.
:
Теперь нажмите ввод.
:¬
E749: пустой буфер
:
Таким образом, давайте что-то поместим в него. Введите “a¬”, и введите строку текста, потом точку на отдельной строке:
:a¬
Hello World¬
.¬
:
Это была команда добавления. Легко, коротко и мнемонично. Но было бы неплохо увидеть, что находится в буфере:
:%p¬
Hello World
:
Это была команда печати, p, очевидно. % — это сокращение диапазона строк. Каждая команда может быть предшествована номером строки или диапазоном, к которому команда должна применяться. % означает “все строки”. $ означает последнюю строку, а точка означает текущую строку. Номер означает ту конкретную строку. Диапазон записывается как n,m и можно добавить или вычесть число, так .+1,$-1 означают от следующей строки до предпоследней строки. Команда, состоящая только из номера строки, переходит к той строке. Вот оставшийся малый набор команд, которые я использую:
:1i¬
этот текст вставляется перед строкой 1.¬
.¬
:
:w /tmp/filename¬
"/tmp/filename" [Новый] 2L, 49C записано
:
w записывает все (или выбранный диапазон) строки в файл.
:1d¬
удаляет строку 1.
:.s/Hello/Hello,/¬
Hello, World
:.s/$/!/¬
Hello, World!
s заменяет регулярное выражение. Хорошо знать регулярные выражения!
:q¬
E37: Нет записи с последним изменением (добавьте ! для переопределения)
q выходит. wq записывает и выходит. q! выходит без записи, а в аналогичном духе w! принудительно записывает файл, если это возможно.
Теперь крутой пример:
:p
Hello, World!
:.!tr a-z A-Z
:p
HELLO, WORLD!
! как команда фильтрует строки в команду оболочки.
И наконец:
:vi¬
входит в VISUAL режим.
Не дайте себя обмануть. Это выглядит как редактор, но это все еще просто интерактивная программная оболочка. Вы просто можете смотреть на буфер все время, и еще несколько команд. В визуальном режиме : показывает приглашение : из режима ex. Стрелочные клавиши (если они работают) перемещаются, а если не работают, то hjkl делают это! h влево, j вниз, k вверх и l вправо. 0 перемещает к первому символу, и ^(думайте о регулярных выражениях здесь!) к первому не пробельному символу в строке. $ (опять регулярные выражения!) перемещает к концу строки. Ввод :999¬ переводит на строку 999, и это естественно, так же как и в ex режиме.
“i” вводит режим вставки, который теперь вставляет символы вместо строк, и заканчивается нажатием Escape вместо “.¬”. “I” вставляет в начале, “a” после символа под курсором и “A” после конца текущей строки. Всегда нажимайте Escape, когда закончите вводить текст. “x” удаляет символ под курсором, а “D” удаляет от курсора до конца строки. “Y” копирует текущую строку, а “P” вставляет ее обратно. “:pu” делает то же самое, но перед ней может стоять номер строки. “:ya” является эквивалентом ex команды “Y”, и снова, полезно применять к диапазону строк. Я думаю, что также существует команда метки, но я признаю, что не помню ее. Я не скучаю по ней.
Выше перечислены команды, которые я использую, и я знаю, что, вероятно, я не очень “эффективный” пользователь vi. С другой стороны, я использую универсальность ex, например, для сценарной обработки конфигурационных файлов. Нужно изменить ваш хост в foo.bar.com на www.foobar.com в ряде конф файлов?
for file in conf/*
do (echo "%s/foo.bar.com/www.foobar.com/" ; echo "wq") |ex $file ; done
Что я пытаюсь сказать, так это то, что я думаю, проблема с vi заключается в том, что люди думают о нем как о сложном редакторе. Все, что нужно — это немного изменить свое мировосприятие и рассматривать это как очень простой, но одновременно очень мощный интерактивный язык программирования. Так мощный, что даже с подмножеством доступных команд, вы можете использовать его с большой эффективностью — не только как редактор, но и как общий, сценарный инструмент, хорошо интегрированный с остальной частью Unix. Я сомневаюсь, что nano может сделать все это — emacs…возможно.
Вы можете попробовать micro
Это естественно для людей, знакомых с Windows, и он поддерживает lsp
Существуют также некоторые альтернативы на Rust. Хотя и не такие мощные (но быстрее).
Я бы порекомендовал helix. Красивый, настраиваемый, модальный текстовый редактор для терминала, который работает так же гладко, как neovim.
Он работает очень похоже на vim и neovim, одновременно все преднастроено, включая lsp, и готово к использованию.
Он также представил несколько улучшений в контрольных клавишах neovim.
Если вы ищете более простой аналог vi или vim в терминале, вот несколько популярных вариантов:
-
nano
- Описание: nano — это очень удобный редактор на основе терминала, идеальный для быстрых правок без кривой обучения как vi или vim.
- Как использовать: просто введите
nano filename
, чтобы открыть файл. Управление отображается внизу, поэтому легко увидеть, какие клавиши нажимать для распространенных действий.
-
micro
- Описание: micro — еще один удобный, современный текстовый редактор на основе терминала. Он поддерживает взаимодействие с мышью, подсветку синтаксиса и даже множественные курсоры.
- Установка: установите его с помощью
sudo apt install micro
или скачайте бинарник с GitHub: https://github.com/zyedidia/micro. - Как использовать: введите
micro filename
, чтобы открыть файл. Как и nano, он создан для простоты использования.
-
joe (Joe’s Own Editor)
- Описание: joe предоставляет простой опыт, похожий на WordStar. Он поддерживает базовое редактирование текста с привычными сочетаниями клавиш.
- Установка: установите его с помощью
sudo apt install joe
. - Как использовать: запустите
joe filename
, чтобы открыть файл.
-
ne (Nice Editor)
- Описание: ne легкий и имеет интуитивно понятный интерфейс, что делает его еще одним подходящим аналогом vim для простого редактирования текста.
- Установка: установите его с помощью
sudo apt install ne
. - Как использовать: запустите
ne filename
, чтобы открыть файл.
Каждый из этих редакторов предлагает более простой опыт, чем vi или vim, при этом обеспечивая достаточную функциональность для общих задач редактирования текста в терминале.
Ответ или решение
Если вы являетесь пользователем Windows и только начали использовать Ubuntu через подсистему Windows для Linux (WSL), искреннее понимание командной строки и текстовых редакторов может показаться сложной задачей. Особенно, если вы не любите редактирование в vi
или vim
. Но что, если я скажу, что есть множество простых и удобных альтернатив, которые сделают вашу жизнь гораздо легче? В этой статье мы рассмотрим несколько популярных и доступных редакторов, которые вы можете использовать в командной строке.
1. Nano
Описание: nano
– это высоко оцененный текстовый редактор для терминала, который предлагает интуитивно понятный интерфейс. Он идеален для быстрого редактирования файлов без необходимости проходить через крутую кривую обучения, характерную для vi
или vim
.
Как использовать: Просто введите nano имя_файла
, чтобы открыть файл. Команды управления отображаются в нижней части экрана, что делает их легко доступными.
2. Micro
Описание: micro
– это современный и удобный текстовый редактор для терминала, который поддерживает графические элементы управления, такие как мышь, подсветку синтаксиса и множественные курсоры. Он особенно подходит для пользователей, которые ищут комфортный и стильный редактор.
Установка:
sudo apt install micro
Как использовать: Введите micro имя_файла
, чтобы открыть файл. Редактор спроектирован с учетом простоты и интуитивности в использовании.
3. Joe (Joe’s Own Editor)
Описание: joe
предлагает пользователям опыт редактирования, аналогичный WordStar, и поддерживает основные функции редактирования текста с привычными сочетаниями клавиш.
Установка:
sudo apt install joe
Как использовать: Запустите joe имя_файла
, чтобы открыть файл.
4. Ne (Nice Editor)
Описание: ne
– это легковесный редактор с интуитивно понятным интерфейсом, что делает его хорошей альтернативой для простого редактирования текста.
Установка:
sudo apt install ne
Как использовать: Для открытия файла просто введите ne имя_файла
.
5. Tilde
Описание: Tilde
– это текстовый редактор для консоли, который предлагает интуитивно понятный интерфейс, похожий на графические среды, такие как Gnome или KDE. Привычные сочетания клавиш, такие как Ctrl+C
для копирования и Ctrl+V
для вставки, делают его наглядным для новых пользователей.
Установка: Инструкции по установке можно найти на странице проекта Tilde.
Заключение
Теперь, когда вы знаете о нескольких удобных и эффективных текстовых редакторах, вы можете выбрать подходящий для ваших нужд. Редактор nano
станет отличным выбором для быстрого редактирования, в то время как micro
может стать вашим любимым редактором в будущем благодаря своему современному интерфейсу и функциональности. Возможно, вы даже захотите попробовать Tilde
для более привычного графического интерфейса.
Проверяйте каждый из этих редакторов, чтобы найти тот, который лучше всего подходит вам. Ведь редактирование текста не должно быть назойливой задачей.