2020年12月

编程一个简单的游戏是练习一门新语言并与其他你掌握的语言进行比较的好方法。

学习一门新的编程语言是很有趣的。每当我尝试学习一门新的语言时,我都会专注于定义变量、编写语句和评估表达式。一旦我对这些概念有了大致的了解,我通常可以自己弄清楚其余的概念。大多数编程语言都有一些相似之处,所以一旦你了解了一种编程语言,学习下一种编程语言就是要弄清楚其独特的细节,认识到其中的差异。

为了帮助我练习一种新的编程语言,我喜欢写一些测试程序。我经常写的一个示例程序是一个简单的“猜数字”程序,电脑在 1 到 100 之间选一个数字,让我猜这个数字。程序会一直循环,直到我猜对为止。

“猜数字”程序锻炼了编程语言中的几个概念:如何给变量赋值,如何写语句,如何进行条件判断和循环。对于学习一门新的编程语言来说,这是一个很好的实践实验。

用 Bash 猜数字

Bash) 是大多数 Linux 系统的标准 shell。除了提供丰富的命令行用户界面外,Bash 还以脚本的形式支持完整的编程语言。

如果你对 Bash 不熟悉,我推荐你看这些介绍:

你可以通过编写一个 Bash 版本的“猜数字”游戏来探索它。这是我的实现:

#!/bin/bash

number=$(( $RANDOM % 100 + 1 ))

echo "Guess a number between 1 and 100"

guess=0

while [ "0$guess" -ne $number ] ; do
        read guess
        [ "0$guess" -lt $number ] && echo "Too low"
        [ "0$guess" -gt $number ] && echo "Too high"
done

echo "That's right!"
exit 0

拆解这个脚本

脚本中的第一行,#!/bin/bash 告诉 Linux 使用 Bash shell 来运行这个脚本。每个脚本都以 #! 字符对(LCTT 译注:释伴)开始,这表示它是一个 shell 脚本。紧跟在#! 后面的是要运行的 shell。在本例中,/bin/bash 是指 Bash shell。

要给一个变量赋值,在变量名后面列出 = 号。例如,语句 guess=0guess 变量分配一个零值。

你也可以使用 read 语句提示用户输入一个值。如果你写了 read guess 语句,Bash 会等待用户输入一些文本,然后把这个值存储在 guess 变量中。

要引用一个变量的值,在变量名前使用 $。所以, 在 guess 变量中存储了一个值后, 你可以使用 $guess 来检索它。

你可以使用任何你喜欢的变量名称,但是 Bash 为自己保留了一些特殊的变量名称。一个特殊的变量是 RANDOM,每次引用它都会产生一个很大的随机数。

如果你想在存储一个值的同时执行一个操作,你需要用特殊的括号把语句括起来。这将告诉 Bash 先执行该语句,而 = 则将结果值存储在变量中。要评估一个数学表达式,使用 $(()) 围在你的语句上。双括号表示一个算术表达式。在我的例子中,number=$(( $RANDOM % 100 + 1 )) 评估表达式 $RANDOM % 100 + 1,然后将值存储在 number 变量中。

标准的算术运算符,如 +(加)、-(减)、*(乘)、/(除)和 %(模)都适用。

这意味着语句 number=$(( $RANDOM % 100 + 1 )) 产生一个 1 到 100 之间的随机数。模数运算符(%)返回两个数相除后的余数。在这种情况下,Bash 将一个随机数除以 100,剩下的余数范围是 0 到 99,通过在这个值上加 1,你可以得到一个介于 1 和 100 之间的随机数。

Bash 支持像循环这样的条件表达式流程控制。在“猜数字”的游戏中,只要 guess 中的值不等于 number,Bash 就会继续循环。如果猜的数小于随机数,Bash 就会打印“太低”,如果猜的数大于数字,Bash 就会打印“太高”。

它是如何工作的

现在你已经写好了你的 Bash 脚本,你可以运行它来玩“猜数字”游戏。一直猜,直到你找到正确的数字:

Guess a number between 1 and 100
50
Too high
30
Too high
20
Too high
10
Too low
15
Too high
13
Too low
14
That's right!

每次运行这个脚本,Bash 都会随机选择一个不同的数字。

