2022年3月

我在 PinePhone 上测试了 Maui Shell,结果有好有坏。如果你想冒险尝鲜一下,可以按照这个说明进行试验!

就在一个多月前,我们写了 Maui Shell 初窥。它是由 Nitrux Linux 团队开发的,我对它流畅的视觉效果,特别是它的融合功能印象深刻。

同时,我结束了 我一年的 PinePhone 日用实验,这意味着它可以再次自由地进行实验。结果,我很快就自己安装了 Maui Shell,花了不少时间来测试它。

下面是我的发现!

关于 Maui Shell 开发状态的简短说明

在我们开始之前,我想指出,Maui Shell 仍处于早期开发阶段。因此,我一般不会提到我注意到的 bug,而是将重点放在它的更基本的方面。

不过,对于更大的、更耗时的问题例外,所以请记住这一点。

说完了这些,让我们开始测试吧!

手机上的 Maui Shell

安装完之后,我就看到了 Maui Shell 的(现在熟悉的)桌面上。随即,非常明显的是,它的缩放比例完全错误,这使得它很难使用。

幸运的是,Maui 项目的 Telegram 群组的人提供了极大帮助,我没用了一个小时就成功地修复了缩放比例(感谢 @wachidadinugroho)。

现在好了,我开始测试。

其性能堪比糖浆流动

如果你读过我的 PinePhone 点评,你可能记得把它的性能比作糖蜜滴落的速度。不幸的是,Maui Shell 将这一点提升到了一个全新的高度。即使是最基本的互动,如打开快速控制菜单,也要花上五秒钟的时间!

不幸的是,我的水平还不足以判断这种缓慢的原因,但它很有可能是由软件渲染造成的。如果你不清楚,“软件渲染”是指图形不在 GPU 上渲染,而是在效率和优化程度都更低的 CPU 上(利用软件来)渲染。

我考虑的另一个可能的罪魁祸首是糟糕的优化(毕竟它还处在早期阶段)。如果是这样的话,那么在未来的几个月里,极有可能在为 Maui Shell 的第一个稳定版本做准备的过程中修复这个问题。

然而,正如我之前所说的,对我的早期看法要多加注意。

有望实现的用户体验

与几乎所有的移动 UI 一样,Maui Shell 在触摸屏上使用起来简单而直观。然而,它也结合了许多桌面元素,这对提高用户体验有很大的作用。

例如,从屏幕顶部向下滑动会出现一个快速设置菜单,类似于在安卓和 iOS 上发现的那些。

然而,可以单独点击顶部通知栏的不同部分,会只显示相关的设置,类似于许多桌面环境面板和任务栏上的各种小程序。

现在,让我们前往 窗口管理

对于窗口管理,Maui Shell 团队显然从 GNOME 和 iOS 中获得了一些灵感,从屏幕底部向上滑动会显示一个类似 GNOME 的所有运行中的应用程序的概览。我发现这非常直观和简单,老实说,我很惊讶以前没有这样操作过!

最后,托盘也是 Maui Shell 在手机上的一个重要方面。它在默认情况下自动隐藏,可以通过从屏幕底部向上轻扫来访问。从这里,它显示了所有正在运行的应用程序的图标,以及一个打开应用程序启动器的按钮。

说到应用启动器,它与 iOS 14 及更高版本中的应用库非常相似。每个应用都被分类,只需轻点几下就能轻松找到并启动。

总的来说,其实用性有点独特,而且值得探究。而且,这种特性也延伸到了应用程序,它们是用 Mauikit 和 Kirigami 制作的。

我认为 Maui Shell 团队把基本的东西做得很完美。

应用程序超棒

任何用 Mauikit 构建的东西都能与 Maui Shell 完美整合。到目前为止,最大的 Mauikit 应用程序集来自 Maui Shell 的开发方 Maui 项目。其中一些包括:

  • Index
  • Nota
  • Station
  • VVave
  • Pix
  • Clip
  • Buho
  • Shelf
  • Communicator

所有这些应用都能在移动和桌面设备上完美运行,并将桌面级应用带到手机上。我对 Index 特别满意,它是一个有趣而实用的手机文件管理器。

Maui Index app

除了 Mauikit 应用外,Kirigami 应用也很好用。因此,在桌面和移动设备上都有一个非常适合 Maui Shell 的庞大的应用程序库。

其他观点

除了这些观察之外,还有一些小问题我想提一下:

  • 不幸的是,现在似乎还没有虚拟键盘。我通过使用 USB-C 连接的键盘来规避这个问题,但这并不意味着不能把它作为手机使用。
  • 我还发现了几个缩放的问题,我无法解决这些问题。这些问题包括应用程序的缩放比例远远超过 Maui Shell 本身,以及根本没有缩放比例。这也许是由于我的错误造成的,但我觉得不能指望一般的用户能够钻研晦涩的 Qt 专用环境变量。

自己测试 Maui Shell

