标签 EMACS 下的文章

在我 Emacs 系列中的第一篇文章里,我介绍了我在用了几十年的 vim 后转向了 Emacs,Org 模式就是我为什么这样做的原因。

Org 模式的精简和高效真的震惊了我,它真的是个“杀手”应用。

所以,Org 模式到底是什么呢?

这是我昨天写的:

它是一个组织信息的平台,它的主页上这样写着:“一切都是纯文本:Org 模式用于记笔记、维护待办事项列表、计划项目和使用快速有效的纯文本系统编写文档。”

这是事实,但并不是很准确。Org 模式是一个你用来组织事务的小工具。它有一些非常合理的默认设置,但也允许你自己定制。

主要突出在这几件事上:

  • 维护待办事项列表:项目可以分散在 Org 文件中,包含附件,有标签、截止日期、时间表。有一个方便的“日程”视图,显示需要做什么。项目也可以重复。
  • 编写文档:Org 模式有个特殊的功能来生成 HTML、LaTeX、幻灯片(用 LaTeX beamer)和其他所有的格式。它也支持直接在缓冲区中运行和以 Emacs 所支持的的语言进行 文学编程 literate programming 。如果你想要深入了解这项功能的话,参阅这篇文学式 DevOps 的文章。而 整个 Worg 网站 是用 Org 模式开发的。
  • 记笔记:对,它也能做笔记。通过全文搜索,文件的交叉引用(类似 wiki),UUID,甚至可以与其他的系统进行交互(通过 Message-ID 与 mu4e 交互,通过 ERC 的日志等等……)。

入门

我强烈建议去阅读 Carsten Dominik 关于 Org 模式的一篇很棒的 Google 讲话。那篇文章真的很赞。

在 Emacs 中带有 Org 模式,但如果你想要个比较新的版本的话,Debian 用户可以使用命令 apt-get install org-mode 来更新,或者使用 Emacs 的包管理系统命令 M-x package-install RET org-mode RET

现在,你可能需要阅读一下 Org 模式的精简版教程中的导读部分,特别注意,你要设置下启动部分中提到的那些键的绑定。

一份好的教程

我会给出一些好的教程和介绍的链接,但这篇文章不会是一篇教程。特别是在本文末尾,有两个很不错的视频链接。

我的一些配置

我将在这里记录下一些我的配置并介绍它的作用。你没有必要每行每句将它拷贝到你的配置中 —— 这只是一个参考,告诉你哪些可以配置,要怎么在手册中查找,或许只是一个“我现在该怎么做”的参考。

首先,我将 Emacs 的编码默认设置为 UTF-8。