这个“猜数字”游戏是学习新的编程语言时的一个很好的入门程序,因为它以一种很直接的方式锻炼了几个常见的编程概念。通过在不同的编程语言中实现这个简单的游戏,你可以展示一些核心概念,并比较每种语言的细节。

你有喜欢的编程语言吗?你会如何用它来写“猜数字”游戏呢?请关注本系列文章,看看你可能感兴趣的其他编程语言的例子。


via: https://opensource.com/article/20/12/learn-bash

作者:Jim Hall 选题:lujun9972 译者:wxy 校对:wxy

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

这是一个素颜朝天的文本编辑器,旨在让你的写作能被更好地阅读和理解。

有些文本编辑器是为编程而设计的,有些是为专门的文本格式而设计的,有些是为文档设计而设计的。Norka 文本编辑器是为阅读而设计的。创建一个为阅读而设计的文本编辑器似乎很奇怪,但实际上,如果你仔细想想,这是很有意义的。你的文字已经写了一次或三次,这取决于你个人对迭代的容忍度,但它的目的是为了在未来几年内被阅读。Norka 让你轻松地专注于你的文字如何被阅读。

安装

Norka 文本编辑器是 MIT 授权的,可以作为 Flatpak 包安装在 Linux上。它是开源的,所以如果你想尝试在不同的平台上安装它,你可以克隆它的 Github 仓库

Norka 的界面

Norka 的界面很简单。一个回到 Norka 文档集的按钮,一个导出按钮和一个偏好菜单。窗口的其余部分是供你写文字的空白空间,在右下角,有一个阅读时间计算器来帮助你了解读者可能需要多长时间才能看完你写的东西。

 title=

这几乎就是 Norka 的全部内容。没有分页符或行号,没有代码折叠或正则搜索。这是一个用于文字书写的编辑器,而不设置文档样式或跟踪复杂的数据模式。

当然,它还有一些额外的功能。如预期那样,可以使用 Ctrl+CCtrl+V 复制和粘贴。你可以用 Ctrl+Z 撤销,用 Ctrl+F 查找。你甚至可以用 Ctrl+: 插入表情符号。

 title=

样式文本

虽然 Norka 绝对没有兴趣帮你设计,比如说,一本小册子或传单,但它确实有一些能力来指示你想要的文本样式。它通过 Markdown 来实现这一点,这是一个简单的纯文本书写的约定,但用特殊的符号来指示文本应该如何在 HTML、EPUB 或 PDF 或任何你的目标格式中呈现。

在大多数编辑器中,你必须知道 Markdown 才能使用 Markdown,但 Norka 翻译了常见的文字处理器键盘快捷键来为你生成 Markdown。例如,要使一个单词加粗,你可以按 Ctrl+B,它会在光标的两边插入四个星号。当你输入下一个单词时,它的两边都会有两个星号,这就是 Markdown 对粗体(默认为粗体)文本的标记。你可以在 Norka 窗口右上角的汉堡样式的菜单中查看所有的 Markdown 快捷方式。

保存和导出

你可以把 Norka 想象成一个笔记本。你在 Norka 中打开的所有文档都会保留在 Norka 的内部数据库中,所有的文档都会默认自动保存。要在 Norka 外使用文件,你可以在打开的文件中点击右上角的共享按钮。另外,你也可以在 Norka 的文件视图中右击任何文件,选择导出。你可以将文档导出(或共享,Norka 可互换使用这两个术语)为文本HTMLMarkdown

尝试 Norka

Norka 便于尝试,也易于使用。它通过保持界面简单,几乎到了受限的程度,帮助你专注于写作。但限制有时也是一种强大的创意工具。

Norka 可能不是你进行大量修改或文本处理的最佳选择。它没有让人激动的功能,比如大小写转换、集成 sed 命令、字符交换等等。它是一个为读者服务的文本编辑器。如果你觉得有用,那么你可能正是 Norka 正在寻找的受众。

感谢你花 2 分 39 秒阅读本文!


via: https://opensource.com/article/20/12/norka

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

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

在将新配置的服务器投入工作之前,请确保你知道你正在使用什么。