如果所有这些问题都不影响你,那么你可以使用下面的说明在 PinePhone 上测试 Maui Shell。需要注意的是,这些都是针对 PinePhone 的,但也可以根据其他需要进行修改:

  • 下载 Arch Linux ARM 并刷入到 SD 卡上
  • 用 SD 卡启动,并连接一个外部键盘
  • 使用凭证 alarm/123456 登录
  • 现在使用 nmtui 连接到 Wi-Fi,并使用 sudo pacman -Syu 更新软件包列表
  • 运行以下命令(这些命令将需要很长的时间来运行):
sudo pacman -S base-devel
git clone https://aur.archlinux.org/packages/maui-shell-git
git clone https://aur.archlinux.org/packages/mauikit-git
cd mauikit-git
makepkg -Asi
cd ..
cd maui-shell-git
makepkg -Asi
  • 使用 nano 创建一个启动脚本:
cd
nano start.sh

输入如下内容:

#!/bin/sh

# in case it's not detected
# or you wish to override
#
# export QT_QPA_EGLFS_PHYSICAL_WIDTH=480
# export QT_QPA_EGLFS_PHYSICAL_HEIGHT=270

export QT_QPA_PLATFORM=eglfs
export QT_AUTO_SCREEN_SCALE_FACTOR=0
export QT_SCALE_FACTOR=2
cask -r -plugin libinput
  • 使脚本可执行:chmod +x start.sh

现在,可以用 ./start.sh 启动 Maui Shell 了。

就这样!

你对 Maui Shell 有什么看法?你认为它的融合功能有用吗?请在下面的评论中告诉我们!


via: https://news.itsfoss.com/tested-maui-shell/

作者:Jacob Crume 选题:lujun9972 译者:wxy 校对:wxy

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

RISC-V 走向成功的原因

RISC-V 不是第一款开源指令集的处理器,在它之前有 OpenPOWER、OpenSPARC、OpenRISC 等等,但 RISC-V 在短时间内就取得了令竞争对手 难以匹敌的成功。RISC-V 社区成员认为成功的原因是免费和自由,一些人想要能免费使用的核心,另一些人则想要自由定制核心。RISC-V 是第一种开放可定制的指令集,对自定义扩展的支持给予芯片设计师巨大的自由度。相比 ARM,它促进了竞争,你只能从 ARM 获得 ARM 核心,但你可以从不同供应商获得不同的 RISC-V 核心实现。

老王点评:RISC-V 就是 CPU 界的 Linux,总有一天,它会复制 Linux 的成功。

主要浏览器厂商共同建立了浏览器兼容性标准

有史以来第一次,所有主要的浏览器供应商坐到了一起,苹果、谷歌、微软和 Mozilla 等合作建立了一个名为 Interop 2022 的基准,以解决浏览器兼容性问题。该基准主要是面向设计的,衡量主要浏览器在 15 个 Web 平台规范的测试套件中的表现。现有浏览器的稳定版本,情况看起来都相当糟糕。Chrome 和 Edge 得分 61 分;Firefox 得分 69分;Safari 得分 50 分。而它们的测试版本的表现要好一些。

老王点评:虽然现在浏览器兼容性问题看起来没那么令人苦恼,但是我没想到各个主要浏览器的兼容性得分会这么低。

《第二人生》开始对游戏中的购买行为收税

《第二人生》是一个历史悠久的在线虚拟空间,吸引着近百万的月度活跃用户,自 2003 年推出以来,它 首次宣布 将对游戏中的购买行为收取美国用户的当地销售税。从 3 月 31 日开始,《第二人生》的用户将被要求缴纳订阅费和土地费等经常性账单的地方税。它将继续减免一次性购买产生的税款,如改名和购买游戏中的货币,但这些费用将在“未来的某个时候”转嫁给用户。

老王点评:这才叫现实走入虚拟世界,看来以后的元宇宙也免不了税务官。

回音

  • 三星表示,它正在努力“尽快”发布一个软件更新,允许用户通过游戏启动器来切换性能降低的开关,以解决 Galaxy 手机的 应用降速 的投诉。

Juk 是 Linux 上的 KDE Plasma 桌面的默认开源音乐播放器。

 title=

KDE 项目不只是提供了一个著名的桌面,它还产生了很多软件,从 视频编辑摄影插图 工具,到图形计算器、电子邮件和办公工作。这些都是生产力工具,但 KDE 也适合于放松。它有游戏和媒体播放器,而我使用的音乐播放器是 Juk

在 Linux 上安装 Juk

只要你的 Linux 发行版提供 KDE 软件包,你就可以用你的包管理器安装 Juk。

在 Fedora、Mageia 和类似发行版上:

$ sudo dnf install juk

在 Elementary、Linux Mint 和其他基于 Debian 的发行版上:

$ sudo apt install juk

使用 Juk

当你第一次启动 Juk 时,你会被问到你想用什么目录作为你的音乐集的来源。选择你希望 Juk 寻找音乐的文件夹,并可选择排除你希望 Juk 忽略的任何子目录。

 title=

