42、Vile 9.6 编辑器选项与常见问题解决指南

Vile 9.6 编辑器选项与常见问题解决指南

1. Vile 9.6 选项概述

Vile 9.6 拥有 167 个选项(在 Vile 中被称为“模式”),这些选项根据用途可分为通用、缓冲区或窗口模式。此外,还有 101 个环境变量,它们在脚本编写中比直接用户操作更有用。不过,并非所有选项和变量在每个平台上都可用,有些仅适用于 X11 或 Win32。以下是一些重要选项的详细介绍:

1.1 部分重要选项

Option Default Description
tagrelative (tr) Vim default: tr; vi default: notr 来自另一个目录的标签文件中的文件名被视为相对于标签文件所在的目录。
tags (tag) ./tags,tags :tag 命令使用的文件名,用空格或逗号分隔。开头的./ 会被替换为当前文件的完整路径。
tildeop (top) notildeop 使 ~ 命令表现得像一个操作符。
undolevels (ul) 1000 可撤销的最大更改次数。值为 0 表示与 vi 兼容:一级撤销,u 命令会撤销自身。非 Unix 系统可能有不同的默认值。
viminfo (vi) 启动时读取 viminfo 文件,退出时写入。该值很复杂,它控制着 Vim 将存储在文件中的不同类型的信息。详情请参阅在线帮助。
writebackup (wb) writebackup 在覆盖文件之前创建备份。文件成功写入后,备份将被删除,除非同时启用了备份选项。

1.2 vile 9.6 其他重要设置选项

