学习 vi 编辑器/Vim/Vim Touch
- 有关 Vim 的一般信息和历史,请参阅其相应的维基百科文章。
Vim Touch(也称为VimTouch)是一个功能强大的文本编辑器,基于 Vim 移植到 Android 操作系统,该操作系统运行在超过 10 亿台设备上,其中大部分是手机。
本教程介绍如何使用 Vim Touch,用户可能立即需要的有用命令、用户界面演练以及特定于移动设备上 Vim Touch 的某些用例场景。
本教程对 Vim 初学者很有帮助,但也假设用户对 Vim 有一定的了解,例如,已经了解基本知识但希望跳过大多数命令列表的用户。虽然有用,但查看完整的 Vim 命令列表对于希望立即使用 Vim 工作的初学者来说可能会让人不知所措。
因此,也可以将其视为入门指南或简易手册。
需要一定的计算机操作能力,因为本教程不会涵盖所有用例。
- 学习 Vim 及其常用命令的另一种选择是在电脑上安装 gVim。gVim(图形化 Vim)在图形环境中运行,并且可用于大多数计算机操作系统。在图形化的 Linux 或 BSD 发行版中,gVim 可能已经安装。
- gVim 显示一个传统的菜单栏,其中包含菜单,这些菜单包含最常用的命令及其对应的键盘快捷键。因此,gVim 可以作为直观的视觉辅助工具。
Vim 中的命令区分大小写,例如 gj
和 gJ
执行不同的操作。这意味着,如果命令或其一部分以大写形式显示,则默认情况下应假定使用 Shift
键。在命令模式下,对于常规命令和基于冒号的命令,相同的字符可能意味着不同的含义。
Vim 本身的命令也可以在那里使用。
Vim Touch 可从 Google Play 商店和F-Droid(免费和开源 (FOSS) 应用的应用存储库)获取。F-Droid 有自己的“商店”应用,可以从其存储库以及使用基于 F-Droid 的基础设施的其他存储库下载 FOSS 应用。
建议与 Vim Touch 配合使用的虚拟键盘应用是 Hacker's Keyboard,因为它在第一个键盘屏幕上显示了所有必要的按键,这些按键在传统 Android 键盘的主屏幕上是缺失的。Hacker's Keyboard 应用也可从 F-Droid 存储库获取。
对于大量工作,建议使用蓝牙键盘。
作为一个基于文本的应用,VimTouch 利用文本命令和大量键盘操作。VimTouch 通过拥有自己的菜单、跨屏幕的触摸式移动以及用于常用命令的可自定义命令栏来改进这一点。
与 Android 中的大多数文本编辑器不同,Vim Touch 作为一项服务启动。这有很多优点,因为它可以防止用户在基本文本编辑器中频繁保存文件并重新启动应用的情况,如果他们在另一个应用中进行多任务处理,并且基本文本编辑器在此期间已退出。这种情况在 RAM 内存不足的设备中经常发生。
按下手机上的硬件或虚拟菜单键会调出应用菜单,其中包含以下一些内容
- 退出命令
:q!
- “切换键盘”命令 - 切换虚拟键盘
- 扩展应用菜单(在“更多”中)包含通过文件选择器打开文件、编辑 .vimrc 配置文件以及修改命令栏(它也是一个简单的文本文件)的命令。
滑动命令栏对于常用命令和需要多个按键的命令都很有用。命令栏默认情况下已预先填充,但可以根据用户喜好进行更改。
例如,使用非美国键盘布局的人员可能会使用需要频繁使用 Shift
键的字符填充命令栏。
- 按下手机上的菜单键,触摸
:q!
菜单项。就这么简单。
否则,对于基于文本的 Unix 和 Linux 程序来说,通常不会显示如何退出的说明。这也包括 Vim 的前身 vi,但在这种情况下 Vim 不同
在启动时,Vim 本身会显示其版本、作者姓名和退出说明。如果您没有看到这些信息,但想退出应用,则 -
- 按下
Esc
键并输入:q!
是的,您必须输入冒号 :
和字母 q
以及感叹号 !
。
感叹号是可选的,如果文件中存在未保存的更改,但您仍想退出,则可以使用它。
Vim 有几种操作模式:其中两种是编辑模式和命令模式。在前者中,编辑文本;而在后者中,使用键盘在文本中移动并输入命令来操作文本、搜索、替换、排序等。
Vim 还有更多模式,但我们目前将重点关注这两种模式。
如果您没有编辑文本,则可以使用 Esc
键切换到命令模式。
启动时,Vim 默认处于命令模式。在命令模式下,可以使用许多键在模式之间切换、四处移动和操作文本。
- 使用
i
或a
编辑文本,然后按Esc
键返回命令模式。 - 如果不确定您处于哪种模式,请按一次或两次
Esc
键进入命令模式。
更重要的命令需要输入冒号:
和一个命令,以及可选的若干参数。
- 基于冒号的命令需要按下
Enter
(也称为Return
)键,并且用于搜索和替换、文件打开和保存、排序等操作。 - 请注意,大写锁定会影响输入的命令,因为大写命令与小写命令不同。
Vim 会保存命令历史记录,因此可以使用Up
键轻松返回到以前的命令,并重复或修改一个或多个以前使用的命令,无论它们是否成功。在使用虚拟键盘的移动设备上,命令历史记录非常有用,因为它减少了过度输入的需要。
可以多次按下Up
键来按反时间顺序(从最新到最旧)访问存储的命令。
/
Up
— 搜索历史记录:
Up
— 通用命令历史记录:s
Up
— 搜索/替换(替换)历史记录:%s
Up
— 对整个文件执行的替换操作的历史记录
:w
Up
— 保存历史记录
如果使用过更复杂的命令,则可以通过输入其开头部分更快地找到它。
/wik
Up
— 如果之前的搜索查找的是“维基百科”,则使用此组合可能会显示完整命令。
Vim Touch 允许从应用菜单和文件选择器打开文件:使用设备菜单键,然后点击“更多”以查看更长的命令列表。选择其中一个打开命令,然后从应用列表中点击“选择文件”。
然后,文件将在一个新的 Vim 窗口中打开。用户可以选择保留空文件,或点击其窗口将其聚焦,并使用:q!
菜单项关闭该文件/窗口。
虽然 UNIX/Linux 操作系统长期以来一直采用以<root>/home/username
形式表示默认主目录的做法,但使用 Linux 内核的 Android 操作系统则使用/data/media/<userid>
。
用户可以在根目录中创建自己的文件夹,而/home
通常是最短且最有意义的文件夹名称。因此,该文件夹将位于/sdcard/home
(在 Android 2.3 中)。在 Vim Touch 中保存到该路径
:w /sdcard/home/filename.ext
- •
.ext
可以表示任何文件扩展名。对于文本文件,它是.txt
。 - 使用扩展名保存文件非常重要,因为它允许 Android 识别文件类型并提供许多建议的应用程序(包括 VimTouch)来处理此类文件。
- • 作为助记符,方便地将 Vim 中编辑的文本文件保存为
filename.vim.txt
。这将允许以后在文件管理器中查看该文件是在 Vim 中编辑的,然后用户可以选择在 Vim 中打开该文件。 - ⚠ 请注意,除非是 Vim 的脚本或插件,否则不建议将普通文本文件保存为
filename.vim
,因为 Vim 对具有 .vim 扩展名的文件进行不同的处理。
i
— 在块光标下方的字符前开始写入(插入)文本a
— 在块光标下方的字符后开始写入(追加)文本
I
— 从行首开始写入文本A
— 从行尾开始写入文本
文本光标也有不同的行为。在命令模式下,文本光标为块状,而在插入/追加模式下,文本光标可以是 I 形光标。外观可能因配置而异,但大多是一致的。
为了提高可读性和撰写文本,请设置自动换行 -
:set lbr
要取消设置,请使用
:set lbr!
设置自动换行会增加行的虚拟长度,因为它占用更多的屏幕空间。
Vim Touch 使用了触摸屏显示器的功能,因此提供了一些普通 Vim 安装中没有的功能。
- 访问应用菜单以执行主要命令;
- 访问包含更多有用命令的扩展应用菜单;
- 用户可以点击将光标放置在屏幕上用户想要处理的文本的(近似)精确位置。
- 在命令模式下,可以触摸滑动显示区域以向上或向下滚动。这可能运行顺畅也可能不顺畅。
在插入/编辑模式下,避免在屏幕上滑动手指,因为它会被解释为输入,并且您可能会意外输入大量乱码。可以通过转到命令模式并使用撤销u
命令来撤消此操作。
在 Vim Touch 中,按下设备菜单键,然后点击“切换虚拟键盘”菜单项以显示键盘。
键盘的外观会减小 Vim 视口的大小,如果在 Vim 中打开了多个窗口,则这可能会将最下面的窗口的大小减小到只有一行。解决方法是Ctrl+w
5_
— 这会将最小窗口大小增加到 5 行屏幕。
w
— 将光标向前移动一个单词b
— 将光标向后移动一个单词
5w
— 将光标向前移动五个单词10b
— 将光标向后移动十个单词
您可以使用任何其他数字。
gg
— 移至文件开头和第一行的第一个字符G
— 移至文件末尾和最后一行的开头。(可能因情况而异;也可能是最后一行的末尾。)
当使用 Hacker's Keyboard 时
- 在第二个
Fn
键屏幕中,使用PgUp
和PgDn
键向上和向下移动一页。这仅适用于“硬”行,而不适用于一条连续的长行。 - 第二个键屏幕还包含
Home
、End
、Ins
和Del
键,以及一个专用的数字键盘,以便轻松输入较大的数字。
在以下情况下,您拥有非常长的文本行、小屏幕设备和虚拟键盘,则在屏幕中移动光标需要几种创造性的方法,因为上下导航是从一个实际文本行到另一个实际文本行。
(
— 移至句子的开头)
— 移至句子的末尾
这需要句点和空格.
的存在。
3(
— 将光标向上移动三个句子4)
— 将光标向下移动四个句子
在没有这些...的情况下
有时需要转到下一个屏幕行或连续的几行。例如,要仅显示这些。为此,请使用 -
gj
— 将光标向下移动一个屏幕行gk
— 将光标向上移动一个屏幕行
- 屏幕行有时称为虚拟行。
或者,Vim 状态行(状态栏)通常会显示光标在列号处的位置,该列号是从(长)行的开头到字符的字符数。您可以记住一个列号并在行内转到该列号。
:goto 3000
— 转到一行中的第 3000 个字符
Vim 使用可视模式来选择文本,并在命令模式下调用。使用Esc
键退出。
v
— 调用可视模式,然后使用上面描述的文本移动键来选择文本,例如
v
然后多次按下b
或w
以选择光标前或后的若干个单词。v5w
— 选择接下来的五个单词v
+ 键盘上的up
或down
箭头以选择几行。
ggVG
— 全选
- ^
gg
跳到文件开头,V
选择一行,G
将选择扩展到文件末尾。
V
— 选择整个当前行(光标所在行)。
- 选中文本后,用户可以剪切、复制、粘贴覆盖或以其他方式操作文本。
- 还可以对所选内容执行搜索替换、连接或排序操作。
Vim 有几种方法可以执行这些操作,内部和外部复制粘贴命令被分隔到 Vim 内部和外部。这在命令模式下有效。
请注意,剪切和复制通常需要在视觉模式下先选中文本。
x
、y
、p
(或P
)用于在**Vim 内部**进行剪切、复制和粘贴
y
表示“粘贴”(yank)d
用于“删除”,但作用于“剪切”
除此之外,还有一些键序列用于在**Vim 和其他应用程序之间**复制粘贴 —
"*x
— 剪切"*y
— 复制"*p
— 粘贴 — 或"*P
所以,确实需要输入双引号 "
、星号 *
和对应于操作的字母。由于这些命令在许多非美国键盘布局中可能需要按 Shift
键,因此最好将其中一个或两个放入 Vim Touch 的命令栏中。
可以通过粘贴覆盖来替换视觉模式下选中的文本块。
u
— 撤消,可以撤消任意步数。
一步撤消适用于插入模式下操作的**所有**文本。因此,如果您当前没有编辑文本,则切换(或默认)到命令模式非常重要。这可以使撤消步骤更细化。
Ctrl+R
— 重做
gJ
— 将下一行连接到当前行并删除两者之间的所有空格。
- • 要连接整个文件中的所有行,必须先使用
ggVG
选择文本。
:sort
— 如果您有一系列行,则列表将按照 ASCII 和 Unicode 代码点的顺序排序。这适用于文件中的**所有**行。对于仅部分文本,请使用视觉模式选择文本块,然后在其中排序。
使用斜杠 /
进行搜索。Vim 使用正则表达式,可以进行复杂的搜索。
/searchabletext
- 然后按
Enter
搜索“searchabletext”。
- 默认情况下,搜索结果(所有匹配项)都会高亮显示。
:noh
— 关闭搜索结果高亮显示
- 要转到下一个搜索结果,请使用
n
键。
- • 移动方向是向下,到达最后一个匹配项后,可以从文件顶部继续。
- • 向上移动到“上一个”匹配项,使用
Shift+n
组合键。
- 要重用先前使用的搜索,请使用斜杠
/
并按Up
键显示先前使用的搜索命令;
- • 可以多次使用
Up
键来获取所需的先前搜索,或者 - • 输入先前搜索的开头部分(以斜杠字符开头),然后按
Up
键。这同样适用于搜索和替换操作。
这同样使用正则表达式,可以执行复杂的文本操作。
简单来说
:s/searchabletext/textthatreplacesit
- • 这实际上查找“searchabletext”的所有匹配项,并将其替换为“textthatreplacesit”。
- • 普通斜杠
/
用作分隔符。要搜索包含斜杠的内容,必须使用反斜杠对其进行转义:\/
- • 字母
s
代表替换
- 要在整个文件中搜索,请使用百分号
%
字符
:%s/apples/oranges
- 查找“apples”并将其替换为“oranges”。
- 如果文件只有一行,则不需要百分号字符。
- 如果有一行(非常)长的行包含多个逗号,并且您想将每个逗号后面的文本放在新的一行中
:s/\,/&^M/g
- • 逗号
,
使用反斜杠\
进行转义,以确保将其视为文本:\,
- • 和号
&
表示添加文本而不是替换文本。根据文本相对于和号的位置,新内容将添加到搜索结果之前或之后;在本例中,内容添加到逗号之后。 - •
^M
代表换行符,但在查询中输入为Ctr+V
Enter
(又称<cr>
/回车键) - • 斜杠
/
后面的g
在整行中搜索以匹配行中的所有出现。
Vim 也是程序员、Web 开发人员和维基百科编辑的工具,因为它支持语法高亮,它对基于文本的格式或代码的不同部分进行颜色编码,从而使用户能够查看显示的代码是否正确编写。如果特定语法不受支持,可以以脚本形式安装为插件。
:setf wikimedia
— 高亮显示维基百科语法。这需要脚本/插件;请参阅此处了解更多信息。:setf javascript
— 高亮显示 JavaScript 代码。这可能会在其他应用程序和 Vim 之间切换以及虚拟键盘打开和关闭时导致临时闪烁。:syn off
— 关闭语法高亮显示
在 Vim Touch 中,JavaScript 语法高亮仅适用于一行中最多 3000 个字符。在旧版或基本 Android 设备上,语法高亮可能会很慢。某些语法高亮可能会导致应用程序内容暂时闪烁。
单独安装的语法脚本(例如 mediawiki),必须位于 Android 2.3 中的以下路径中
/sdcard/.vim/syntax/mediawiki.vim
如果这些文件夹尚不存在,则必须使用文件管理器或终端应用程序(如 Terminal Emulator)创建它们。