Vi_diff

Nvim :help 页面,从 源代码 生成, 使用 tree-sitter-vimdoc 解析器。


Vim 和 Vi 之间的区别

1. 限制 limits

Vim 对可编辑文件的限制很少。Vi 无法处理 <Nul> 字符和大于 128 的字符,行长有限制,以及许多其他限制。
最大行长 2147483647 个字符 最大行数 2147483647 行 最大文件大小 2147483647 字节(2 Gbyte)当长整数为 32 位时。64 位长整数则更大。同时受 交换文件 可用磁盘空间的限制。 E75
文件路径长度 Unix 和 Win32:1024 个字符,否则为 256 个字符(或系统支持的最大长度)。扩展字符串选项长度 Unix 和 Win32:1024 个字符,否则为 256 个字符 最大显示宽度 Unix 和 Win32:1024 个字符,否则为 255 个字符 映射的最大 lhs 长度 50 个字符。 不同的高亮类型数量:超过 30000 个 数字变量范围:-2147483648 到 2147483647(在 64 位系统上可能更多) 标签文件中的最大行长:512 字节。
撤销和寄存器中的文本信息保存在内存中,因此在进行(大)更改时,可用(虚拟)内存量会限制撤销级别数量和可以保存在寄存器中的文本量。其他内容也保存在内存中:命令行历史记录、Quickfix 模式中的错误消息等。

2. 最有趣的添加内容 vim-additions