取决于你有多少音乐,Juk 可能需要一些时间来解析文件系统和元数据。当它完成后,通常的 Juk 窗口就会出现,你所有的音乐都在一个叫做“ 收藏列表 Collection List ”的中央收藏列表中。

 title=

在顶部的搜索栏中,你可以在任何领域搜索任何字符串。双击歌曲,开始播放。

Juk 默认为连续播放,这意味着在它播放完你的选择后,它会继续播放收藏列表中的下一首歌曲,即使你已经将你的列表过滤到只有一首歌曲。这使音乐总是会不断播放,就像一个真正的点唱机。

就我个人而言,我更喜欢听完整的专辑,中间有足够的休息时间去厨房喝咖啡,所以我使用播放列表。

Juk 中的播放列表

Juk 中的播放列表可以包含你收藏列表中的任何内容。Juk 会在播放列表中播放一次,然后停止。

要创建一个播放列表,在左边的播放列表栏中点击右键,在出现的上下文菜单中选择 “ 新建 New ”。你可以创建一个空的播放列表,或者从你硬盘上的特定文件夹中创建一个播放列表。

 title=

自动播放列表

你还可以创建一个与特定搜索绑定的特殊播放列表,这对那些你经常购买并添加到你的收藏中的艺术家很有用。有了搜索播放列表,他们的新音乐就会被添加到他们的播放列表中,而无需你的手动干预。

打标签

让我们面对现实吧,音乐播放器是一堆一堆的出现,而且它们大多都做同样的事情。然而,Juk 增加了一个重要的功能。它让你有能力修改元数据标签。

 title=

很多音乐的标签是不一致的、不完整的,或者根本就没有,所以当你发现它们出现在播放队列中时,能够纠正它们是一种奢侈。

它还有一个标签猜测器的功能,它试图解析文件名,并对歌曲进行相应的标记。

明显的选择

当你在 KDE 上寻找一个音乐播放器时,Juk 是一个简单而明显的选择。当然,还有很多其他非常好的选择,正如我们的常驻发烧友 Chris Hermansen 在他的 3 个开源音乐播放器 文章中详细介绍的那样,但有时你只是想使用你最容易想到的东西。Juk 既能直观地使用,又能出色地完成它的任务。它是多么幸运啊,成为 KDE Plasma 桌面上的默认播放器。


via: https://opensource.com/article/22/2/listen-music-linux-juk-kde

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

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

我们需要利用文本编辑器来做笔记、写程序,或者编辑系统配置文件来完成一些事情。

不管你用来做什么,你的 Linux 发行版已经预装了文本编辑器。

你很可能会注意到一些 最好的现代文本编辑器,如 Gedit、Geany、Kate 等,它们已经预装在你的 Linux 发行版中。然而,这些都是基于 GUI 的程序。

如果你想通过终端访问文本编辑器怎么办?你应该发现它也内置在你的 Linux 发行版中了。

Vim 和 nano 是最流行的 CLI 文本编辑器 之二。

但是,是什么让它们如此受欢迎?你应该选择哪个作为你的文本编辑器?让我指出一下 Vim 和 nano 的区别,以帮助你决定。

1、基于终端的编辑器介绍

nano 和 Vim 都提供了大部分的基本功能。虽然 nano 在大多数 Linux 发行版上是内置的,但你必须手动安装 Vim。

为了比较这两者,让我给你简单介绍一下这两者。

Vim

Vim 是 “Vi” 文本编辑器的改进版,开发于 1991 年。Vim 是 “ Vi 改进版 Vi IMproved ” 的意思。

Vi 是一个基于终端的文本编辑器,最初于 1976 年为 Unix 操作系统而开发。Vim 是它的一个具有现代功能的增强版。

考虑到它的各种功能可以帮助编辑程序文件,它也被称为“程序员的文本编辑器”。虽然它提供了一些高级功能,但你也可以用来编辑纯文本文件。

GNU nano

GNU nano(我们在文章中称它为 “nano”)是一个简单的基于终端的文本编辑器,其灵感来自于 Pico —— 这个基于 Unix 的文本编辑器是华盛顿大学 1989 年开发的 Pine 电子邮件套件的一部分。

Pico 文本编辑器没有 GPL(许可证),这使得它很难被纳入 Linux 发行版。

因此,nano 被开发出来作为它的自由软件替代品。nano 编辑器最初被称为 “tip”,然后在 Richard Stallman 宣布它成为正式的 GNU 程序之前重新命名为 nano。

这个编辑器的亮点是它的易用性和极小的学习曲线。你不一定需要成为程序员才能使用 nano。

2、功能差异

下面是 Vim 和 nano 的主要功能差异:

Vim 的主要特点

  • 多级撤销
  • 语法高亮
  • 命令行编辑
  • 文件名补完
  • 多窗口和缓冲区
  • 折叠
  • 会话
  • 支持宏

nano 的主要特点

  • 打开多个文件
  • 逐行滚动
  • 撤销/重做
  • 语法着色
  • 行号

