vim - VIM - 同一行上多个命令的第一个命令被忽略
问题描述
我正在从几个文件中提取信息,并编写了以下命令:
:g!/Value/d | %s/.*=//ge | %s/\;//ge | %y
它基本上是:'删除没有“价值”的行| 删除所有直到 = 符号 | 消除 ”;” | 复制所有注册'
但第一个:g!/Value/d
被忽略了,似乎以%y
某种方式导致它被忽略为
:g!/Value/d | %s/.*=//ge | %s/\;//ge
正确清洁文档。
我还尝试从命令执行中获取日志,那里没有任何帮助。
我看不出最后一个命令如何影响第一个命令。
解决方案
正如解释的那样,命令分隔符根据|
命令具有不同的优先级。:help :bar
对于:global
命令,它(和后续命令)被认为是命令参数本身的一部分。这意味着您的替换和 yank 不会执行一次(在 之后:global
),而是实际上在选择的每一行上:global
执行!
您已经找到了正确的解决方法:通过将命令包装在:execute
(尊重|
命令分隔)并引用它,以下命令仅在第一个命令之后进行评估。
推荐阅读
- c# - 如何将 2D Sprite 统一添加到材质中?
- python - 如何在 python 中使用 any 进行 n^2 搜索
- r - R:计算 log(exp(...)) 的最大浮点误差
- java - superTrend的Java实现
- php - 在 laravel 中更新具有两个不同数组的多个值
- unity3d - Unity 可视化脚本螺栓 Graph Inspector 未显示 Blackboard 布局
- reactjs - 打字稿错误:类型 'string' 不可分配给类型 '"allName" | `allName.${number}.nestedArray`' 以反应钩子形式
- javascript - 如何在 Web 应用程序中停止惯性滚动
- python - 使用 python 但不使用 selenium 下载嵌入式 vimeo 视频
- python - 使用 ID 和密码验证 URL,然后使用 Python 将文件从 URL 移动到 GCS 存储桶