linux - 如何使 z= 在 vi​​m 拼写检查中看起来像 ctrl-x s

标签 linux vim configuration

因此,在插入模式下,如果您在拼写错误的单词上按 ctrl-x s,您会得到一个格式精美的拼写建议弹出菜单。这太棒了。

然而,正常模式下的类似命令 (z=) 给出了一个平淡无奇的纯文本列表,占据了整个屏幕。

我通过在我的 .vimrc 中添加以下键绑定(bind)部分解决了这个问题:
nnoremap <Leader>s ea<C-X><C-S>
这工作得很好,在正常模式下点击 s 会给我同样的下拉菜单......唯一的问题是我现在在所有内容结束时都处于插入模式。有没有办法让下拉样式选择并在替换全部完成后进入正常模式?

最佳答案

你不能直接做。您正在考虑的弹出菜单专门称为“插入模式完成”。

但是,您已经完成了一半,通过映射一个进入插入模式并开始完成的键。现在您所需要的只是映射一个选择条目的键(如“输入”键)以退出插入模式。

您应该测试 pumvisible() 的返回值在您的映射中,以防止它在您不想要时触发。示例(来自评论):

inoremap <expr> <CR> pumvisible() ? "\<C-y><Esc>" : "\<CR>"

也许您还可以设置一个变量或其他东西,或者使用一个您不会使用的键来结束实际的插入模式完成。

关于linux - 如何使 z= 在 vi​​m 拼写检查中看起来像 ctrl-x s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25777205/

相关文章:

vim - Vdebug/Xdebug 仅显示数组的前 32 个元素

java - 如何从 Guice 的注入(inject)器中检索带注释的实例?

c# - 如何在 WPF 应用程序中使用 App.config 文件?

linux - 与 powershell 相比,Bash base64 有一个附加字符而不是 equals

linux - Linux 上的 VS Code,各种权限错误

c++ - 段错误代码的可能原因是什么

vim - 在 Vim 中滚动长包装行

vim cmap lhs 仅在开头

node.js - Angular - 如何指定与系统上安装的版本不同的 node.js 版本?

linux - 将命令转换为 Linux 的 bash 脚本