请注意,一般来说,Vim 提供了更高级的功能。然而,它们都提供了编辑系统配置文件、编程和文本编辑等基本功能。

3、用作文本编辑器

在 Vim 或 nano 中打开一个文件很简单,只要输入你想使用的编辑器的名字,然后再输入文件的路径。路径可以是文件的绝对路径,也可以是文件的相对路径。

vim Documents/text.txt
nano Documents/text.txt

但是,除了用作文本编辑器访问或打开一个文件之外,还有很多功能,对吗?

如果你想快速比较一下,这里有一些基于我的使用情况的比较点:

Vim:

  • 模式驱动的编辑器
  • 在开始时有巨大的学习曲线
  • 会话恢复
  • 语法高亮/着色
  • 提供高级功能

nano:

  • 易于使用(经常使用的功能及其组合键列在底部)
  • 不存在学习曲线
  • 旨在进行快速编辑

nano 和 Vim 的主要区别在于,它们的目标受众非常不同。

Vim

Vim 是一个模式驱动的编辑器。这意味着字母、数字和标点符号键在按下时都要做一件独特的事情,而不是在屏幕上打出一个字符。

这些模式包括:

  • 正常模式
  • 视觉模式
  • 插入模式
  • 命令行命令
  • 命令行编辑

默认情况下,当你启动 Vim 时,它以 正常 模式打开。每个键都有其独特的功能,不会立即开始输入所按下的字符。

不管什么模式,如果你愿意,你也可以 把 Vim 配置成一个写作工具

要知道更多关于这些有趣的事情,你可以参考我们关于 基本 Vim 命令 以及 Vim 技巧和窍门 的文章。

当你启动 Vim(无参数)时的终端屏幕

在正常模式下,按特定的键会移动你的光标。

例如,如果你按下 l(小写字母 L),它将把光标向右移动一个字符,按 h 键将把光标向左移动一个字符。

如果你想把光标向下移动一行,你就按 j 键,如果要把光标向上移动一行,你应该按 k 键。

在正常模式下 lkjh 是导航键。虽然你可以用方向键来移动,但这样做更有效率。

这些是 Vim 中的基本导航键。

接下来最常用的键是 wbe

  • w 键可将光标移到下一个词。如果它已经在一个词的开头,它就会移动到下一个词的开头。
  • b 键,光标会移到左边的词的开头。
  • e 键,则将光标移到右边的词的末尾。

你甚至可以用这些键混合数字(作为前缀)。例如,按 6w 可以将光标向前(向右)移动六个词。

如果你想进入一个模式,你必须按类似的组合键:

  • i 为插入模式
  • CTRL+C 回到正常模式
  • :wq 写入文件并关闭窗口。

最后,我们已经 列出了退出 Vim 的多种方法,如果你想了解一下的话。

这只是冰山一角。要学习更多关于 Vim 的知识,你可以使用vimtutor 命令,它可以给你提供大多数基本命令的信息,如删除、编辑、保存文件等。

GNU nano

nano 有一个基本的交互界面,在窗口的底部给你提供关键信息。

要想有个初步的了解,你可以参考我们的 nano 编辑器指南

![Terminal screen when you launch nano without argumentswithoutarguments] 13

你不需要参考手册页或任何文档来执行基本操作。这就是为什么与 Vim 相比,nano 被认为是用户友好的。

尽管如此,nano 中使用的一些术语仍然是“旧术语”,一个例子是 “ 写出 Write Out ”、“ 在哪里 Where Is ”短语,而不是分别用“ 保存 Save ”和“ 查找 Find ”。

但是,这并不是什么大问题。

虽然很容易习惯,但它与使用记事本或 Gedit(GUI 程序)并不完全相同。

例如,在大多数现代编辑器中,执行剪切操作的组合键通常是 Ctrl + X,但在 nano 中,它是 Ctrl + K

符号 ^ 是用来表示将 Ctrl 键作为修饰键使用,并与旁边的键组合使用。

你还可以找到像 Ctrl + F(将光标向前移动)、Ctrl + B(将光标向后移动)这样的组合键。一些快捷键包括:

  • Ctrl + X 退出
  • Ctrl + O 写入(或保存为)
  • Alt + U 撤销上一个动作
  • Ctrl + ← 向后退一个字
  • Ctrl + → 向前进一个字

你可以看看 GNU nano 的官方速查表 来学习更多的快捷键。

总的来说,nano 是一个更适合初学者的编辑器,当你只想偶尔编辑一个文件时,它可以简单地让你完成。

4、学习曲线

考虑到上面的所有信息,你一定已经意识到 Vim 与你所习惯的传统文本编辑器不同。

这是真的,这就是为什么 Vim 在学习的初始阶段会显得很艰难。

然而,对于高级用户来说,使用宏、自动补完等高级能力很重要,可以节省时间。

因此,如果你是一个程序员,或者碰巧经常编辑许多文件,Vim 的学习曲线可能是富有成效的。

另一方面,nano 提供了极小的学习曲线,而且感觉比基于图形用户界面的文本编辑器如 Gedit 或 Notepad 更让你熟悉。

