Наноподобный текстовый редактор терминала, поддерживающий отмену/возврат, программную обертку

Я ищу легкий текстовый редактор, который работает в терминале. В настоящее время я использую nano2.2.6, но я немного недоволен ею (особенно тем, что в ней не работает отмена/повтор).

Обязательные к приобретению:

  1. Возможность запуска в Терминале.
  2. Быстрое время запуска. Если это намного медленнее, чем nanoэто будет непригодно для использования.
  3. Простая настройка вкладок/отступов.
  4. Подсветка синтаксиса для основных языков.
  5. Функция отмены/возврата.
  6. Не может быть модальным ( vimотсутствует, если нет способа использовать его с комбинациями клавиш, а не с режимами.)
  7. Настраиваемые комбинации клавиш для общих задач.
  8. Свободно.
  9. Работает на OS X.
  10. Поддерживает мягкий перенос строк (длинные строки визуально переносятся, но не с переводом строки).

Приятно иметь:

  1. Возможность использовать его вместо пейджера (т.е. less).
  2. Возможность делать умные отступы.
  3. Кроссплатформенность.
  4. Возможность установки через MacPorts.
  5. Возможность выполнять более сложное редактирование кода в стиле IDE:введите описание изображения здесь

Я буду использовать редактор в основном для редактирования сценариев оболочки, но я также могу использовать его для java-кодирования, написания уценки, написания html/javascript и т. д.

Примечание. Я пробовал emacs, и мне не удалось выполнить эти два требования:

  1. Быстрое время запуска. Если это намного медленнее, чем nanoэто будет непригодно для использования.
  2. Простая настройка вкладок/отступов.
Вы пробовали запускать emacs с помощью emacs -q? Это все еще медленно?
@ Тимми, да, я пробовал. Это все еще способ медленно для меня. Может быть, я делаю что-то не так, но я пробовал много вещей для ускорения emacs, и ни одно из них не дошло до времени запуска nano.

Ответы (7)

ВИМ

( vimотсутствует, если нет способа использовать его с комбинациями клавиш, а не с режимами.)

Как ни странно, как только я действительно подумал об этом, я понял, что vimэто и есть ответ.

vimимеет все «обязательные» и «приятные»:

  1. Возможность запуска в Терминале.
  2. Быстрое время запуска. Если он намного медленнее, чем nano, его нельзя будет использовать.
  3. Относительно простая настройка вкладок/отступов.
  4. Подсветка синтаксиса для основных языков.
  5. Функция отмены/возврата.
  6. Не может быть модальным (vim отсутствует, если нет способа использовать его с комбинациями клавиш, а не с режимами.)
  7. Настраиваемые комбинации клавиш для общих задач.

Я беспокоился о #6 и #7, но оказалось, что вы можете начать vimв режиме вставки и настроить сочетания клавиш для режима вставки. Вдобавок ко всему, vimимеет удивительно полезный ярлык Ctrl+ o, который позволяет вам выполнять одну команду в режиме вставки. Сочетание этих двух позволяет вам сопоставлять модальные vimкоманды с nanoпохожими сочетаниями клавиш (например , inoremap <C-u> <C-o>P " map vim paste to nano's [Ctrl]+[u] paste keyboard shortcut).

  1. Свободно.
  2. Работает на OS X.
  3. Поддерживает мягкий перенос строк (длинные строки визуально переносятся, но не с переводом строки) .

Приятно иметь:

  1. Возможность использовать его вместо пейджера (т.е. меньше).
  2. Возможность делать умные отступы.
  3. Кроссплатформенность.
  4. Возможность установки через MacPorts.
  • macvim
  1. Возможность выполнять более сложное редактирование кода в стиле IDE.*

Вдобавок ко всему этому, vimу него потрясающая документация от множества программистов (черт возьми, у него даже есть собственный сайт SE ), множество функций, и он очень настраиваемый. Я настоятельно рекомендую взломать vim, чтобы работать так, если у вас есть похожие требования. Специалистам это может показаться кощунством vim, но под мои требования подходит идеально.

* Я не знаю, есть ли у него функция, показанная в вопросе, но у него определенно есть много функций редактирования, подобных IDE.

Emacs

Возможность запуска в Терминале.

emacsclient -nw

Кроме того, если вы хотите этого, потому что вы редактируете файлы на удаленной машине, где вы вошли в систему через SSH, есть другой способ: открыть удаленные файлы в вашем локальном сеансе Emacs . Чтобы редактировать файлы, доступ к которым осуществляется через SSH, введите hostname.example.com:/path/to/fileпри открытии файла. См. руководство для более продвинутого использования.

Быстрое время запуска. Если он намного медленнее, чем nano, его нельзя будет использовать.

Вот что вы делаете неправильно: вы запускаете новый экземпляр Emacs каждый раз, когда редактируете файл. Emacs был разработан таким образом, что вы запускаете Emacs один раз и навсегда, и когда вы хотите открыть файл, вы открываете его в работающем экземпляре. Вызов emacsclient -nwдля запуска интерфейса к уже работающему Emacs в текущем терминале. Либо запустите emacs --daemonкак часть запуска вашего сеанса, либо запустите, emacsclient -a '' -nw …чтобы указать emacsclient запустить Emacs, если он еще не запущен.

Простая настройка вкладок/отступов.