(prefer-coding-system 'utf-8) 
(set-language-environment "UTF-8")

Org 模式中可以打开 URL。默认的,它会在 Firefox 中打开,但我喜欢用 Chromium。

(setq browse-url-browser-function 'browse-url-chromium)

我把基本的键的绑定和设为教程里的一样,再加上 M-RET 的操作的配置。

(global-set-key "\C-cl" 'org-store-link)
(global-set-key "\C-ca" 'org-agenda)
(global-set-key "\C-cc" 'org-capture)
(global-set-key "\C-cb" 'org-iswitchb)

(setq org-M-RET-may-split-line nil)

捕获配置

我可以在 Emacs 的任何模式中按 C-c c,按下后它就会帮我捕获某些事,其中包括一个指向我正在处理事务的链接。

你可以通过定义捕获模板来配置它。我将保存两个日志文件,作为会议、电话等的通用记录。一个是私人用的,一个是办公用的。如果我按下 C-c c j,它就会帮我捕获为私人项. 下面包含 %a 的配置是表示我当前的位置(或是我使用 C-c l 保存的链接)的链接。

(setq org-default-notes-file "~/org/tasks.org")
(setq org-capture-templates
      '(
        ("t" "Todo" entry (file+headline "inbox.org" "Tasks")
         "* TODO %?\n  %i\n  %u\n  %a")
        ("n" "Note/Data" entry (file+headline "inbox.org" "Notes/Data")
         "* %?   \n  %i\n  %u\n  %a")
        ("j" "Journal" entry (file+datetree "~/org/journal.org")
         "* %?\nEntered on %U\n %i\n %a")
        ("J" "Work-Journal" entry (file+datetree "~/org/wjournal.org")
         "* %?\nEntered on %U\n %i\n %a")
        ))
(setq org-irc-link-to-logs t)

我喜欢通过 UUID 来建立链接,这让我在文件之间移动而不会破坏位置。当我要 Org 存储一个链接目标以便将来插入时,以下配置有助于生成 UUID。

(require 'org-id)
(setq org-id-link-to-org-use-id 'create-if-interactive)

议程配置

我喜欢将星期天作为一周的开始,当我将某件事标记为完成时,我也喜欢记下时间。

(setq org-log-done 'time)
(setq org-agenda-start-on-weekday 0)

文件归档配置

在这我将配置它,让它知道在议程中该使用哪些文件,而且在纯文本的搜索中添加一点点小功能。我喜欢保留一个通用的文件夹(我可以从其中移动或“重新归档”内容),然后将个人和工作项的任务、日志和知识库分开。

  (setq org-agenda-files (list "~/org/inbox.org"
                               "~/org/email.org"
                               "~/org/tasks.org"
                               "~/org/wtasks.org"
                               "~/org/journal.org"
                               "~/org/wjournal.org"
                               "~/org/kb.org"
                               "~/org/wkb.org"
  ))
  (setq org-agenda-text-search-extra-files
        (list "~/org/someday.org"
              "~/org/config.org"
  ))

  (setq org-refile-targets '((nil :maxlevel . 2)
                             (org-agenda-files :maxlevel . 2)
                             ("~/org/someday.org" :maxlevel . 2)
                             ("~/org/templates.org" :maxlevel . 2)
                             )
        )
(setq org-outline-path-complete-in-steps nil)         ; Refile in a single go
(setq org-refile-use-outline-path 'file)

外观配置

我喜欢一个较漂亮的的屏幕。在你开始习惯 Org 模式之后,你可以试试这个。

(add-hook 'org-mode-hook
          (lambda ()
            (org-bullets-mode t)))
(setq org-ellipsis "⤵")

下一篇

希望这篇文章展示了 Org 模式的一些功能。接下来,我将介绍如何定制 TODO 关键字和标记、归档旧任务、将电子邮件转发到 Org 模式,以及如何使用 git 在不同电脑之间进行同步。

你也可以查看本系列的所有文章列表


via: https://changelog.complete.org/archives/9865-emacs-2-introducing-org-mode

作者:John Goerzen 选题:lujun9972 译者:oneforalone 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我必须承认,在使用了几十年的 vim 后, 我被 Emacs 吸引了。

长期以来,我一直对如何组织安排事情感到沮丧。我也有用过 GTDZTD 之类的方法,但是像邮件或是大型文件这样的事务真的很难来组织安排。

我一直在用 Asana 处理任务,用 Evernote 做笔记,用 Thunderbird 处理邮件,把 ikiwiki 和其他的一些项目组合作为个人知识库,而且还在电脑的归档了各种文件。当我的新工作需要将 Slack 也加入进来时,我终于忍无可忍了。

许多 TODO 管理工具与电子邮件集成的很差。当你想做“提醒我在一周内回复这个邮件”之类的事时,很多时候是不可能的,因为这个工具不能以一种能够轻松回复的方式存储邮件。而这个问题在 Slack 上更为严重。

就在那时,我偶然发现了 Carsten Dominik 在 Google Talk 上关于 Org 模式的讲话。Carsten 是 Org 模式的作者,即便是这个讲话已经有 10 年了,但它仍然很具有参考价值。

我之前有用过 Org 模式,但是每次我都没有真正的深入研究它, 因为我当时的反应是“一个大纲编辑器?但我需要的是待办事项列表”。我就这么错过了它。但实际上 Org 模式就是我所需要的。

什么是 Emacs?什么是 Org 模式?

Emacs 最初是一个文本编辑器,现在依然是一个文本编辑器,而且这种传统无疑贯穿始终。但是说 Emacs 是个编辑器是很不公平的。

Emacs 更像一个平台或是工具包。你不仅可以用它来编辑源代码,而且配置 Emacs 本身也是编程,里面有很多模式。就像编写一个 Firefox 插件一样简单,只要几行代码,然后,模式里的操作就改变了。

Org 模式也一样。确实,它是一个大纲编辑器,但它真正所包含的不止如此。它是一个信息组织平台。它的网站上写着,“你可以用纯文本来记录你的生活:你可以用 Org 模式来记笔记,处理待办事项,规划项目和使用快速有效的纯文本系统编写文档。”

捕获

如果你读过基于 GTD 的生产力指南,那么他们强调的一件事就是毫不费力地获取项目。这个想法是,当某件事突然出现在你的脑海里时,把它迅速输入一个受信任的系统,这样你就可以继续做你正在做的事情。Org 模式有一个专门的捕获系统。我可以在 Emacs 的任何地方按下 C-c c 键,它就会空出一个位置来记录我的笔记。最关键的是,自动嵌入到笔记中的链接可以链接到我按下 C-c c 键时正在编辑的那一行。如果我正在编辑文件,它会链回到那个文件和我所在的行。如果我正在浏览邮件,它就会链回到那封邮件(通过邮件的 Message-Id,这样它就可以在任何一个文件夹中找到邮件)。聊天时也一样,甚至是当你在另一个 Org 模式中也可也这样。

这样我就可以做一个笔记,它会提醒我在一周内回复某封邮件,当我点击这个笔记中的链接时,它会在我的邮件阅读器中弹出这封邮件 —— 即使我随后将它从收件箱中存档。

没错,这正是我要找的!

工具套件

一旦你开始使用 Org 模式,很快你就会想将所有的事情都集成到里面。有可以从网络上捕获内容的浏览器插件,也有多个 Emacs 邮件或新闻阅读器与之集成,ERC(IRC 客户端)也不错。所以我将自己从 Thunderbird 和 mairix + mutt (用于邮件归档)换到了 mu4e,从 xchat + slack 换到了 ERC。

你可能不明白,我喜欢这些基于 Emacs 的工具,而不是具有相同功能的单独的工具。

一个小花絮:我又在使用离线 IMAP 了!我甚至在很久以前就用过 GNUS。

用一个 Emacs 进程来管理

我以前也经常使用 Emacs,那时,Emacs 是一个“大”的程序(现在显示电源状态的小程序占用的内存要比 Emacs 多)。当时存在在启动时间过长的问题,但是现在已经有连接到一个正在运行的 Emacs 进程的解决方法。

我喜欢用 Mod-p(一个 xmonad) 中 dzen 菜单栏的快捷方式,但是在大多数传统的桌面环境中该功能的快捷键是 Alt-F2)来启动程序(LCTT 译注:xmonad 是一种平铺桌面;dzen 是 X11 窗口下管理消息、提醒和菜单的程序)。这个设置在不运行多个 emacs 们 emacsen 时很方便,因为这样就不会在试图捕获另一个打开的文件时出问题。这中方法很简单:创建一个叫 em 的脚本并将它放到我自己的环境变量中。就像这样:

#!/bin/bash exec emacsclient -c -a "" "$@"

如果没有 emacs 进程存在的话,就会创建一个新的 emacs 进程,否则的话就直接使用已存在的进程。这样做还有一个好处:-nw 之类的参数工作的很好,它实际上就像在 shell 提示符下输入 emacs 一样。它很适合用于设置 EDITOR 环境变量。

下一篇

接下来我将讨论我的使用情况,并展示以下的配置:

  • Org 模式,包括计算机之间的同步、捕获、日程和待办事项、文件、链接、关键字和标记、各种导出(幻灯片)等。
  • mu4e,用于电子邮件,包括多个账户,bbdb 集成
  • ERC,用于 IRC 和即时通讯

via: http://changelog.complete.org/archives/9861-emacs-1-ditching-a-bunch-of-stuff-and-moving-to-emacs-and-org-mode

作者:John Goerzen 译者:oneforalone 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这篇教程将带你遍历在 Emacs 使用强大的开源排版系统 LaTex 来创建文档的全过程。

一篇由 Aaron Cocker 写的很棒的文章 “在 LaTeX 中创建文件的介绍” 中,介绍了 LaTeX 排版系统 并描述了如何使用 TeXstudio 来创建 LaTeX 文档。同时,他也列举了一些很多用户觉得创建 LaTeX 文档很方便的编辑器。

Greg Pittman 对这篇文章的评论吸引了我:“当你第一次开始使用 LaTeX 时,他似乎是个很差劲的排版……” 事实也确实如此。LaTeX 包含了多种排版字体和调试,如果你漏了一个特殊的字符比如说感叹号,这会让很多用户感到沮丧,尤其是新手。在本文中,我将介绍如何使用 GNU Emacs 来创建 LaTeX 文档。

创建你的第一个文档

启动 Emacs:

emacs -q --no-splash helloworld.org

参数 -q 确保 Emacs 不会加载其他的初始化配置。参数 --no-splash-screen 防止 Emacs 打开多个窗口,确保只打开一个窗口,最后的参数 helloworld.org 表示你要创建的文件名为 helloworld.org

 title=

GNU Emacs 打开文件名为 helloworld.org 的窗口时的样子。

现在让我们用 Emacs 添加一些 LaTeX 的标题吧:在菜单栏找到 “Org” 选项并选择 “Export/Publish”。

 title=

导入一个默认的模板

在下一个窗口中,Emacs 同时提供了导入和导出一个模板。输入 #(“[#] Insert template”)来导入一个模板。这将会使光标跳转到一个带有 “Options category:” 提示的 mini-buffer 中。第一次你可能不知道这个类型的名字,但是你可以使用 Tab 键来查看所有的补全。输入 “default” 然后按回车,之后你就能看到如下的内容被插入了:

#+TITLE: helloworld
#+DATE: <2018-03-12 Mon>
#+AUTHOR:
#+EMAIL: makerpm@nubia
#+OPTIONS: ':nil *:t -:t ::t <:t H:3 \n:nil ^:t arch:headline
#+OPTIONS: author:t c:nil creator:comment d:(not "LOGBOOK") date:t
#+OPTIONS: e:t email:nil f:t inline:t num:t p:nil pri:nil stat:t
#+OPTIONS: tags:t tasks:t tex:t timestamp:t toc:t todo:t |:t
#+CREATOR: Emacs 25.3.1 (Org mode 8.2.10)
#+DESCRIPTION:
#+EXCLUDE_TAGS: noexport
#+KEYWORDS:
#+LANGUAGE: en
#+SELECT_TAGS: export

根据自己的需求修改标题、日期、作者和 email。我自己的话是下面这样的:

#+TITLE: Hello World! My first LaTeX document
#+DATE: \today
#+AUTHOR: Sachin Patil
#+EMAIL: [email protected]

我们目前还不想创建一个目录,所以要将 toc 的值由 t 改为 nil,具体如下:

#+OPTIONS: tags:t tasks:t tex:t timestamp:t toc:nil todo:t |:t

现在让我们添加一个章节和段落吧。章节是由一个星号(*)开头。我们从 Aaron 的贴子(来自 Lipsum Lorem Ipsum 生成器)复制一些文本过来:

* Introduction

  \paragraph{}
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras lorem
  nisi, tincidunt tempus sem nec, elementum feugiat ipsum. Nulla in
  diam libero. Nunc tristique ex a nibh egestas sollicitudin.

  \paragraph{}
  Mauris efficitur vitae ex id egestas. Vestibulum ligula felis,
  pulvinar a posuere id, luctus vitae leo. Sed ac imperdiet orci, non
  elementum leo. Nullam molestie congue placerat. Phasellus tempor et
  libero maximus commodo.

 title=

helloworld.org 文件

将内容修改好后,我们要把它导出为 PDF 格式。再次在 “Org” 的菜单选项中选择 “Export/Publish”,但是这次,要输入 l(“export to LaTeX”),紧跟着输入 o(“as PDF file and open”)。这次操作不止会打开 PDF 文件让你浏览,同时也会将文件保存为 helloworld.pdf,并保存在与 helloworld.org 的同一个目录下。

 title=

将 helloworld.org 导出为 helloworld.pdf

 title=

打开 helloworld.pdf 文件

你也可以按下 Alt + x 键,然后输入 org-latex-export-to-pdf 来将 org 文件导出为 PDF 文件。可以使用 Tab 键来自动补全命令。

Emacs 也会创建 helloworld.tex 文件来让你控制具体的内容。

 title=

Emacs 在三个不同的窗口中分别打开 LaTeX,org 和 PDF 文档。

你可以使用命令来将 .tex 文件转换为 .pdf 文件:

pdflatex helloworld.tex

你也可以将 .org 文件输出为 HTML 或是一个简单的文本格式的文件。我最喜欢 .org 文件的原因是他们可以被推送到 GitHub 上,然后同 markdown 一样被渲染。

创建一个 LaTeX 的 Beamer 简报

现在让我们更进一步,通过少量的修改上面的文档来创建一个 LaTeX Beamer 简报,如下所示:

#+TITLE: LaTeX Beamer presentation
#+DATE: \today
#+AUTHOR: Sachin Patil
#+EMAIL: [email protected]
#+OPTIONS: ':nil *:t -:t ::t <:t H:3 \n:nil ^:t arch:headline
#+OPTIONS: author:t c:nil creator:comment d:(not "LOGBOOK") date:t
#+OPTIONS: e:t email:nil f:t inline:t num:t p:nil pri:nil stat:t
#+OPTIONS: tags:t tasks:t tex:t timestamp:t toc:nil todo:t |:t
#+CREATOR: Emacs 25.3.1 (Org mode 8.2.10)
#+DESCRIPTION:
#+EXCLUDE_TAGS: noexport
#+KEYWORDS:
#+LANGUAGE: en
#+SELECT_TAGS: export
#+LATEX_CLASS: beamer
#+BEAMER_THEME: Frankfurt
#+BEAMER_INNER_THEME: rounded


* Introduction
*** Programming
    - Python
    - Ruby

*** Paragraph one

    Lorem ipsum dolor sit amet, consectetur adipiscing
    elit. Cras lorem nisi, tincidunt tempus sem nec, elementum feugiat
    ipsum. Nulla in diam libero. Nunc tristique ex a nibh egestas
    sollicitudin.

*** Paragraph two

    Mauris efficitur vitae ex id egestas. Vestibulum
    ligula felis, pulvinar a posuere id, luctus vitae leo. Sed ac
    imperdiet orci, non elementum leo. Nullam molestie congue
    placerat. Phasellus tempor et libero maximus commodo.

* Thanks
*** Links
    - Link one
    - Link two

我们给标题增加了三行:

#+LATEX_CLASS: beamer
#+BEAMER_THEME: Frankfurt
#+BEAMER_INNER_THEME: rounded

导出为 PDF,按下 Alt + x 键后输入 org-beamer-export-to-pdf

 title=

用 Emacs 和 Org 模式创建的 Latex Beamer 简报

希望你会爱上使用 Emacs 来创建 LaTex 和 Beamer 文档(注意:使用快捷键比用鼠标更快些)。Emacs 的 Org 模式提供了比我在这篇文章中说的更多的功能,你可以在 orgmode.org 获取更多的信息.


via: https://opensource.com/article/18/4/how-create-latex-documents-emacs

作者:Sachin Patil 选题:lujun9972 译者:oneforalone 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Vim 和 Emacs 对于 Linux 桌面上进行文本编辑显然是重量级的,但是它们并非唯一之选。

Emacs 和 Vim 的粉丝们,在你们开始编辑器之争之前,请你们理解,这篇文章并不是为了贬低诸位最喜欢的编辑器。我是一个 Emacs 爱好者,但是也很喜欢 Vim。

就是说,我认为 Emacs 和 Vim 并不适合所有人。也许 编辑器之争 略显幼稚,让很多人失望了。也许他们只是想要有一个不太苛刻的现代化的编辑器。

如果你正寻找可以替代 Emacs 或者 Vim 的编辑器,请继续阅读下去。这里有三个可能会让你感兴趣的编辑器。

Geany

 title=

你可以用 Geany 编辑 LaTeX 文档

Geany 是一个古老的编辑器,当我还在过时的硬件上运行轻量级 Linux 发行版的时候,Geany 就是一个优秀的的编辑器。Geany 开始用于我的 LaTeX 编辑,但是很快就成为我所有的文本编辑的编辑器了。

尽管 Geany 号称是轻量且快速的 IDE(集成开发环境),但是它绝不仅仅是一个技术人的工具。Geany 轻便快捷,即便是在一个过时的机器或是 运行 Linux 的 Chromebook 也能轻松运行起来。无论是从编辑配置文件到维护任务列表或日志,从写文章或书籍到编写代码和脚本,Geany 都能轻松胜任。

插件 给 Geany 带来一些额外的魅力。这些插件拓展了 Geany 的功能,让你编码或是处理一些标记语言变得更高效,帮助你处理文本,甚至做拼写检查。

Atom

 title=

使用 Atom 编辑网页

在文本编辑器领域,Atom 后来居上。很短的时间内,Atom 就获得了一批忠实的追随者。

Atom 的定制功能让其拥有如此的吸引力。如果有一些技术癖好,你完全可以在这个编辑器上随意设置。如果你不仅仅是沉迷技术,Atom 也有 一些主题 ,你可以用来更改编辑器外观。

千万不要低估 Atom 数以千计的 拓展包。它们能在不同功能上拓展 Atom,能根据你的爱好把 Atom 转化成合适的文本编辑器或是开发环境。Atom 不仅为程序员提供服务。它同样是适用于 作家的文本编辑器

Xed

 title=

使用 Xed 编辑文章

可能对用户体验来说,Atom 和 Geany 略显臃肿。也许你只想要一个轻量级,一个不要太简陋也不要有太多很少使用的特性的编辑器,如此看来,Xed 正是你所期待的。

如果 Xed 你看着眼熟,那是因为它是 MATE 桌面环境中 Pluma 编辑器上的分支。我发现相比于 Pluma,Xed 可能速度更快一点,响应更灵敏一点——不过,因人而异吧。

虽然 Xed 没有那么多的功能,但也不至于太糟。它有扎实的语法高亮,略强于一般的搜索替换和拼写检查功能以及单窗口编辑多文件的选项卡式界面。

其他值得发掘的编辑器

我不是 KDE 痴,当我工作在 KDE 环境下时, KDevelop 就已经是我深度工作时的首选了。它很强大而且灵活,又没有过大的体积,很像 Genany。

虽然我还没感受过对它的喜爱,但是我认识的几个人都用 Brackets 感受到了。它很强大,而且不得不承认它的 拓展 真的很实用。

被称为 “开发者的编辑器” 的 Notepadqq ,总让人联想到 Notepad++。虽然它的发展仍处于早期阶段,但至少它看起来还是很有前景的。

对于那些只有简单的文本编辑器需求的人来说,GeditKate 相比是极好的。它绝不是太过原始的编辑器——它有足够完成大型文本编辑的功能。无论是 Gedit 还是 Kate 都以速度和易上手而称名。

你有其他 Emacs 和 Vim 之外的挚爱编辑器么?方便的话留言分享。


via: https://opensource.com/article/17/9/3-alternatives-emacs-and-vim

作者:Scott Nesbitt 译者:CYLeft 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

介绍在命令行编辑中使用 vi 模式。

作为一名大型开源社区的参与者,更确切地说,作为 Fedora 项目的成员,我有机会与许多人会面并讨论各种有趣的技术主题。我最喜欢的主题是“命令行”或者说 shell,因为了解人们如何熟练使用 shell 可以让你深入地了解他们的想法,他们喜欢什么样的工作流程,以及某种程度上是什么激发了他们的灵感。许多开发和运维人员在互联网上公开分享他们的“ dot 文件”(他们的 shell 配置文件的常见俚语),这将是一个有趣的协作机会,让每个人都能从对命令行有丰富经验的人中学习提示和技巧并分享快捷方式以及有效率的技巧。

今天我在这里会为你介绍 shell 中的 vi 模式。

在计算和操作系统的庞大生态系统中有很多 shell。然而,在 Linux 世界中,bash 已经成为事实上的标准,并在在撰写本文时,它是所有主要 Linux 发行版上的默认 shell。因此,它就是我所说的 shell。需要注意的是,bash 在其他类 UNIX 操作系统上也是一个相当受欢迎的选项,所以它可能跟你用的差别不大(对于 Windows 用户,可以用 cygwin)。

在探索 shell 时,首先要做的是在其中输入命令并得到输出,如下所示:

$ echo "Hello World!"
Hello World!

这是常见的练习,可能每个人都做过。没接触过的人和新手可能没有意识到 bash shell 的默认输入模式是 Emacs 模式,也就是说命令行中所用的行编辑功能都将使用 Emacs 风格的“键盘快捷键”。(行编辑功能实际上是由 GNU Readline 进行的。)

例如,如果你输入了 echo "Hello Wrld!",并意识到你想要快速跳回一个单词(空格分隔)来修改打字错误,而无需按住左箭头键,那么你可以同时按下 Alt+b,光标会将向后跳到 W

$ echo "Hello Wrld!"
              ^
        Cursor is here.

这只是使用提供给 shell 用户的诸多 Emacs 快捷键组合之一完成的。还有其他更多东西,如复制文本、粘贴文本、删除文本以及使用快捷方式来编辑文本。使用复杂的快捷键组合并记住可能看起来很愚蠢,但是在使用较长的命令或从 shell 历史记录中调用一个命令并想再次编辑执行时,它们可能会非常强大。

尽管 Emacs 的键盘绑定都不错,如果你对 Emacs 编辑器熟悉或者发现它们很容易使用也不错,但是仍有一些人觉得 “vi 风格”的键盘绑定更舒服,因为他们经常使用 vi 编辑器(通常是 vimnvim)。bash shell(再说一次,通过 GNU Readline)可以为我们提供这个功能。要启用它,需要执行命令 $ set -o vi

就像魔术一样,你现在处于 vi 模式了,现在可以使用 vi 风格的键绑定来轻松地进行编辑,以便复制文本、删除文本、并跳转到文本行中的不同位置。这与 Emacs 模式在功能方面没有太大的不同,但是它在你如何与 shell 进行交互执行操作上有一些差别,根据你的喜好这是一个强大的选择。

我们来看看先前的例子,但是在这种情况下一旦你在 shell 中进入 vi 模式,你就处于 INSERT 模式中,这意味着你可以和以前一样输入命令,现在点击 Esc 键,你将处于 NORMAL 模式,你可以自由浏览并进行文字修改。

看看先前的例子,如果你输入了 echo "Hello Wrld!",并意识到你想跳回一个单词(再说一次,用空格分隔的单词)来修复那个打字错误,那么你可以点击 Esc 从 INSERT 模式变为 NORMAL 模式。然后,您可以输入 B(即 Shift+b),光标就能像以前那样回到前面了。(有关 vi 模式的更多信息,请参阅这里。):

$ echo "Hello Wrld!"
              ^
        Cursor is here.

现在,对于 vi/vim/nvim 用户来说,你会惊喜地发现你可以一直使用相同的快捷键,而不仅仅是在编辑器中编写代码或文档的时候。如果你从未了解过这些,并且想要了解更多,那么我可能会建议你看看这个交互式 vim 教程,看看 vi 风格的编辑是否有你所不知道的。

如果你喜欢在此风格下与 shell 交互,那么你可以在主目录中的 ~/.bashrc 文件底部添加下面的行来持久设置它。

set -o vi

对于 emacs 模式的用户,希望这可以让你快速并愉快地看到 shell 的“另一面”。在结束之前,我认为每个人都应该使用任意一个让他们更有效率的编辑器和 shell 行编辑模式,如果你使用 vi 模式并且这篇文章给你展开了新的一页,那么恭喜你!现在就变得更有效率吧。

玩得愉快!


作者简介:

Adam Miller 是 Fedora 工程团队成员,专注于 Fedora 发布工程。他的工作包括下一代构建系统、自动化、RPM 包维护和基础架构部署。Adam 在山姆休斯顿州立大学完成了计算机科学学士学位与信息保障与安全科学硕士学位。他是一名红帽认证工程师(Cert#110-008-810),也是开源社区的活跃成员,并对 Fedora 项目(FAS 帐户名称:maxamillion)贡献有着悠久的历史。


via: https://opensource.com/article/17/3/fun-vi-mode-your-shell

作者:Adam Miller 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

文本编辑软件在任何操作系统上都是必备的软件。我们在 Linux 上不缺乏非常现代化的编辑软件,但是它们都是基于 GUI(图形界面)的编辑软件。

正如你所了解的,Linux 真正的魅力在于命令行。当你正在用命令行工作时,你就需要一个可以在控制台窗口运行的文本编辑器。

正因为这个目的,我们准备了一个基于 Linux 命令行的文本编辑器清单。

VIM

如果你已经使用 Linux 有一段时间,那么你肯定听到过 Vim 。Vim 是一个高度可配置的、跨平台的、高效率的文本编辑器。

几乎所有的 Linux 发行版本都已经内置了 Vim ,由于其特性之丰富,它已经变得非常流行了。

Vim 用户界面

Vim 可能会让第一次使用它的人感到非常痛苦。我记得我第一次尝试使用 Vim 编辑一个文本文件时,我是非常困惑的。我不能用 Vim 输入一个字母,更有趣的是,我甚至不知道该怎么关闭它。如果你准备使用 Vim ,你需要有决心跨过一个陡峭的学习路线。

但是一旦你经历过了那些,通过梳理一些文档,记住它的命令和快捷键,你会发现这段学习经历是非常值得的。你可以将 Vim 按照你的意愿进行改造:配置一个让你看起来舒服的界面,通过使用脚本或者插件等来提高工作效率。Vim 支持格式高亮,宏记录和操作记录。

在Vim官网上,它是这样介绍的:

Vim: The power tool for everyone!

如何使用它完全取决于你。你可以仅仅使用它作为文本编辑器,或者你可以将它打造成一个完善的IDE( 集成开发环境 Integrated Development Environment )。

GNU EMACS

GNU Emacs 毫无疑问是非常强大的文本编辑器之一。如果你听说过 Vim 和 Emacs ,你应该知道这两个编辑器都拥有非常忠诚的粉丝基础,并且他们对于文本编辑器的选择非常看重。你也可以在互联网上找到大量关于他们的段子:

Vim vs Emacs

Emacs 是一个跨平台的、既有有图形界面也有命令行界面的软件。它也拥有非常多的特性,更重要的是,可扩展!

Emacs 用户界面

像 Vim一样,Emacs 也需要经历一个陡峭的学习路线。但是一旦你掌握了它,你就能完全体会到它的强大。Emacs 可以处理几乎所有类型文本文件。它的界面可以定制以适应你的工作流。它也支持宏记录和快捷键。

Emacs 独特的特性是它可以“变形”成和文本编辑器完全不同的的东西。有大量的模块可使它在不同的场景下成为不同的应用,例如:计算器、新闻阅读器、文字处理器等。你甚至都可以在 Emacs 里面玩游戏。

NANO

如果说到简易方便的软件,Nano 就是一个。不像 Vim 和 Emacs,nano 的学习曲线是平滑的。

如果你仅仅是想创建和编辑一个文本文件,不想给自己找太多挑战,Nano 估计是最适合你的了。

Nano 用户界面

Nano 可用的快捷键都在用户界面的下方展示出来了。Nano 仅仅拥有最基础的文本编辑软件的功能。

它是非常小巧的,非常适合编辑系统配置文件。对于那些不需要复杂的命令行编辑功能的人来说,Nano 是完美配备。

其它

这里还有一些我想要提及其它编辑器:

The Nice Editor (ne): 官网是这样介绍的:

如果你有足够的资料,也有使用 Emacs 的耐心或使用 Vim 的良好心态,那么 ne 可能不适合你。

基本上 ne 拥有像 Vim 和 Emacs 一样多的高级功能,包括:脚本和宏记录。但是它有更为直观的操作方式和平滑的学习路线。

你认为呢?

我知道,如果你是一个熟练的 Linux 用户,你可以会说还有很多应该被列入 “Linux 最好的命令行编辑器”清单上。因此我想跟你说,如果你还知道其他的 Linux 命令行文本编辑器,你是否愿意跟我们一同分享?


via: https://itsfoss.com/command-line-text-editors-linux/

作者:Munif Tanjim 译者:chenzhijun 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出