当我在 Linux 上测试软件时(这是我工作中的一个常规部分),我需要使用多台运行 Linux 的不同架构的服务器。我整备机器,安装所需的软件包,运行我的测试,收集结果,并将机器返回到仓库中,以便其他人可以使用它进行测试。

由于我经常这样做(甚至一天多次),我初次登录 Linux 服务器的前 10 分钟内的工作已经成为每天的仪式。当我初次登录 Linux 服务器时,我会使用命令来收集我需要的信息来寻找某些东西。我将在本文中介绍我的过程,但请注意,在大多数情况下,我只给出命令名称,所以你需要确定这些命令的具体选项,以获得你需要的信息。阅读命令的手册页是一个很好的起点。

1、第一次接触

当我登录到一台服务器时,我做的第一件事就是检查它是否拥有我将要运行的测试所需的操作系统、内核和硬件架构。我经常会检查一台服务器已经运行了多久。虽然这对测试系统来说并不重要,因为它会被多次重启,但我还是发现这些信息很有帮助。

使用下面的命令来获取这些信息。我主要使用 Red Hat Linux 进行测试,所以如果你使用其他 Linux 发行版,请在文件名中使用 *-release 而不是 redhat-release

cat /etc/redhat-release
uname -a
hostnamectl
uptime

2、有人登录在上面吗?

一旦我知道这台机器符合我的测试需求,我需要确保没有其他人同时登录该系统运行他们自己的测试。虽然考虑到整备系统会帮我处理好这个问题,这种可能性很小,但偶尔检查一下还是有好处的 —— 尤其是当我第一次登录服务器的时候。我还会检查是否有其他用户(除了 root)可以访问系统。

使用下面的命令来查找这些信息。最后一条命令是查找 /etc/passwd 文件中具有 shell 访问权限的用户;它会跳过文件中没有 shell 访问权限或 shell 设置为 nologin 的其他服务:

who
who -Hu
grep sh$ /etc/passwd

3、物理机还是虚拟机

现在我有了属于自己的机器,我需要确定它是一台物理机还是一台虚拟机(VM)。如果是我自己整备的这台机器,我可以确定这是我要求的东西。但是,如果你使用的是一台不是你自己整备的机器,你应该检查该机器是物理机还是虚拟机。

使用以下命令来识别这些信息。如果是物理系统,你会看到供应商的名称(如 HP、IBM 等)以及服务器的品牌和型号;而在虚拟机中,你应该看到 KVM、VirtualBox 等,这取决于创建虚拟机时使用了什么虚拟化软件:

dmidecode -s system-manufacturer
dmidecode -s system-product-name
lshw -c system | grep product | head -1
cat /sys/class/dmi/id/product_name
cat /sys/class/dmi/id/sys_vendor

4、硬件

因为我经常测试连接到 Linux 机器的硬件,所以我通常使用物理服务器,而不是虚拟机。在物理机器上,我的下一步是确定服务器的硬件能力 —— 例如,运行的是什么类型的 CPU,它有多少个核心,启用了哪些标志,以及有多少内存可用于运行测试。如果我正在运行网络测试,我会检查连接到服务器的以太网或其他网络设备的类型和容量。

使用以下命令来显示连接到 Linux 服务器的硬件。其中一些命令在新的操作系统版本中可能会被废弃,但你仍然可以从 yum 存储库中安装它们或切换到它们的等效新命令:

lscpu or cat /proc/cpuinfo
lsmem or cat /proc/meminfo
ifconfig -a
ethtool <devname>
lshw
lspci
dmidecode

5、已安装的软件

测试软件总是需要安装额外的依赖包、库等。然而,在安装任何东西之前,我都会检查已经安装了什么(包括是什么版本),以及配置了哪些存储库,这样我就知道软件来自哪里,并可以调试任何软件包安装问题。

使用下面的命令来确定安装了什么软件:

rpm -qa
rpm -qa | grep <pkgname>
rpm -qi <pkgname>
yum repolist
yum repoinfo
yum install <pkgname>
ls -l /etc/yum.repos.d/

6、运行的进程和服务