哪个是最适合你的?

Vim 和 nano 都是合格的基于终端的文本编辑器。但是,当涉及到你如何与上述编辑器互动和使用时,它们有很大的不同。

Vim 很灵活,可以适应各种工作流程,前提是你已经习惯了它的工作方式。

相比之下,nano 工作起来很简单,可以帮助你编辑任何你想要的东西。

如果你还不确定,我建议先开始使用 nano。而且,如果你认为你需要更快地完成工作,并且想要更多的功能,那么就换成 Vim。

常见的问题

继续,让我来谈谈几个问题,这将有助于你获得一个良好的开端。

Vim 比 nano 好吗?

从技术上讲,是的。但是,如果你不需要它提供的所有功能,使用起来可能会感到力不从心。

程序员是否使用 Vim?

系统管理员和程序员喜欢 Vim 的高级功能。所以,是的,他们倾向于使用它。

nano 是否更受欢迎?

可以说是的。nano 是一个基于终端的编辑器,被大多数用户使用。此外,它还内置在大多数 Linux 发行版中。

因此,它在用户中普遍受欢迎,而 Vim 仍然是一个为特定人群服务的编辑器。


via: https://itsfoss.com/vim-vs-nano/

作者:Pratham Patel 选题:lujun9972 译者:wxy 校对:wxy

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

甲骨文发布持续更新的免费 Solaris

甲骨文公司在 2009 年收购 Sun 公司时,为其获得的 Solaris 操作系统创建了一个附加版本,它被称为通用构建环境(CBE),算是一种测试版的 Solaris。该公司允许免费使用 Solaris,用于测试和开发,或个人使用。它刚刚发布了 新的 Solaris 11.4 CBE,并采用支持库更新/微型版本的持续交付模式,而不是每隔几年就发布更大的小型版本。

老王点评:甲骨文公司想起来给 Solaris 提供持续更新了,虽然 Solaris 已经乏人问津了。

三星正在降低上万个流行应用程序的性能

三星有一个名为游戏优化服务的应用程序,预装在许多 Galaxy 手机上。虽然其名字表明该应用有助于提高游戏性能,但它显然被用来限制非游戏应用的性能。一项新的发现表明,三星正在扼杀上万个的安卓应用的性能,包括谷歌和三星的第一方应用。值得注意的是,这个黑名单上没有基准应用程序,因而其性能可以得到自由发挥。

老王点评:手机厂商们为了你的电池续航简直“操碎了心”啊。

纯商业的 Qt 5.15.3 LTS 现在开源了

一年前的这个星期,Qt 5.15.3 LTS 发布了,但这个长期支持版本只提供给了商业用途使用。根据 Qt 公司的计划,Qt LTS 的小版本发布将只针对商业客户,而 Qt 5.15.3 LTS 是第一个这样做的版本,这让那些不是 Qt 商业客户的开源 Linux 桌面用户无法得到更新。今天,Qt 公司 开源 了 Qt 5.15.3 修改版。

老王点评:好吧,这也完全可以理解,毕竟 KDE 一直在免费使用。

这就是我如何从 35 个 Vim 插件降到只有 6 个的原因。

 title=

当你用 —clean 选项启动 Vim 时,它以 “素” 模式展示 Vim。没有插件、没有配置,一切回到了最初。多年来,我收集了一堆配置语句,其中一些可以追溯到 MS-DOS 或 Windows 3.1 时期。我是这样打算的:从头开始,只用 Fedora 35 中可用的插件,找到一个好的配置起点。我可以在一周的编码生活中生存下来吗?我会找到答案的!

规则是这样的:尽可能少的配置语句,并且只使用 Fedora 35+ 中的插件。顺便说一下,如果你不是 Fedora 用户,也请继续阅读。你可以随时从你的操作系统软件包管理器手动安装或者使用 Vim 插件管理器安装这些插件。

在我开始之前,有一个大问题需要解决:用 Vim 还是 Neovim(Vim 的一个复刻)。好吧,这由你决定。这篇文章中的所有内容应该对两者都适用。然而,我只用 Vim 测试过。当你登录到一个只有 vi 可用的服务器时,所有的这些技能都会派上用场。它可以是一个旧的 UNIX 系统、一个安装了最少的软件以提高安全性的 Linux 服务器、一个容器中的交互式 shell,或者一个空间宝贵的嵌入式系统。

闲话少说,下面是我提炼出来的使用 Vim 进行编码的绝对最低限度的东西:

# dnf install --allowerasing vim-default-editor \
        vim-enhanced \
        vim-ctrlp \
        vim-airline \
        vim-trailing-whitespace \
        vim-fugitive \
        vim-ale \
        ctags

不要担心 —allowerasing 选项。在确认之前,只需查看一下安装的东西。这个选项的作用是告诉软件包管理器把现有的 nano-default-editor 包替换为 vim-default-editor。这是一个小软件包,它在 shell 配置文件中将 EDITOR 环境变量设置为 vim,如果你想默认使用 Vim(例如,与 git 一起使用),这是必须的。这是专门针对 Fedora 的。你不需要在其他发行版或操作系统上这样做,只要确保你的 EDITOR shell 变量被正确设置就行。