Emacs имеет множество возможностей для настройки отступов . Расширенная настройка, как правило, зависит от языка. У меня никогда не было проблем с тем, чтобы заставить Emacs следовать отступу. «Легко» — это субъективно, но если вы делаете что-то, что вообще возможно в любом редакторе, я сомневаюсь, что это будет сложно в Emacs — по крайней мере, если это очень необычный стиль, который не поддерживается поле, установив несколько переменных, вы сможете получить помощь , чтобы сделать это правильно с помощью нескольких строк Elisp.

Подсветка синтаксиса для основных языков.

Emacs дает ему странное имя font lock .

Функция отмены/возврата.

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

Не может быть модальным (vim отсутствует, если нет способа использовать его с комбинациями клавиш, а не с режимами.)

Emacs может эмулировать Vi , но вам не обязательно этого делать.

Настраиваемые комбинации клавиш для общих задач.

Конечно . И макросы и прочее.

Свободно.

Плакаты движения GNU . Достаточно сказано.

Работает на OS X.

Emacs для Mac OS X , Aquamacs и т. д.

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

Режим визуальной линии

Возможность использовать его вместо пейджера (т.е. меньше).

Это делалось не раз . Я никогда не пробовал. Вместо этого вы можете запускать команды оболочки внутри Emacs, что дает вам возможность пейджинга бесплатно. Emacs также имеет собственный способ чтения справочных страниц, просмотра веб-страниц и т. д.

Возможность делать умные отступы.

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

Кроссплатформенность.

Unix, родной OSX (см. также OSX выше), Windows , MS-DOS , Android iOS через Cydia и некоторые другие.

Возможность установки через MacPorts.

Проверять

Возможность выполнять более сложное редактирование кода в стиле IDE:

Из коробки вы получаете отступы, подсветку синтаксиса, поиск идентификатора, сворачивание. Существует множество дополнительных пакетов, предоставляющих дополнительные возможности; CEDET — хорошее начало.

mcedit

mcedit— кроссплатформенный полнофункциональный текстовый редактор, входящий в состав Midnight Commander .

  1. Его можно запустить в терминале с помощью команды mceditили нажав F4в Midnight Commander
  2. Имеет быстрое время запуска
  3. Настраиваемый размер вкладки. Изменив переменную editor_tab_spacingв конфигурационном файле ( ~/.config/mc/ini)
  4. Подсветка синтаксиса для многих языков, найденная в Optionsменю
  5. Функция отмены/возврата
  6. Не модальный, использует комбинации клавиш
  7. Может записывать и сохранять макросы и повторять простые команды. Я не думаю, что вы можете настроить исходные привязки клавиш, но вы можете создать новые и использовать их вместо этого.
  8. Бесплатно (GNU)
  9. Работает на OS X
  10. Поддерживает перенос строк. Настраивается с помощью переменных editor_word_wrap_line_length, editor_option_typewriter_wrapиwrap_mode

Редактировать:

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

ne делает много этого.

Вещи, в которых я уверен:

  1. Работает в терминале
  2. Запускается почти мгновенно
  3. Полностью настраиваемые комбинации клавиш
  4. Необязательная отмена / повтор
  5. Свободно
  6. Будет компилироваться на OS X, и я не удивлюсь, если он будет доступен на MacPorts.

Не уверена:

  • Простая настройка вкладок/отступов
  • Как он обрабатывает переносы строк
  • Имеет настраиваемую подсветку синтаксиса, но не уверен, есть ли они по умолчанию
Похоже ne, не поддерживает "мягкую упаковку" . Однако, похоже, у него есть способ настроить вкладки и отступы ( Ctrl+ f: TabSize , чтобы найти его на связанной странице ).

ДЖО

joeимеет все необходимое, кроме мягкой упаковки (насколько я знаю):

Обязательные к приобретению:

  1. Возможность запуска в Терминале (и через MacPorts).
  2. Быстрое время запуска. Если это намного медленнее, чем nanoэто будет непригодно для использования.
  3. Простая настройка вкладок/отступов.
  4. Подсветка синтаксиса для основных языков.
  5. Функция отмены/возврата.
  1. Это не модально.
  1. Настраиваемые комбинации клавиш для общих задач.
  • На самом деле он имеет nanoаналогичный режим со знакомыми комбинациями клавиш, начиная joeс альтернативной jpicoкоманды.
  1. Свободно.
  2. Работает на OS X.
  • joeявляется кроссплатформенным.
  1. Поддерживает мягкий перенос строк (длинные строки визуально переносятся, но не с переводом строки).

joeна самом деле очень хорош, и я рекомендую его всем, кто хочет более полнофункциональную версию nano(если вас не волнует программная упаковка).

В 2018 году ответ на этот вопрос: нано! Он ставит все галочки. Сейчас (сентябрь 2018 г.) версия 3.0, они продолжают улучшать функциональность и кодовую базу, и продолжают это делать! Помимо отмены, теперь также есть запись макросов клавиш. Для моего использования (и это звучит также как использование OP) многие сочетания клавиш нуждаются в переопределении и изменении настроек по умолчанию, но сделайте это в ~/.nanorc или глобально в /etc/nanorc, и Боб будет вашим дядей на долгие годы вперед ..!

Я только что обнаружил, что нано имеет мягкую упаковку. В настоящее время я использую jed (ранее ne, но он плохо обрабатывает UTF-8), и jed очень мощный, но если вы добавите «set softwrap» в свой ~/.nanorc, это позволит вам softwrap (и переопределить большинство клавиш и установить множество других параметров!). Я никогда не вернусь к nano, но при новой установке он часто включается. Я все еще устанавливаю ne, потому что он вряд ли нуждается в настройке. К сожалению, jed требует от меня множества настроек (как и joe).