检查了安装的软件之后,自然就会检查系统上有哪些进程在运行。当在系统上运行性能测试时,这一点至关重要 —— 如果一个正在运行的进程、守护进程、测试软件等占用了大部分 CPU/RAM,那么在运行测试之前停止该进程是有意义的。这也可以检查测试所需的进程或守护进程是否已经启动并运行。例如,如果测试需要 httpd 运行,那么即使安装了软件包,启动守护进程的服务也可能没有运行。

使用以下命令来识别系统上正在运行的进程和已启用的服务:

pstree -pa 1
ps -ef
ps auxf
systemctl

7、网络连接

如今的机器网络化程度很高,它们需要与网络上的其他机器或服务进行通信。我会识别服务器上哪些端口是开放的,是否有到测试机器的任何网络连接,是否启用了防火墙,如果启用了,是否屏蔽了任何端口,以及机器与哪些 DNS 服务器对话。

使用以下命令来识别网络服务相关信息。如果一个过时的命令不可用,请从 yum 存储库中安装它或使用等效的新命令:

netstat -tulpn
netstat -anp
lsof -i
ss
iptables -L -n
cat /etc/resolv.conf

8、内核

在进行系统测试时,我发现了解内核相关的信息是很有帮助的,比如内核版本和加载了哪些内核模块。我还会列出任何可调整的内核参数以及它们的设置,并检查启动运行中的内核时使用的选项。

使用以下命令来识别这些信息:

uname -r
cat /proc/cmdline
lsmod
modinfo <module>
sysctl -a
cat /boot/grub2/grub.cfg

9、日志

现在,我已经对服务器有了很好的了解,包括安装了哪些软件,运行了哪些进程。还有一件事我无法逃避,那就是日志文件 —— 我需要知道在哪里可以查看不断更新的信息。

使用以下命令查看系统的日志:

dmesg
tail -f /var/log/messages
journalctl

接下来的步骤

虽然命令和实用程序会发生变化,但它们所显示的基本信息大致不变。在你专注于掌握哪些命令之前,你需要对你要寻找的信息以及它属于什么类别有一个宏观的看法。

由于 Linux 将大部分信息保存在文件中,这些命令基本上是从文件中读取信息,并以一种易于理解的方式呈现出来。下一步的好做法是找出每个命令用来获取信息显示的文件。一个提示:寻找这些信息的方法是 strace 命令。


via: https://opensource.com/article/20/12/linux-server

作者:Gaurav Kamathe 选题:lujun9972 译者:wxy 校对:wxy

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

这篇初学者文章介绍如何在 Fedora 和 Red Hat Linux 上安装 RPM 软件包。它也随后向你展示如何移除这些 RPM 软件包。

当你开始使用 Red Hat 系的 Fedora Linux 时,你早晚会偶然发现 .rpm 文件。就像在 Windows 中的 .exe 文件,以及在 Ubuntu 和 Debian 中的 .deb 文件一样,一个 rpm 文件能够使你在 Fedora 上快速安装一个软件。

你可以从软件中心中找到并安装大量的软件,特别是 如果你在 Fedora 中启用附加的存储库的话。但是有时你会在它们的网站上找到可用的 RPM 格式的软件包。

就像在 Windows 中的 .exe 文件一样,你可以通过 下载 .rpm 文件并双击它来安装。不用担心,我将向你展示详细的步骤。

在 Fedora 和 Red Hat Linux 上安装 RPM 文件

我将向你展示安装 RPM 文件的三个方法:

方法 1: 使用软件中心

在 Fedora 中使用默认的软件中心是最简单的方法。它真地很简单。转到你下载的 .rpm 文件的文件夹位置。它通常在 “Downloads” 文件夹。

只需要 双击 RPM 文件,它将会在软件中心中打开

或者,你可以在 RPM 文件上右键单击并选择通过软件中心来安装它。

或者双击或者右键并选择软件安装

当它在软件中心打开时,你应该会看到“安装”选项。只需要点击“安装”按钮并在提示时输入你的账号密码。

通过 Fedora 软件中心安装 RPM

它很简单,对吗?

方法 2: 使用 DNF 命令来安装 RPM 文件

这是命令行方法。Fedora 使用新的 dnf 软件包管理器 ,你也可以使用它来安装下载的 RPM 文件。