概览

简单介绍一下我认为好的、干净的插件集:

  • CtrlP:尽可能小的模糊查找插件(纯 vimscript)
  • Fugitive:一个 git 的必备工具
  • Trailing-whitespace:显示并修复(删除)尾部的空格
  • Airline:一个改进的状态行(纯 vimscript)
  • Ale:在你打字时高亮显示错别字或语法错误
  • Ctags:不是 Vim 插件,但却是一个非常需要的工具

还有其他的模糊查找插件,如 command-t 或我最喜欢的 fzf.vim(非常快)。问题是,fzf.vim 不在 Fedora 中,而我想要尽可能少的配置。CtrlP 就可以了,而且配置它更容易,因为它不需要什么依赖。

如果让我选择一个绝对最小的配置,那就是:

# cat ~/.vimrc
let mapleader=","
let maplocalleader="_"
filetype plugin indent on
let g:ctrlp_map = '<leader><leader>'
let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard']
set exrc
set secure

但这可能太极端了,所以这里是一个稍大的配置,下面是我的详细解释:

" vim: nowrap sw=2 sts=2 ts=2 et:

" leaders
let mapleader=","
let maplocalleader="_"

" filetype and intent
filetype plugin indent on

" incompatible plugins
if has('syntax') && has('eval')
  packadd! matchit
end

" be SSD friendly (can be dangerous!)
"set directory=/tmp

" move backups away from projects
set backupdir=~/.vimbackup

" fuzzy searching
let g:ctrlp_map = '<leader><leader>'
let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard']
nnoremap <leader>b :CtrlPBuffer<cr>
nnoremap <leader>t :CtrlPTag<cr>
nnoremap <leader>f :CtrlPBufTag<cr>
nnoremap <leader>q :CtrlPQuickfix<cr>
nnoremap <leader>m :CtrlPMRU<cr>

" buffers and quickfix
function! ToggleQuickFix()
  if empty(filter(getwininfo(), 'v:val.quickfix'))
    copen
  else
    cclose
  endif
endfunction
nnoremap <leader>w :call ToggleQuickFix()<cr>
nnoremap <leader>d :bd<cr>

" searching ang grepping
nnoremap <leader>g :copen<cr>:Ggrep!<SPACE>
nnoremap K :Ggrep "\b<C-R><C-W>\b"<cr>:cw<cr>
nnoremap <leader>s :set hlsearch! hlsearch?<cr>

" ctags generation
nnoremap <leader>c :!ctags -R .<cr><cr>

" per-project configs
set exrc
set secure

使用逗号作为引导键

我喜欢把我的 引导键 映射成逗号 ,,而不是默认的反斜杠 \。当你的手处于书写位置时,它是 Vim 中最接近的自由键。另外,这个键在大多数键盘布局中都是一样的,而 \ 在每个型号或布局都不一样。我很少使用 本地引导键,但下划线 _ 看起来很合适。

延伸阅读:

文件类型和关闭语法高亮

接下来是非常重要的 filetype 命令。看,Vim 自带“内置电池”,8.2 版本包含 644 种语言的语法高亮,251 个文件类型定义(ftplugins),以及 138 种语言的缩进规则。然而,缩进在默认情况下是不启用的,也许是为了给所有人提供一个一致的编辑体验。我喜欢启用它。

一个简单的技巧:如果你正在编辑一个非常大的文件,并且 Vim 感觉很慢,你可能想禁用语法高亮来加快速度。只要输入 :syn off 命令即可。

延伸阅读:

Matchit 插件

Vim 甚至额外带有使得一些功能不兼容的插件,其中一个相当有用。它就是 matchit 插件,它使按下 % 键可以在某些语言中查找匹配的括号。通常情况下,你可以找到一个块的开始或结束(开始和结束括号)或 HTML 匹配标签及类似的。

延伸阅读:

交换文件

我想从我的旧配置中保留的许多设置之一是使用 /tmp 进行交换,并在我的家目录的一个单独目录中创建备份,你需要用 mkdir ~/.vimbackup 来创建这个目录。重要的是要明白,当你开始编辑时,Vim 会创建一个名为 “交换文件” 的副本,所有未保存的工作都会保存在这个文件中。所以即使停电了,你的交换文件也包含了大部分未保存的工作。我更喜欢使用 tmpfs,因为我所有的笔记本电脑和服务器都有 UPS 保护,而且我经常保存。另外,大多数情况下,你会使用到交换文件是当你的 SSH 连接丢失而不是由于停电时。对于大文件来说,交换文件可能相当大,我很珍视我的固态硬盘,所以我决定这样做。如果你不确定,可以删除这句话,使用 /var/tmp,这样更安全。

延伸阅读;

模糊寻找插件

