如何在 Vim 中为命令创建别名?

2023-12-11

Vim 是我编程时首选的文本编辑器,因此我总是遇到一个特别烦人的问题。

通常,当我快速需要保存缓冲区并继续执行其他杂项任务时,我会执行典型的操作

:w

然而,我总是——似乎超过 50% 的时间——设法利用这一点:w。很自然地,Vim 对我大喊大叫,因为W是无效命令:

E492: Not an editor command: W

我的问题是如何Vim 中的别名冒号命令。特别是,您能否举例说明如何别名W to w.

我知道这个过程map keys对某些commands,但这不是我要找的。


要保持完成不变,请尝试使用

cnoreabbrev W w

它将取代W在命令行中w,但前提是它后面或前面都没有单词字符,所以:W<CR>将被替换为:w<CR>, but :Write惯于。 (请注意,这会影响任何匹配的命令,包括您可能不期望的命令。例如,命令:saveas W Z将被替换为:saveas w Z,所以要小心这一点。)

Update

这是我的写法now:

cnoreabbrev <expr> W ((getcmdtype() is# ':' && getcmdline() is# 'W')?('w'):('W'))

作为一个函数:

fun! SetupCommandAlias(from, to)
  exec 'cnoreabbrev <expr> '.a:from
        \ .' ((getcmdtype() is# ":" && getcmdline() is# "'.a:from.'")'
        \ .'? ("'.a:to.'") : ("'.a:from.'"))'
endfun
call SetupCommandAlias("W","w")

这会检查命令类型是否为:命令是W,所以它比仅仅更安全cnoreabbrev W w.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Vim 中为命令创建别名? 的相关文章

  • 设置 vim 命令的键盘快捷键

    说我想要
  • 如何在Vim中正确显示UTF-8字符

    我想要 需要编辑包含 UTF 8 字符的文件 并且我想使用 Vim 在我被指责问以前问过的问题之前 我已经阅读了有关编码 文件编码 s 术语编码等的 Vim 文档 用 google 搜索了该主题 并阅读这个问题 https stackove
  • 使用关键字启动 syn 区域

    我想用 virtual 启动一个区域 以用不同的颜色突出显示所有虚拟方法 但是 virtual 已经在 cpp vim 文件中定义为关键字 因此永远不会执行区域匹配 我尝试了以下方法 syn region cVirtualMethod st
  • Vim:领导不工作

    当尝试使用时vim latexsuite的映射 使用的是Leader不工作 nmap n
  • VIM:可用的快捷方式?

    我在 vim 中使用了许多快捷方式 其他快捷方式由插件使用 有时我想为新命令添加快捷方式 但事后请注意该快捷方式已被使用 有没有办法查看 VIM 中所有可用快捷键的列表 所有 ctrl shift alt 快捷键 Type help ind
  • Vim 无法在 OS X 上使用 python 进行编译

    我一直在尝试编译vim 7 3 with 蟒蛇2 7支持苹果系统 X 10 6 Vim 本身编译得很好 但嵌入的 python 编译得不太好 我已采取的步骤 hg clone https vim googlecode com hg vim
  • 有没有办法在 (g)Vim 中突出显示多个搜索?

    我想在 Vim gVim 中搜索多个字符串 并用不同的颜色突出显示它们 有没有办法用开箱即用的 Vim 或插件来做到这一点 在 vim 编辑器中突出显示多个单词有两种简单的方法 进入搜索模式 即输入 然后输入 v后面是您要搜索的单词 以 分
  • 为什么在 Vim 的插入模式下粘贴长一行非常慢?

    昨天 当我尝试将 1200 行 每行 80 个字符 粘贴到 Vim 时 我的 Macbook 被卡住了 下载文件而不是粘贴文本要快得多 我认为这个问题可能是互联网运营商允许上传速度比下载速度慢的原因 如果您将其粘贴到终端窗口中 Vim 会认
  • Vi/vim - 从末尾行删除,包括最后一个字符

    我想做类似这个问题的事情VI VIM 删除 更改从右到左 https stackoverflow com q 9154212 301527即从行尾删除到该行中 的最后一个实例 这可以使用dT 将光标放置在该行的末尾 然而 这个命令和其他这样
  • vim 使用外部文件上的行号突出显示行

    我有两个文本文件 一个是我当前正在工作的文件 另一个包含行号列表 我想做的是突出显示第一个文件中行号与后一个文件匹配的行 E g File1 I like eggs I like meat I don t like eggplant My
  • Vim 错误格式和 jslint

    我正在尝试让 makeprg 和 errorformat 与 VIM 和 jslint 一起使用 但似乎无法为我的生活提供正确的错误格式 我正在使用 jslint 的 NodeJS 版本 它会产生如下结果 1 116 9 The body
  • 如何使用 VIM 进行 .Net 开发 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 Vim 中注释/取消注释 ruby​​ 代码块的最优雅的方式是什么?

    在VIM中 当我需要注释掉一段Ruby代码时 我导航到要注释掉的行中的第一列 我按 CTRL v 进入视觉块模式 我向下导航直到我想要结束操作的地方 I type r
  • Vim ":source %" 命令导致错误 (E499)

    Stack Overflow vim 用户大家好 我最近发现自己花了相当多的时间在学校的计算机科学实验室编写代码 我在无数的linux系统上配置过vim 从来没有遇到过这个错误 E499 Empty file name for or onl
  • Vim:设置 ctag 很困难。子目录中的源代码在项目根目录中看不到标签文件

    我今天试图在 Vim 上设置 丰富的 ctags 但很难让它正常工作 我在命令行上使用以下命令生成 ctags 文件 cd myproj ctags R 这会将标签文件放在 myproj 根目录中 然而 当我处理位于根目录中的源代码时 Vi
  • Vim:无法让病原体加载包

    我在 Stackoverflow 和 github 等上阅读了有关此问题的其他五个问题 但一直无法解决这个问题 此时我完全迷失了 我使用的是 Ubuntu 11 10 和 Vim 7 3 这是我的 vimrc set nocp call p
  • vim 脚本“input()”函数不需要用户按 Enter 键

    我想让用户调用我的函数 然后让该函数请求用户输入 但我不希望用户在输入 input 函数所需的字母后必须输入 enter 例如 用户应该能够键入 h j k l 等单字母命令 并且键入的每个字母都会在我的函数中循环 直到用户键入 x 退出
  • VIM:使用 :normal 命令退出插入模式

    当我使用 normal 命令进入插入模式时 normal i 例如 如何退出插入模式 如果我按 或 VIM 会退出命令模式 并且我无法运行 normal 命令 I put imap
  • Android 对 Runtime.getRuntime().exec() 的权限

    我有一个应用程序在清单上具有以下权限 我的应用程序在 Android JB 4 1 2 上运行 UPDATE 我尝试在 JB 上运行该应用程序 但它不起作用 它适用于早期的 API 版本
  • C# - 使用 Vim 作为主编辑器 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我已经喝了酷乐了 Vim 优雅美丽 我必须学习如何使用它并配置它以拥有一个出色的编译器 这是最好的学习方式 问题是 我从哪里开始 是否有一个很好的教程

随机推荐

  • 图例与饼图重叠

    在 python 中使用 matplotlib 图例与我的饼图重叠 尝试了 loc 的各种选项 例如 最佳 1 2 3 但无济于事 关于如何准确提及图例位置 例如从饼图边界给出填充 或至少确保它不重叠有什么建议吗 简短的回答是 您可以使用p
  • firebase 从 firestore js sdk 缓存检索文档是否收费

    我正在使用 firebase JS SDK 离线持久化已启用 这会自动将我检索到的文档缓存在 JS SDK 中 我执行这个查询 once firebase firestore doc path to doc get twice fireba
  • 在快速路由文件中使用 socket.io

    我正在尝试将 Socket io 与 Node js 结合使用 并发送到路由逻辑内的套接字 我有一个相当标准的 Express 3 设置 其中有一个位于路由中的 server js 文件 然后我有一个位于路由文件夹中的 index js 该
  • 为什么打印功能没有在正确的时间运行? [复制]

    这个问题在这里已经有答案了 这是我的代码 import time as t print hello end t sleep 1 print hello end t sleep 1 print hello end t sleep 1 我的问题
  • Imagemagick 去饱和黑/白?

    想把它变成黑白的 不知道该使用 imagick 的什么 handle data file get contents http www bungie net Stats Reach Nightmap ashx http www bungie
  • AttributeError:“CountVectorizer”对象没有属性“get_feature_names”

    该代码之前可以运行 没有显示任何错误 这是一个情感分析机器学习项目 该代码基于字数统计的逻辑回归模型 c CountVectorizer stop words english def text fit X y model clf model
  • jqGrid 使用“filterToolbar”在客户端进行过滤

    我必须向完全在客户端管理的 jqGrid 添加过滤 数据仅从服务器加载一次 我需要使用 filterToolbar 来过滤网格数据 但如果客户端有默认搜索机制 则无法找到信息 服务器端搜索是做到这一点的唯一方法吗 谢谢 科斯明 不幸的是 搜
  • 为什么我的超便携笔记本电脑 CPU 无法在 HPC 中保持最佳性能

    我开发了一个高性能Cholesky 分解例程 在单个 CPU 上应具有约 10 5 GFLOP 的峰值性能 无超线程 但是当我测试它的性能时 有一些我不明白的现象 在我的实验中 我测量了矩阵维度 N 从 250 增加到 10000 时的性能
  • Javascript 事件,捕获有效,而冒泡则不行

    我对 JS 事件传播的理解是 事件首先在 DOM 树中 捕获 然后 冒泡 回来 沿途触发处理程序 div nothing yet div
  • NextJS htaccess 设置,URL 上不带尾部斜杠

    在 NextJS 上发现我的网站存在问题 在开发过程中 我使用按钮导航该网站并手动更改浏览器地址栏 碰巧我不小心在末尾添加了一个斜杠 但我的本地主机服务器将其删除 一切正常 但当我将静态应用程序上传到托管时 一切都发生了变化 重新加载页面时
  • AngularJS - 初始化日期输入

    我有一个应用程序 其中有几个日期字段需要接受来自用户和数据库的值 I found this解决方案 但仍然收到错误消息 错误 ngModel datefmt http errors angularjs org 1 5 8 ngModel d
  • 调试 u-sql 作业

    我想知道是否有任何提示和技巧来查找数据湖分析工作中的错误 大多数时候错误消息似乎不是很详细 当尝试从 CSV 文件中提取时 我经常收到这样的错误 顶点故障触发作业快速中止 顶点失败 SV1 Extract 0 且 gt 错误 顶点用户代码错
  • 使用 8 张图像在 UIImageView 周围创建边框

    I have 8 images I made 4 images for each of the corners and 4 images for each of the sides of UIImageView Now how on Ear
  • 在 Spring 中创建临时 JMS jms 主题

    我正在尝试重构一些遗留代码以使用 Spring 处理与大型机服务的 jms 连接 我需要连接为大型机服务回复创建一个临时主题并将其设置为message setJMSReplyTo replyTo 在我发送消息之前的消息中 谁能提供这方面的例
  • Logstash 中需要 #、输入、过滤器、输出之一

    我试图通过简单地执行文档中给出的命令来回显所输入的内容来使 Logstash 安装工作 但这给了我以下错误 我的命令 C logstash 1 4 0 bin gt logstash bat agent e input stdin outp
  • 如何使用 Laravel 的 Paginate() 输出当前迭代?

    Laravel 5 2 应用程序 我的控制器中有一个函数 它使用 order by 子句查询我的数据库 然后我对其进行分页 public function foo results DB orderBy name desc gt pagina
  • 如何确保 Node.js 在 MongoDB 连接断开后继续运行?

    我在 Express 中有一个错误处理中间件 它尝试捕获所有传入的错误 app use function err req res next console error err stack res status 500 res render
  • 将图像从 azure blob 存储转换为 Base64?

    我正在尝试将图像从 Azure blob 存储转换为 base64 private static string FromAzureToBase64 string azureUri Uri blobUri new Uri azureUri C
  • 将 R 县地图叠加到州地图上

    R新手在这里 如果我第一次使用map state 我该如何使用map county ylim xlim 但像这样抵消它 现在 我正在使用 imagemagickcomposite gravity southwest 合并 2 个 PNG 文
  • 如何在 Vim 中为命令创建别名?

    Vim 是我编程时首选的文本编辑器 因此我总是遇到一个特别烦人的问题 通常 当我快速需要保存缓冲区并继续执行其他杂项任务时 我会执行典型的操作 w 然而 我总是 似乎超过 50 的时间 设法利用这一点 w 很自然地 Vim 对我大喊大叫 因