打开一个终端并切换到你下载 RPM 文件的目录下。你也可以通过到 RPM 文件的路径。像这样使用 dnf 命令:

sudo dnf install rpm_file_name

这是一个我 在 Fedora 上使用 dnf 命令安装 Google Chrome 屏幕截图:

使用 DNF 命令安装 RPM 文件

方法 3: 在 Red Hat 中使用 Yum 命令安装 RPM 文件

不像 Fedora ,Red Hat 仍然使用很好的旧式的 Yum 软件包管理器。在这里你还不能找到 dnf 命令。

这个过程与 dnf 命令相同。转到 RPM 文件所在的目录或提供它的路径。

sudo yum install path_to_RPM_file

就是这样。没有一点异常花哨的东西。

如何移除 RPM 软件包

移除一个 RPM 软件包也不是一个什么大的问题。并且,你不需要原始的用来安装程序的 rpm 文件。

你可以在软件中心中找到已安装的软件包,并从其中移除应用程序。

移除 RPM 软件包

或者,你可以使用带有 remove 选项的 dnfyum 命令。

使用 dnf ,使用这个命令:

sudo dnf remove rpm_package_name

使用 yum ,使用这个命令:

sudo yum remove rpm_package_name

你可能不记得准确的软件包名称,没有关系。你可以做的是输入软件包的前几个字母,然后敲击 tab 按键。这是假设你已经启用 tab 按键补全,通常是这样的。

这就是你需要做的全部。相当简单,对吧?作为一个初学者,你可能会为这样一个简单的任务而挣扎,我希望像这样的快速教程会让你对 Fedora 更自信一些。


via: https://itsfoss.com/install-rpm-files-fedora/

作者:Abhishek Prakash 选题:lujun9972 译者:robsean 校对:wxy

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

这篇初学者文章解释了如何在 Ubuntu 中安装 deb 软件包。它稍后也向你展示如何移除这些 deb 软件包。

这是 Ubuntu 初学者系列的另一篇文章。如果你对 Ubuntu 很陌生,你可能会想知道 如何安装应用程序

最简单的方法是使用 Ubuntu 软件中心。在软件中心中搜索应用程序的名称并安装它。如果你能在软件中心中找到所有的应用程序,那么生活就太惬意了。但是,不幸的是,这是不可能的发生的。

一些软件包可以通过 DEB 软件包的形式获得。它们是以 .deb 扩展名为结尾的存档文件。你可以把 .deb 文件看作为 Windows 中的 .exe 文件。在 Windows 中,你双击 .exe 文件,它将开始安装过程。DEB 软件包也是非常类似的。

你可以从软件提供商网站的下载区域找到这些 DEB 软件包。例如,如果你想 在 Ubuntu 上安装 Google Chrome ,你可以从它的网站下载 Chrome 的 DEB 软件包。

现在问题产生了,你将如何安装 deb 文件呢?在 Ubuntu 中有多种安装 DEB 软件包的方法。在这篇教程中,我将向你依次地展示它们。

在 Ubuntu 中安装 deb 文件

在 Ubuntu 和基于 Debian 的 Linux 发行版中安装 .deb 文件

你可以选择一个 GUI 工具或一个命令行工具来安装一个 deb 软件包。你拥有选择权。

让我们继续看看如何安装 deb 文件。

方法 1: 使用默认的软件中心

在 Ubuntu 中,最简单的方法是使用默认的软件中心。在这里你不必要做任何特别的事。只需要转到你所下载的 .deb 文件的文件夹下(它应该是 Downloads 文件夹),并在这个文件上双击。

在 Ubuntu 上的 Google Chrome 的 deb 文件

在已下载的 .deb 文件上双击以开始安装。

它将打开软件中心,并且你将看到安装软件时的选项。你所需要做的全部工作就是:点击安装按钮并输入你的登录密码。

在 Ubuntu 软件中心中安装 Google Chrome

.deb 文件的安装将通过软件中心来执行。

看,它甚至比在 Windows 中安装一个 .exe 文件更简单,不是吗?

方法 2: 使用 Gdebi 应用程序来安装 deb 软件包及其依赖项

再提一次,如果事情总是进展顺利,生活可能会更简单一些。但是生活并不是我们熟知的那样。