现在,模糊查找是一个我不能没有的插件。在服务器上当你每天需要打开 20 个文件时,使用 :Ex:e:tabe 等命令打开文件是没问题的。而当编码时,我通常需要打开数百个文件。正如我所说,CtrlP 很好地完成了这项工作。它很小,没有依赖性,纯 Vim。它用 Ctrl + P 组合键打开,这对我来说有点奇怪。我知道一些著名的编辑器(我记得是 VSCode)使用这个组合键。问题是,这已经是很重要的 Vim 绑定键,我不想覆盖它。所以对我来说,赢家是 引导键 + 引导键(逗号按两次)。

ctrlp_user_command 只是改变了 CtrlP 获取文件列表的方式。它不使用内置的递归文件列表(glob),而是使用 git ls-files,这通常更好,因为它忽略了 .gitignore 中的东西,所以像 node_modules 或其他可能拖慢列表的不相关目录不会受到影响。

使用 引导键 + B/T/F/Q/M 来打开缓冲区、标签、当前文件的标签、快速修复缓冲区和最近使用的文件的列表,非常有用。具体来说,一旦你用 ctags 生成了标签列表,这基本上就是数百种编程语言的“去……定义处”,而且不需要插件!这都是 Vim 内置的。现在澄清一下,当我说输入 引导键 + B 时,是指按下逗号,然后按 B 键,而不是像用 ControlShift 那样一起按。

延伸阅读:

缓冲区管理

虽然现在 Vim 支持标签,但缓冲区管理是掌握 Vim 的一个重要技能。我通常会有很多缓冲区,我需要经常做 :bdelete。那么,引导键 + D 似乎是一个不错的选择,可以更快地完成这个任务。我也喜欢关闭 Quickfix 窗口,所以也有 引导键 + W 的组合键,我在浏览搜索结果时经常使用这个功能。

延伸阅读:

Ggrep 和 fugitive 插件

说到搜索,它和打开文件一样重要。我希望能够对代码库进行检索。为此,有一个来自 fugitive 插件的很棒的 :Ggrep 命令,它使用 git grep,忽略了垃圾文件,只搜索 Git 中的内容。由于 Shift + K 是 Vim 中的一个自由键,它非常适用于自动检索光标位置的词语。最后,能够使用 引导键 + G 输入任意的搜索模式也很好。注意,这将打开一个叫做 Quickfix 的窗口,你可以在这里浏览结果、查看下一个/上一个/最后一个/第一个出现的地方,等等。这个窗口也用于编译器或其他工具的输出,所以要熟悉它。如果你对此感到陌生,我建议进一步阅读文档。

延伸阅读:

用 fugitive 进行搜索、检索

顺便说一下,用 / 键搜索是智能和大小写敏感的,这意味着如果所有的搜索字符都是小写的,Vim 的搜索会忽略大小写。默认情况下,它会高亮显示结果,我觉得我已经敲了无数次的 :noh(来关闭高亮显示)。这就是为什么我有 引导键 + S 来切换高亮显示。我建议以后也多读读手册中关于搜索的内容。

接下来是搜索、检索。fugitive 插件已经为你提供了。使用命令 :Ggrep pattern 来进行 git grep,结果会进入 Quickfix 窗口。然后简单地使用快速修复命令(:cn:cp 等等)浏览结果,或者简单地使用 :CtrlPQuickfix引导键 + Q)来直观地滚动它们。CtrlP 的快速修复整合的酷炫之处是,你可以通过输入以匹配文件名或内容来进一步在搜索结果中搜索。

延伸阅读:

Ctags

引导键 + C 可以生成一个 ctags 文件,以便更好地导航,这在处理一个新的代码库或做一个有很多跳转的较长的编码任务时很有用。ctags 支持数百种语言,而 Vim 可以利用所有这些知识来导航。后面会有更多关于如何配置它的内容。注意我已经讨论过 引导键 + T 来打开所有标签的模糊搜索,记得吗?这两个是非常相同的。

延伸阅读:

按键映射

能够通过在项目目录下创建一个 .vimrc 文件来覆盖该项目中的任何设置是一个好主意。只要把它放在(全局的) .gitignore 中,以确保你不需要在每个项目中编辑成千上万的 .gitignore 文件。这样的一个项目的 .vimrc 可以是这样的(对于使用 GNU Makefile 的 C/C++ 项目):

" coding style
set tabstop=4
set softtabstop=4
set shiftwidth=4
set noexpandtab
" include and autocomplete path
let &path.="/usr/local/include"
" function keys to build and run the project
nnoremap <F9> :wall!<cr>:make!<cr><cr>
nnoremap <F10> :!LD_LIBRARY_PATH=/usr/local/lib ./project<cr><cr>

正如你所看到的,我通常将 F2F10 等键映射到编译、运行、测试和类似的操作。用 F9 来调用 make,听起来不错。还记得 MS-DOS 上的蓝色 Borland IDE 吗?

如前所述,在全局范围内忽略 .vimrc 和(由 ctags 生成的)tags 是个好主意,所以不需要每次都更新 .gitignore