Option Default Description
alt-tabpos (atp) noatp 控制光标位于表示制表符的空白的左端还是右端。
animated animated 当临时缓冲区内容更改时,自动更新其内容。
autobuffer (ab) autobuffer 使用“最近最少使用”样式的缓冲区;缓冲区按使用顺序排序。否则,缓冲区将保持编辑时的顺序。
autocolor (ac) 0 自动语法着色。如果设置为零,则禁用自动语法着色。否则,应将其设置为一个小的正整数,表示在调用自动着色钩子之前等待“安静间隔”的毫秒数。
autosave (as) noautosave 自动保存文件。每插入 autosavecnt 个字符后写入文件。
autosavecnt (ascnt) 256 指定插入多少字符后进行自动保存。
backspacelimit (bl) backspacelimit 如果禁用,则在插入模式下可以退格到插入开始点之后。
backup-style off 控制写入文件时如何创建备份文件。可能的值为 off、.bak(用于 DOS 样式的备份)和 tilde(用于 Unix 下的 Emacs 样式的 hello.c~ 备份)。
bcolor default 在支持的系统上设置背景颜色。
byteorder-mark (bom) auto 控制对用于区分不同类型 UTF 编码的前缀的检查。默认值 auto 表示让 vile 检查文件;特定值表示使用该值。
check-modtime nocheck-modtime 如果文件自上次读取或写入后发生了更改,会发出“文件比缓冲区新”的警告,并提示确认。
cindent nocindent 启用 C 样式的缩进,类似于 autoindent,在插入时自动保持当前缩进级别。
cindent-chars :#{}( )[] cindent 模式解释的字符列表。这些字符包括 # 用于缩进至第 1 列,: 用于进一步缩进,如标签之后。列出的一对字符如果也在 fence-pairs 中,会使该对字符包围的文本进一步缩进。
cmode off C 代码的内置主要模式。
color-scheme (cs) default 通过名称指定通过 define-color-scheme 命令定义的 fcolor、bcolor、video-attrs 和 $palette 的集合。
comment-prefix ^\s ((\s [# >])|(/// ))+ 描述在重新格式化注释时应保留的行的开头部分。默认值适用于 Makefile、shell 和 C 注释以及电子邮件。
comments ^\s /\?(\s [# >/])+/\?\s $ 定义注释段落分隔符的正则表达式。其目的是在重新格式化时保留注释内的段落。
cursor-tokens regex 控制 vile 在各种命令中从屏幕解析标记时使用正则表达式还是字符类。使用枚举值:both、cclass 和 regex。
dirc nodirc vile 在扫描目录以完成文件名时检查每个名称。这允许您在提示中区分目录名和文件名。
dos nodos 读取文件时从 CR/LF 对中去除 CR,写入时再添加回去。对于不存在的文件,新缓冲区继承操作系统的行样式,无论 dos 的值如何。
fcolor default 在支持的系统上设置前景颜色。
fence-begin /* 简单非嵌套围栏(如 C 注释)的开始和结束的正则表达式。
fence-end */ 简单非嵌套围栏(如 C 注释)的结束的正则表达式。
fence-if ^\s #\s if 标记行导向、嵌套围栏(如 C 预处理器控制行)的开始、“else if”、“else”和结束的正则表达式。
fence-elif ^\s #\s elif> 标记行导向、嵌套围栏(如 C 预处理器控制行)的“else if”的正则表达式。
fence-else ^\s #\s else> 标记行导向、嵌套围栏(如 C 预处理器控制行)的“else”的正则表达式。
fence-fi ^\s #\s endif> 标记行导向、嵌套围栏(如 C 预处理器控制行)的结束的正则表达式。
fence-pairs {}( )[] 每对字符表示一组应与 % 匹配的“围栏”。
file-encoding auto 指定缓冲区内容的字符编码,例如 8bit、ascii、auto、utf-8、utf-16 或 utf-32 之一。
filtername (fn) 为给定的主要模式指定语法突出显示过滤器。
for-buffers (fb) mixed 指定在 for-buffers 和 kill-buffer 命令中使用通配符还是正则表达式来选择缓冲区名称。
glob !echo %s 控制在文件名提示中如何处理通配符(例如 * 和?)。值为 off 时禁用扩展,on 时使用内部通配符解析器,它可以处理正常的 shell 通配符和 ~ 符号。Unix 的默认值保证与您的 shell 兼容。
highlight (hl) highlight 启用或禁用相应缓冲区中的语法突出显示。
history (hi) history 将冒号命令行(迷你缓冲区)中的命令记录到 [History] 缓冲区中。
horizscroll (hs) horizscroll 移动到长行末尾时,整个屏幕会横向移动。如果未设置,则仅当前行移动。
ignoresuffix (is) (.orig|~)$ 在匹配主要模式后缀之前,从文件名中去除给定的模式。
linewrap (lw) nolinewrap 将长逻辑行换行到多个屏幕行。
maplonger nomaplonger 映射功能会匹配最长的可能映射序列,而不是最短的。
meta-insert-bindings (mib) mib 控制插入期间 8 位字符的行为。通常,键绑定仅在命令模式下有效;在插入模式下,所有字符都是自插入的。如果此模式开启,并且键入了一个绑定到函数的元字符(即设置了第八位的字符),则该函数绑定将被执行。任何未绑定的元字符将保持自插入。
mini-hilite (mh) reverse 定义用户在迷你缓冲区中切换编辑模式时使用的突出显示属性。
modeline nomodeline 控制是否启用类似 vi 的模式行功能。
modelines 5 控制从缓冲区两端扫描类似 vi 的模式行的行数。
overlap-matches overlap-matches 修改 visual-matches 显示的突出显示,以控制是否显示重叠匹配。
percent-crlf 50 总行数中必须以 CR/LF 结尾的百分比,以便 vile 自动将缓冲区的记录分隔符转换为 crlf。
percent-utf8 90 包含嵌入式空字符的总字符百分比,使其看起来像 UTF-16 或 UTF-32 编码。如果 file-encoding 选项设置为 auto 并且匹配率高于此阈值,vile 将以 UTF-8 格式加载缓冲区数据。
popup-choices (pc) delayed 控制在完成操作时是否使用弹出窗口提供帮助。值可以是 off(无窗口)、immediate(立即弹出)或 delayed(等待第二次按下 Tab 键)。
popup-msgs (pm) nopopup-msgs 启用时,vile 会弹出 [Messages] 缓冲区,显示写入消息行的文本。
recordseparator (rs) lfa 指定 vile 读取和写入文件的格式。格式包括 lf(用于 Unix)、crlf(用于 DOS)、cr(用于 Macintosh)和 default(根据平台为 lf 或 crlf)。
resolve-links noresolve-links 如果设置,vile 会完全解析文件名,以防某些路径组件是符号链接。这有助于避免通过不同路径名对同一物理文件进行多次意外编辑。
ruler noruler 在状态行中显示当前行和列,以及当前缓冲区的行在光标之前的百分比。
showchar (sc) noshowchar 在状态行中显示当前字符的值。
showformat (sf) foreign 控制何时/是否在状态行中显示记录分隔符信息。值包括:always(总是显示)、differs(当本地模式与全局模式不同时显示)、local(只要设置了本地模式就显示)、foreign(当记录分隔符与本地默认值不同时显示)和 never(从不显示)。
showmode (smd) showmode 在状态行中显示插入和替换模式的指示器。
sideways 0 控制屏幕向左或向右滚动的字符数。值为 0 时,屏幕移动三分之一。
tabinsert (ti) tabinsert 允许将制表符物理插入到缓冲区中。如果关闭(notabinsert),vile 将永远不会在缓冲区中插入制表符;而是始终插入适当数量的空格。
tagignorecase (tc) notagignorecase 使标签搜索忽略大小写。
taglength (tl) 0 定义标签的有效字符数。默认值(零)表示所有字符都有效。这不会影响从光标拾取的标签;它们始终精确匹配。(这与其他编辑器不同)
tagrelative (tr) notagrelative 使用另一个目录中的标签文件时,该标签文件中的文件名被视为相对于标签文件所在的目录。
tags tags 用于查找标签引用的文件列表,用空格分隔。
tagword (tw) notagword 在标签查找中使用光标下的整个单词,而不仅仅是从当前光标位置开始的子单词。
undolimit (ul) 10 限制可撤销的更改次数。值为零表示“无限制”。
unicode-as-hex (uh) nounicode-as-hex 如果显示的缓冲区的文件编码表明是 Unicode 格式(例如 utf-8、utf-16 或 utf-32),即使显示器能够将非 ASCII 值显示为常规字符,也会以 \uXXXX 格式显示这些值。
unprintable-as-octal (uo) nounprintable-as-octal 以八进制显示设置了第八位的非打印字符。否则,使用十六进制。未设置第八位的非打印字符始终以控制字符表示法显示。
visual-matches none 控制搜索模式的所有匹配项的突出显示。可能的值为 none(无突出显示)、underline(下划线)、bold(粗体)和 reverse(反色)。在支持的系统上也可以使用颜色。
xterm-fkeys noxterm-fkeys 通过为终端描述中列出的每个功能键的 Shift、Ctrl 和 Alt 修饰符生成系统绑定,支持 xterm 的修改功能键。
xterm-mouse noxterm-mouse 允许在 xterm 中使用鼠标。详情请参阅在线帮助。
xterm-title noxterm-title 如果在 xterm 中运行,启用标题栏更新。每次切换到不同的缓冲区时,vile 可以更新标题。这使用与 xterm-mouse 模式相同的 TERM 变量测试。

1.3 选项设置流程

graph TD;
    A[开始] --> B[确定要设置的选项];
    B --> C[查找选项的默认值和描述];
    C --> D[根据需求修改选项值];
    D --> E[保存设置];
    E --> F[结束];

通过以上表格和流程图,我们可以清晰地了解 Vile 9.6 各种选项的功能和设置流程,根据自己的需求灵活调整编辑器的行为。

2. Vile 常见问题及解决办法

2.1 打开文件问题

在使用 Vile 编辑器打开文件时,可能会遇到各种问题,以下是一些常见问题及对应的解决办法:
| 问题表现 | 可能原因 | 解决办法 |
| — | — | — |
| 调用 vi 时出现 [open mode] 消息 | 终端类型可能识别错误 | 立即输入 :q 退出编辑会话,检查环境变量 $TERM,应将其设置为终端名称;或联系系统管理员提供合适的终端类型设置 |
| 出现“Visual needs addressable cursor or upline capability”等消息 | 终端类型未定义或 terminfo 或 termcap 条目可能有问题 | 输入 :q 退出,检查 $TERM 环境变量,或让系统管理员为环境选择合适的终端类型 |
| 认为文件已存在但出现 [new file] 消息 | 文件名大小写可能错误或处于错误目录 | 输入 :q 退出,检查文件名大小写;使用 pwd 命令确认所在目录是否正确;使用 ls 命令查看文件是否以类似名称存在 |
| 调用 vi 后出现冒号提示符(处于 ex 行编辑模式) | 可能在 vi 绘制屏幕前输入了中断 | 在 ex 提示符(:)下输入 vi 重新进入 vi |
| 出现“[Read only]”等消息 | 可能以查看模式调用 vi 或没有文件写入权限 | 参考“保存文件问题”部分的解决办法 |
| 出现“Bad file number”等消息 | 调用编辑的文件不是常规文本文件 | 输入 :q! 退出,使用 file 命令检查要编辑的文件 |
| 因上述问题输入 :q 时出现“No write since last change (:quit! overrides).”消息 | 未意识到已修改文件 | 输入 :q! 退出,本次会话的更改不会保存到文件中 |

2.2 保存文件问题

保存文件时也可能遇到一些麻烦,下面是常见问题及解决步骤:
| 问题表现 | 可能原因 | 解决办法 |
| — | — | — |
| 尝试写入文件时出现“File exists”等消息 | 文件已存在 | 输入 :w! file 覆盖现有文件,或输入 :w newfile 将编辑后的版本保存到新文件 |
| 想写入文件但无写入权限,出现“Permission denied.”消息 | 没有文件写入权限 | 输入 :w newfile 将缓冲区内容写入新文件;若有目录写入权限,使用 mv 命令替换原文件;若没有目录写入权限,输入 :w pathname/file 将缓冲区写入有写入权限的目录(如主目录或 /tmp) |
| 尝试写入文件时提示文件系统已满 | 文件系统空间不足 | 输入 :!rm junkfile 删除大的无用文件释放空间;或输入 :!df 查看其他文件系统是否有空间,若有则选择该文件系统的目录,使用 :w pathname 写入文件 |
| 系统进入开放模式并提示文件系统已满 | vi 临时文件所在磁盘已满 | 输入 :!ls /tmp 查看是否有可删除的文件释放磁盘空间;输入 :sh 创建临时 Unix shell 删除文件或执行其他 Unix 命令,输入 CTRL - D 或 exit 退出 shell 回到 vi;在支持作业控制的 shell 中,可输入 CTRL - Z 暂停 vi 回到 Unix 提示符,输入 fg 回到 vi;释放空间后使用 :w! 写入文件 |
| 尝试写入文件时提示磁盘配额已达到 | 磁盘配额用尽 | 尝试使用 ex 命令 :pre(:preserve 的缩写)强制系统保存缓冲区;若不行,使用 :sh 或 CTRL - Z 离开 vi 删除文件,使用 CTRL - D 或 fg 回到 vi,然后使用 :w! 写入文件 |

2.3 进入可视化模式问题

在编辑过程中可能会意外进入 ex 编辑器,以下是解决办法:
| 问题表现 | 可能原因 | 解决办法 |
| — | — | — |
| 编辑 vi 时意外进入 ex 编辑器 | 在 vi 命令模式中输入了 Q | 在 ex 中输入 vi 回到 vi 编辑器 |

2.4 vi 命令使用问题

当输入命令时,可能会遇到文本在屏幕上跳动且命令不起作用的情况,解决步骤如下:
| 问题表现 | 可能原因 | 解决办法 |
| — | — | — |
| 输入命令时文本跳动,命令不正常工作 | 可能误输入 J 而实际想输入 j | 确保正确输入命令,区分 J 和 j |

2.5 问题解决流程

graph TD;
    A[遇到问题] --> B[确定问题类型];
    B --> C{是否为打开文件问题};
    C -- 是 --> D[参考打开文件问题解决办法];
    C -- 否 --> E{是否为保存文件问题};
    E -- 是 --> F[参考保存文件问题解决办法];
    E -- 否 --> G{是否为进入可视化模式问题};
    G -- 是 --> H[参考进入可视化模式问题解决办法];
    G -- 否 --> I{是否为 vi 命令使用问题};
    I -- 是 --> J[参考 vi 命令使用问题解决办法];
    I -- 否 --> K[寻求其他帮助];
    D --> L[问题解决?];
    F --> L;
    H --> L;
    J --> L;
    L -- 是 --> M[结束];
    L -- 否 --> K;
    K --> N[记录问题并反馈];
    N --> M;

通过以上对 Vile 9.6 编辑器选项的介绍以及常见问题的解决办法,用户可以根据自身需求灵活调整编辑器设置,同时在遇到问题时能够快速定位并解决,提高使用 Vile 编辑器的效率和体验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值