支持不同的系统。Vim 可用于
现代 Unix 系统(BSD、Linux 等)
Windows(XP SP 2 或更高版本)
OS X
多级持久撤销。 撤销 'u' 向后回溯时间,'CTRL-R' 再次向前。将选项 'undolevels' 设置为要记住的更改数量(默认值为 1000)。将 'undolevels' 设置为 0 以获得与 Vi 兼容的单级撤销。将其设置为 -1 以完全禁用撤销。当缓冲区中的所有更改都被撤消时,缓冲区将不再被视为已更改。您可以使用 :q 退出,无需使用 <!>。当撤消一些更改,然后进行新的更改时,Vim 会在撤销树中创建分支。这意味着您可以回到文本的任何状态,不会有更改导致文本永远丢失的风险。 撤销树'undofile' 选项被设置时,撤销信息会存储在一个文件中。这意味着您可以退出 Vim,在之前编辑的文件上启动 Vim,并撤销在退出 Vim 之前所做的更改。
图形用户界面 (GUI)。 gui 包含对 GUI 的支持:菜单、鼠标、滚动条等。您可以定义自己的菜单。更好地支持 CTRL/SHIFT/ALT 键与特殊键和鼠标的组合。支持各种平台,如 Win32。
多个窗口和缓冲区。 windows.txt Vim 可以将屏幕分成多个窗口,每个窗口编辑不同的缓冲区或在不同位置编辑同一个缓冲区。缓冲区仍然可以加载(和更改),但不会显示在窗口中。这被称为隐藏缓冲区。此功能添加了许多命令和选项。Vim 还可以使用多个标签页,每个标签页包含一个或多个窗口。可以用来快速切换这些页面。 标签页
语法高亮。 :syntax Vim 可以高亮显示关键字、模式和其他内容。这由许多 :syntax 命令定义,并且可以使大多数语言和文件类型的高亮显示。包含了许多文件用于高亮显示最常见的语言,如 C、C++、Java、Pascal、Makefiles、Shell 脚本等。用于高亮显示的颜色可以通过 :highlight 命令为普通终端、彩色终端和 GUI 定义。使用 :colorscheme 命令可以方便地完成此操作。高亮显示的文本可以导出为 HTML。 convert-to-HTML 其他可以高亮显示的项目包括与搜索字符串匹配 'hlsearch'、匹配括号 matchparen 以及光标行和列 'cursorline' 'cursorcolumn'
拼写检查。 spell'spell' 选项被设置时,Vim 会高亮显示拼写错误。目前支持大约 50 种语言,使用 'spelllang' 选项选择。在源代码中,只有注释和字符串会被检查拼写。
折叠。 folding 一系列行可以显示为一行“折叠”行。这使得可以概述文件并快速移动文本块。折叠可以手动创建、从文件的语法中创建、通过缩进创建等。
差异模式。 diff-mode Vim 可以用高亮显示差异的方式显示文件的两个版本。相等的文本部分会被折叠起来。可以使用命令将文本从一个版本移动到另一个版本。
插件。 add-plugin 通过将插件文件放到正确的目录中,可以扩展功能。这是一种简单的方法,可以开始使用其他人编写的 Vim 脚本。插件可以用于所有类型的文件,也可以专门用于特定类型的文件。包使这变得更加容易。 packages
异步通信和计时器。 job-control timer Vim 可以与后台的其他进程交换消息。Vim 可以启动一个作业,与它通信,并停止它。 job-control 计时器可以一次或多次触发,并调用一个函数来执行任何工作。 timer
重复一系列命令。 q "q{c}" 开始将输入的字符记录到名为 {c} 的命名寄存器中。随后的 "q" 会停止记录。然后可以使用 "@{c}" 命令执行该寄存器。这对于重复复杂操作非常有用。
灵活的插入模式。 ins-special-special 在插入模式下,可以使用方向键在文件中移动。从撤销和重做角度来说,这将插入分为两个部分。
CTRL-O 可用于执行单个普通模式命令。这与按下 <Esc>、输入命令并执行 a 几乎相同。
可视模式。 Visual-mode 可视模式可用于先高亮显示一段文本,然后给出命令对其进行操作。这是一种(易于使用)的方法,可以替代先给出操作符,然后移动到要操作的文本末尾。 vV 用于启动可视模式。 v 对字符起作用,V 对行起作用。移动光标以扩展可视区域。它会在屏幕上高亮显示。通过输入 "o" 可以移动可视区域的另一端。可视区域可以受操作符影响:d 删除 c 更改 y 粘贴 > 或 < 插入或删除缩进 ! 通过外部程序过滤 = 通过缩进过滤 : 启动 : 命令以针对可视行进行操作。gq 将文本格式化为 'textwidth' 列 J 合并行 ~ 交换大小写 u 变为小写 U 变为大写
块操作符。 visual-block 使用可视模式,可以选择一个矩形的文本块。使用 CTRL-V 启动可视模式。该块可以被删除 ("d")、粘贴 ("y") 或更改其大小写 ("~", "u" 和 "U")。可以使用 "p" 和 "P" 命令将删除或粘贴的块放到文本中。
帮助系统。 :help 帮助信息显示在一个窗口中。可以使用通常的命令在窗口中移动、搜索字符串等。可以使用标签在帮助文件中跳转,就像超链接一样。 :help 命令接收一个参数,可以快速跳转到某个主题的信息。<F1> 是快速访问帮助系统的快捷键。帮助索引文件的名称可以使用 'helpfile' 选项设置。
命令行编辑和历史记录。 cmdline-editing 您可以使用光标键在命令行中的任何位置插入或删除内容。左右方向键可用于向前/向后移动一个字符。按住 shift 键的左右方向键可用于向前/向后移动一个单词。CTRL-B/CTRL-E 可用于跳到命令行的开头/结尾。(Vi:只能更改行中的最后一个字符)(Vi:按下 <Esc> 时会执行命令行。对于大多数人来说,这很意外;因此在 Vim 中进行了更改。但是,当 <Esc> 是映射的一部分时,会执行命令行。如果您希望在输入 <Esc> 时也使用 Vi 的行为,请使用 ":cmap ^V<Esc> ^V^M") cmdline-history 命令行会被记住。可以使用向上/向下方向键来调出以前的命令行。可以使用 'history' 选项设置要记住的行数。命令和搜索模式有单独的历史记录。
命令行补全。 cmdline-completion 在输入命令行(在屏幕底部)时,可以输入 <Tab> 来补全
什么示例
命令 :e<Tab>
标签 :ta scr<Tab>
选项 :set sc<Tab>
选项值 :set hf=<Tab>
文件名 :e ve<Tab>
等等。
如果有多个匹配项,CTRL-N(下一个)和 CTRL-P(上一个)将遍历匹配项。<Tab>CTRL-N 一样工作,但会循环到第一个匹配项。
可以使用 'wildchar' 选项设置命令行补全的字符,<Tab> 为默认值。在(不完整)通配符后输入 CTRL-D;将列出所有匹配项。CTRL-A 将插入所有匹配项。CTRL-L 将插入匹配项中最长的公共部分。
插入模式补全。 ins-completion 在插入模式下,可以使用 CTRL-NCTRL-P 键来补全出现在其他地方的单词。 i_CTRL-N 使用 CTRL-X 可以进入另一种模式,通过该模式可以完成以下操作: i_CTRL-X_CTRL-F 文件名 i_CTRL-X_CTRL-K 来自 'dictionary' 文件的单词 i_CTRL-X_CTRL-T 来自 'thesaurus' 文件的单词 i_CTRL-X_CTRL-I 来自包含文件的单词 i_CTRL-X_CTRL-L 整行 i_CTRL-X_CTRL-] 来自标签文件的单词 i_CTRL-X_CTRL-D 定义或宏 i_CTRL-X_CTRL-O 全能补全:针对特定文件类型进行智能补全等等。
长行支持。 'wrap' 'linebreak' 如果 'wrap' 选项被关闭,长行不会换行,只会显示部分内容。当光标移动到未显示的部分时,屏幕将水平滚动。可以使用 'sidescroll' 选项设置要滚动的最小列数。可以使用 zhzl 命令进行横向滚动。或者,当 'linebreak' 选项被设置时,长行会在单词之间断开。这使得可以方便地编辑单行段落(例如,当文本稍后被读入到 DTP 程序中时)。使用 gkgj 命令上下移动光标。
文本格式化。 格式化 'textwidth' 选项可用于自动限制行长。 这补充了 'wrapmargin' Vi 的选项,该选项不太有用。 gq 运算符可用于格式化一段文本(例如, gqap 格式化当前段落)。 文本对齐命令: :center:left:right
扩展的搜索模式。 模式 有许多额外的项目来匹配各种文本项目。 例如:一个 "\n" 可用于搜索模式以匹配换行符。 "x\{2,4}" 匹配 "x" 2 到 4 次。 "\s" 匹配空格字符。
目录、远程和归档浏览。 netrw Vim 可以浏览文件系统。 只需编辑一个目录。 使用常用命令在列表中移动,然后按 <Enter> 转到光标下的目录或文件。 这也适用于通过 ftp、http、ssh 等访问的远程文件。 zip 和 tar 存档也可以浏览。 tar zip
编辑-编译-编辑加速。 快速修复 :make 命令可用于运行编译并跳到第一个错误。 会解释包含编译器错误消息的文件。 Vim 跳到第一个错误。
错误文件中的每一行都会扫描文件名称、行号和错误消息。 'errorformat' 选项可以设置为一个 scanf 风格字符串列表,以处理来自许多编译器的输出。
:cn 命令可用于跳到下一个错误。 :cl 列出所有错误消息。 有其他命令可用。 'makeef' 选项包含包含错误消息的文件的名称。 'makeprg' 选项包含要与 :make 命令一起执行的程序的名称。 'shellpipe' 选项包含用于将编译器输出放入错误文件的字符串。
在文件中查找匹配项。 :vimgrep Vim 可以搜索多个文件中的模式。 这使用高级 Vim 正则表达式模式,适用于所有系统,也适用于在压缩文件中搜索。
改进的程序缩进。 'cindent''cindent' 选项处于打开状态时,每行的缩进会自动调整。 大部分 C 语法都会被识别。 可以使用 'cinoptions' 设置各种样式的缩进。 可以使用 'cinkeys' 设置触发缩进的键。
注释可以自动格式化。 'comments' 选项可以设置为开始和结束注释的字符。 这最适合 C 代码,但也适用于电子邮件(行首的“>”)和其他类型的文本。 = 运算符可用于重新缩进行。
对于许多其他语言,都存在缩进插件来支持自动缩进。 30.3
在包含的文件中搜索单词。 包含搜索 [i 命令可用于在当前文件和包含文件中搜索光标下单词的匹配项。 'include' 选项可以设置为描述包含文件的命令的模式(默认值为 C 程序)。 [I 命令列出所有匹配项, [_CTRL-I 命令跳到匹配项。 [d[D[_CTRL-D 命令执行相同的操作,但仅针对与使用 'define' 选项给出的模式匹配的行。
自动命令。 自动命令 根据文件名,可以在读取文件、写入文件、跳转到另一个缓冲区等操作时自动执行命令。 这对于设置 C 程序、文档、纯文本、电子邮件等的选项和映射很有用。 这也使得编辑压缩文件成为可能。
脚本和表达式。 表达式 添加了命令来构成一个强大的脚本语言。 :if 条件执行,例如可用于根据 $TERM 的值设置选项。 :while 重复多个命令。 :for 循环遍历一个列表。 :echo 打印表达式的结果。 :let 将值分配给内部变量、选项等。 变量类型为数字、字符串、列表和字典。 :execute 执行由表达式形成的命令。 :try 捕获异常。 等等,等等。 请参阅 eval。 支持调试和分析。 调试脚本 分析 如果这还不够,则提供了一个与 Python 的接口。
Viminfo。 命令行历史记录、标记和寄存器可以存储在一个在启动时读取的文件中。 这可用于在退出并重新启动 Vim 后重复搜索命令或命令行命令。 还可以使用 '0 直接跳回上次编辑停止的位置。 'viminfo' 选项可以设置为选择要存储在 .viminfo 文件中的项目。 默认情况下,此选项处于关闭状态。
鼠标支持。 使用鼠标 GUI 版本、Unix 中的 xterm、具有 sysmouse 的 BSD、具有 gpm 的 Linux 以及 Win32 都支持鼠标。 它可用于定位光标、选择可视区域、粘贴寄存器等。
键名用法。 <> 键符号 现在所有特殊键都有一个名称,例如 <Up><End> 等。 此名称可以在映射中使用,使其易于编辑。
编辑二进制文件。 编辑二进制文件 Vim 可以编辑二进制文件。 你可以在可执行文件中更改几个字符,而不会损坏它。 Vim 不会删除 NUL 字符(它们在内部表示为 <NL>)。 -b 命令行参数用于开始编辑二进制文件 'binary' -b 设置的选项。 防止为文件中的最后一行添加 <EOL>
多语言支持。 多语言 可以编辑双字节或多字节编码的文件。 有 UTF-8 支持,可以同时编辑各种语言,而无需切换字体。 UTF-8 消息和菜单以不同的语言提供。
将光标移动到行之外。 当 'virtualedit' 选项设置为打开状态时,光标可以移动到屏幕上的任何位置,包括没有文本的位置。 这对于轻松编辑表格和图形很有用。
主要
命令索引
快速参考