现在,你已经知道 .deb 文件可以简单地通过软件中心来安装,接下来,让我告诉你一些软件包可能会遇到的依赖项的错误。

发生错误的原因是,一个程序可能依赖于另外一个软件包(库)。当开发者为你准备 DEB 软件包时,他/她可能会假设你的系统中已经有了所依赖的软件包(库)。

但是如果情况并不是这样的,你的系统没有这些所需要的软件包(库),你将遇到臭名昭著的“依赖项错误”。

软件中心不能处理这样的错误,因此你不得不使用另外一个名称为 gdebi 的工具。

gdebi 是一个轻量级的 GUI 应用程序,它只有安装 deb 软件包的一个用途。

它将识别依赖项,并尝试在安装 .deb 文件的同时安装这些依赖项。

gdebi 在安装 deb 软件包时处理依赖项

就我个人而言,我更喜欢使用 gdebi 而不是使用软件包中心来安装 deb 文件。它是一个轻量级应用程序,因此安装过程看起来更快一点。更多的信息,你可以阅读使用 gDebi ,并使其成为安装 DEB 软件包的默认设置

你可以从软件中心或使用下面的命令来安装 gdebi :

sudo apt install gdebi

方法 3: 在命令行中使用 dpkg 安装 .deb 文件

如果你想在命令行中安装 deb 软件包,你可以使用 apt 命令或者 dpkg 命令。实际上,apt 命令在底层上使用 dpkg 命令,但是 apt 却更流行和易于使用。

如果你想对 deb 文件使用 apt 命令,像这样使用它:

sudo apt install path_to_deb_file

如果你想对将要安装的 deb 软件包使用 dpkg 命令,在这里是如何完成它:

sudo dpkg -i path_to_deb_file

在这两个命令中,你应该使用你已下载的 deb 文件的路径和名称来替换 path_to_deb_file

在 Ubuntu 中使用 dpkg 命令安装 deb 文件

如果你在安装 deb 软件包的过程中得到一个依赖项的错误,你可以使用下面的命令来修复依赖项的问题:

sudo apt install -f

如何移除 deb 软件包

移除一个 deb 软件包也不是一件什么大事。并且,你不需要用于安装程序的原始的 deb 文件。

方法 1: 使用 apt 命令移除 deb 软件包

你所需要的全部东西就是你所已安装程序的名称,接下来你可以使用 aptdpkg 来移除这个程序。

sudo apt remove program_name

现在,问题来了,在移除命令中,你如何找到你所需要使用的准确的程序名称?为此,apt 命令也有一个解决方案。

你可以使用 apt 命令找到所有已安装文件的列表,但是手动完成这一过程将会是一件令人头疼的事。因此,你可以使用 grep 命令来搜索你的软件包。

例如,在先前的部分中,我已安装 AppGrid 应用程序,但是如果我想知道准确的程序名称,我可以像这样使用一些东西:

sudo apt list --installed | grep grid

这将给予我全部的名称中含有 “grid” 的软件包,从这里,我可以得到准确的程序名称。

apt list --installed | grep grid
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
appgrid/now 0.298 all [installed,local]

正如你所看到的,一个名称为 “appgrid” 的软件包已经安装。现在,你可以在 apt remove 命令中使用这个程序名称。

方法2: 使用 dpkg 命令移除 deb 软件包

你可以使用 dpkg 来找到已安装程序的名称:

dpkg -l | grep grid

该输出将给予所有的名称中有 “grid” 的软件包。

dpkg -l | grep grid

ii appgrid 0.298 all Discover and install apps for Ubuntu

在上面的命令输出中的 ii 意味着软件包已经被正确地安装。

现在,你有了程序名称,你可以使用 dpkg 命令来移除它:

dpkg -r program_name

提示:更新 deb 软件包

一些 deb 软件包 (像 Chrome)通过系统更新来提供其更新,但是对于大多数的其它的程序,你将不得不先移除已存在的程序,并在接下来安装更新的版本。

我希望这篇初学者指南能够帮助你在 Ubuntu 上安装 deb 软件包。我添加了移除部分,以便你可以更好地控制你所安装的程序。


via: https://itsfoss.com/install-deb-files-ubuntu

