vim - Ctrl+6 不是 Vim 中的编辑器命令(在 .vimrc 中切换语言)
问题描述
我希望 VIM 默认以两个键映射(希腊语和拉丁语)开头,但默认为拉丁语进行编码。我已经设法在 .vimrc 中添加了希腊语:set keymap=greek
,但是这使得希腊语成为默认语言。在 VIM 中,我可以使用 Ctrl+6 在插入模式下更改为拉丁语,但我希望在启动 vim 时自动发生这种情况,因此拉丁语将是默认的键盘映射。问题是 Ctrl+6(或 Ctrl+^)不是编辑器命令,而是键绑定,因此我无法将它放在 .vimrc 中。关于如何解决这个问题的任何想法?
tl; dr 我希望希腊语键盘映射在 vim 中自动加载,但不是默认键盘映射。
解决方案
这不完全是您要求的解决方案,而是一个适合我的解决方案。
我有两个imap
命令可以在.vimrc
法语和英语键盘之间切换:
imap ^f <ESC>:set keymap=canfr<CR>a
imap ^^ <ESC>:set keymap=<CR>a
在插入模式下,如果我输入 ^f 它会切换到法语,如果我输入 ^^ 它会切换回默认值。
您也可以在命令模式下添加相同的内容:
map ^f :set keymap=canfr<CR>
map ^^ :set keymap=<CR>
在您的情况下,您必须用激活各自键盘所需的内容替换我的:set keymap
命令,并且可能还用您喜欢的字符替换我的^f
和, (不知道如何编码,我把它留给你)和第二个字符您可以选择选择哪个键盘。^^
Ctrl-6
PS:要创建ctrl-6
规则,我会在键盘上按 Ctrl-V,然后按 Ctrl-6。在我使用的太多机器之一上,结果如下所示,我在其中添加e
了英语和f
法语,但在您的机器上很可能会有所不同:
map <ESC>[54;5ue :set keymap=<CR>
map <ESC>[54;5uf :set keymap=canfr<CR>
imap <ESC>[54;5ue <ESC>:set keymap=<CR>a
imap <ESC>[54;5uf <ESC>:set keymap=canfr<CR>a
我还用 替换了该技术产生的文字转义字符,它在视觉上看起来很喜欢^[
,但实际上只是一个字符,<ESC>
因此可以剪切和粘贴。
PPS:当您按下 Ctrl-V Ctrl-6 时,Ctrl-6 的外观与系统高度相关。我上面显示的是来自 Windows 机器的 cygwin-mintty 终端中的 ubuntu 会话。在 gvim for Windows 中,它是单个字符,显示为^^
,在 Git Bash 中的 vi 中,它是单个字符,显示为^?
. 由于我不完全理解的原因,Ctrl- N的编码变化很大。
PPPS:要让所有这些都为您工作,您可能必须删除现有的 Ctrl-6 键绑定。
推荐阅读
- python - Python cassandra 驱动程序 Readtimeout
- azure - 如果未传递 userId,acquireTokenAsync 方法将引发错误
- html - R闪亮:文本不会在splitLayout()中换行
- sapui5 - 获取 XML 片段中定义的控件 ID
- r - 如何仅使用 R 获取链接
- google-sheets - 无法对谷歌表格中的查询结果运行过滤器
- excel - 使用命名范围表时出现 VLOOKUP 问题
- azure - 从多个设备向 Microsoft Azure IoT Central 发送数据的最佳方法
- mysql - 在 mySQL 中寻找此 IF 语句的解决方案
- bash - 将区间表达式与 bash 扩展通配符一起使用