vim 更改 :x 函数以删除缓冲区而不是 save &辞职

发布于 2024-12-06 07:51:41 字数 269 浏览 0 评论 0原文

我想在 vim gui-mode 中将 :x 设置为 delete buffer 因为我总是杀死整个 gvim,这有点烦人。我知道我可以使用 if has("gui running") 特别设置 gui 问题,但不知道如何重新映射 :x

提前谢谢

ps.: 也许是标签/term remap 是错误的,但我不知道正确的术语,这就是为什么谷歌根本没有提供任何帮助。

I want to set :x in vim gui-mode to delete buffer because I always kill the whole gvim, which is kind of annoying. I know i can specifically set gui problems with if has("gui running") but don't know how to remap :x

thanks in advance

ps.: maybe the tag/term remap is wrong but I don't know the correct term, that's why google didn't provide any help at all.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

相对绾红妆 2024-12-13 07:51:41

我发现最安全的替代方法是使用表达式缩写:

cnoreabbrev <expr> x getcmdtype() == ":" && getcmdline() == 'x' ? 'bd' : 'x'

这将确保缩写仅在使用 :x 时扩展为 bd,否则仅扩展为 x

如需更多帮助:

:h map-<expr>
:h getcmdtype()
:h getcmdline()

经过进一步检查,Hari Krishna Dara 似乎有一个名为 cmdalias 的插件可以完成此操作。 vim。它使用上述技术的变体。

I find the safest alternative is to use an expression abbreviation:

cnoreabbrev <expr> x getcmdtype() == ":" && getcmdline() == 'x' ? 'bd' : 'x'

This will ensure the abbreviation will only be expanded to bd when :x is used otherwise just expand to x.

For more help:

:h map-<expr>
:h getcmdtype()
:h getcmdline()

Upon further inspection there appears to be a plugin that does exactly this by Hari Krishna Dara called cmdalias.vim. It uses a variation of the technique above.

浊酒尽余欢 2024-12-13 07:51:41

这并不像看起来那么容易。 :map 不适用于命令,并且 :command 仅接受以大写字母开头的命令。但您可以使用 :cabbrev

if has("gui_running")
  cabbrev x bd
endif

更新::cmap 可以实际上可以使用::cmap x bd,但是它无法正常工作:命令中每次出现 x 都会立即被 bd 替换。

编辑:这个问题是Can I (re)map Ex commands in vim的重复项?

This is not as easy as it looks. :map won't work with commands and :command only accepts commands that start with an uppercase letter. But you can use :cabbrev:

if has("gui_running")
  cabbrev x bd
endif

UPDATE: :cmap could actually be used: :cmap x bd, but it doesn't work right: each occurrence of x in a command is immediately replaced by bd.

EDIT: This question is a duplicate of Can I (re)map Ex commands in vim?.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文