作者:Abhishek Prakash 选题:lujun9972 译者:robsean 校对:wxy

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

这个编辑器可能会让人联想到 Vim,但它也提供了很多自己独特的功能和特性。

Kakoune 文本编辑器的灵感来源于 Vi。它拥有简约的界面、简短的键盘快捷键以及独立的编辑和插入模式,乍一看确实看起来和感觉很像 Vi。然而,Kakoune 编辑器在设计和功能上都有自己独特的风格,与其说是另一个 Vim,不如说是它是它自己。

安装

在 Linux 和 BSD 上,你可以从你的发行版的软件仓库或 port 树上安装 Kakoune。例如,在 Fedora、CentOS 或 RHEL 上:

$ sudo dnf install kakoune

在 Debian、Ubuntu 或类似的系统上:

$ sudo apt install kakoune

在 macOS 上,你可以使用 Homebrew:

$ brew install kakoune

或者,你也可以从源码构建

启动 Kakoune 的命令是 kak。你可以启动 Kakoune 打开空文件,也可以在启动时包含文件名让它打开:

$ kak example.txt

使用 Kakoune

当你启动 Kakoune(不带文件名)时,除了在窗口底部有一个小的状态栏外,它在你的终端中打开的大部分是空的缓冲区。像 Vim 一样,Kakoune 以“正常”模式启动,它把按键作为命令,不向缓冲区输入文本。要进入插入模式,你必须按 i(代表 插入 Insert )或 a(代表 追加 Append )。

在插入模式下,Kakoune 的操作和其他编辑器一样。你在键盘上输入,然后你输入的字符就会显示在缓冲区里。在插入模式下,你可以使用方向键来浏览缓冲区。

正常模式

在正常模式下,你可以发出导航和文本编辑命令。这是从 Vi 传统中借用的最明显的功能。编辑命令包括复制、剪切(在传统的 Unix 编辑术语中,称为 “ 猛拉 yank ”)、粘贴单词和行、撤销、转换字符大小写等功能。下面是一些基础:

  • d:复制并删除当前选择(现代术语中的“剪切”)
  • c:复制并删除当前选择,并进入插入模式
  • Esc+Alt+d:删除当前选择
  • y:复制选择
  • p:粘贴
  • <:取消所选行的缩进
  • u:撤消
  • U:重做
  • `:转为小写
  • ~:转换为大写

选择

在 Kakoune 中,你的光标是一个单字符的移动选区。除非你扩展你的选区,否则任何影响选区的命令都只适用当前光标位置。例如,如果你的光标悬停在字母 n 上,那么复制命令(正常模式下的 c)会将字母 n 复制到剪贴板,而粘贴命令(正常模式下的 p)则会将字母 n 粘贴到缓冲区。

从单个字符扩展选区的最简单方法是进入正常模式,按下 Shift 键,同时用方向键移动光标。然而,有几种方法可以根据某些标准来扩展选区。例如,Alt+l 将选区从光标扩展到当前行的末端。

完整的文档可以在 https://github.com/mawww/kakoune/blob/master/README.asciidoc 中找到。

函数

除了这些基本的交互,你还可以执行命令来调用 Kakoune 的内置功能。要访问 Kakoune 的命令行,在普通模式下输入 :。在命令行中,你可以执行命令,包括打开文件的 edit 命令,保存缓冲区到文件的 write 命令,当然还有退出应用的 quit

还有更多的函数,包括针对特定编程语言和文件格式的特殊选项、使用 Ranger 文件浏览器浏览文件系统的选项、改变颜色主题、搜索和替换文本等等。

 title=

尝试 Kakoune

如果你是一个有经验的 Vim 用户,或者甚至是一个只是略知一二的人,你可能会发现 Kakoune 一开始会让你感到迷惑。它与 Vim 的相似度足以让你陷入一种虚假的熟悉感。一切都与 Vim 一模一样,直到你发现了完全不同的地方。不过,如果你是一个刚接触 Vim 编辑器的新手,或者你是一个正在寻找新挑战的 Vim 用户,那么 Kakoune 可能是你的理想编辑器。

你自己试试吧!


via: https://opensource.com/article/20/12/kakoune

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

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