# git config --global core.excludesfile ~/.gitignore
# cat ~/.gitignore
/.vimrc
/tags
/TAGS

在我的个人配置中还有几条只与那些非美国键盘布局的人有关(我用捷克语)。我需要用“死键”来输入许多字符(LCTT 译注:“死键”是一种通过将变音符号与后面的字母结合起来打出重音字符的方法。这种方法在历史上被用于机械打字机),这根本不可能,我宁愿输入命令而不是按那些难以按下的组合键。这里有一个解决问题的办法:

" CTRL-] is hard on my keyboard layout
map <C-K> <C-]>
" CTRL-^ is hard on my keyboard layout
nnoremap <F1> :b#<cr>
nnoremap <F2> :bp<cr>
nnoremap <F3> :bn<cr>
" I hate entering Ex mode by accident
map Q <Nop>

延伸阅读:

功能键在 Vim 中都是自由的,除了 F1,它被绑定在帮助上。我不需要帮助,并不是说我已经会对 Vim 了如指掌,并不是。但如果需要的话,我可以简单地输入 :help。而 F1 是一个关键的键,离 Esc 键如此之近。我喜欢将它用于缓冲区交换(:b#),将 F2/F3 用作下一个/上一个。你越是与缓冲区打交道,你就越需要这个。如果你没有使用过 Ctrl + ^,我建议你要习惯于它。哦,你有没有丑陋地输入 :visual 进入过 Ex 模式?许多初学者都不知道如何从该模式下退出 Vim。对我来说,这就是打扰,因为我很少使用它。

现在,熟悉 ctags 是成功使用 Vim 的一个关键因素。这个工具支持数百种语言,它不小心就为你不想创建标签的文件创建它,因此我建议忽略典型的垃圾目录:

# cat ~/.ctags.d/local.ctags
  --recurse=yes
  --exclude=.git
  --exclude=build/
  --exclude=.svn
  --exclude=vendor/*
  --exclude=node_modules/*
  --exclude=public/webpack/*
  --exclude=db/*
  --exclude=log/*
  --exclude=test/*
  --exclude=tests/*
  --exclude=\*.min.\*
  --exclude=\*.swp
  --exclude=\*.bak
  --exclude=\*.pyc
  --exclude=\*.class
  --exclude=\*.cache

Airline 插件

我一定不能忘记 Vim 的 Airline 插件。在 Fedora 的两个插件中,这个插件很轻量级,不需要外部依赖,而且可以开箱即用我所有的字体。你可以定制它,而且还有主题之类的东西。我只是碰巧喜欢它的默认设置。

我必须提到,有两个主要的 Ctags 项目:Exuberant Ctags 和 Universal Ctags。后者是一个更现代的复刻。如果你的发行版有,就用它。如果你在 Fedora 35+ 上,你应该知道你现在用的是 Universal Ctags。

总结

作为总结,我的建议是这样的。尽量保持你的 Vim 配置流畅和干净。这将在未来得到回报。在我转换到新配置之后,我不得不重新学习“写入并退出”的命令,因为我总是不小心把它打成 :Wq,而我在旧的配置里有一个“小技巧”,让它实际上按我的意思工作。好吧,这个可能真的很有用,并能入选,我希望你能明白我的意思:

:command Wq wq
:command WQ wq

最后的一个快速技巧是:你可能需要经常改变你的默认 Vim 配置,来找到我在这里向你介绍的和你自己口味之间的舒适区。使用下面的别名,这样你就不需要一直搜索历史。相信我,当一个 Vim 用户在命令历史里搜索 “vim” 时,找不到什么是相关的内容:

alias vim-vimrc='vim ~/.vimrc'

就是这些了。也许这可以帮助你在没有大量插件的情况下在 Vim 的丰富世界遨游。“简简单单” 的 Vim 也很不错!

要尝试你刚刚读到的内容,请安装软件包并检出这些配置:

test -f ~/.vimrc && mv ~/.vimrc ~/.vimrc.backup
curl -s https://raw.githubusercontent.com/lzap/vim-lzap/master/.vimrc -o ~/.vimrc
mkdir ~/.vimbackup

特别感谢 Marc Deop 和 Melanie Corr 对本文的审阅。

更新

我已经在这种配置下生存下来了!我唯一的纠结是 CtrlP 插件的结果顺序不同。文件的模糊算法与 fzf.vim 插件不同,所以我以前用各种搜索词能找到的文件现在找不到了。我最后安装了 Fedora 的 fzf 包以获得更相关的文件搜索,它附带了一个 vim 函数 FZF,可以绑定到引导键组合上。请看我的 GitHub 仓库 中更新后的配置文件。一路走来,我学到了很多东西。有一些键的绑定我已经忘记了,这要感谢许多插件。

这篇文章最初发表在 作者的网站 上,经许可后重新发表。


via: https://opensource.com/article/21/12/vanilla-vim-config

作者:Lukáš Zapletal 选题:lujun9972 译者:wxy 校对:wxy

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