iimap服务器没有响应,解决imap被vimIM和谐掉的问题
这两天在用vim写c的时候发现一个奇怪的问题
当用vimim 输入完中文回到英文时,我用imap设定的 括号配对无法使用了
仔细研究发现,当使用过 vimim 后,键盘上只有F1-F-12 这几个键的imap还生效,其余
自己设定的imap都被清空
于是查找原因
首先想到的就是imap问题,于是查看不同情况下的imap
在没有调用vimim时 敲:imap 查看得
i rintf("\n");
i :!gcc %
i VimIM * 12_ChineseMode()
i VimimOneKey * g:vimim_onekey()
i * :wa
i 78i-o
i * :ConqueTermVSplit bash
i
i
i
i
i
i
i * 12_VimIMSwitch()
i VimIM
i VimimOneKey
i ( ()i
i ) =ClosePair(')')
i p
i { {}O
i } =ClosePair('}')
打开vimim,再查看imap ,如下
i * 12_vimim_backspace()
i rintf("\n");
i :!gcc %
i VimIM * 12_ChineseMode()
i VimimOneKey * g:vimim_onekey()
i * :wa
i 78i-o
i * :ConqueTermVSplit bash
i
i
i
i * 12_vimim_enter()
i
i
i
i * 12_VimIMSwitch()
i VimIM
i * 12_vimim_punctuation_toggle()
i * 12_vimim_space()
i ! * 12_vimim_chinese_punctuation_map("!")
i " * =12_vimim_get_quote(2)
i # * 12_vimim_chinese_punctuation_map("#")
i $ * 12_vimim_chinese_punctuation_map("$")
i % * 12_vimim_chinese_punctuation_map("%")
i & * 12_vimim_chinese_punctuation_map("&")
i ' * =12_vimim_get_quote(1)
i ( * 12_vimim_chinese_punctuation_map("(")
i ) * 12_vimim_chinese_punctuation_map(")")
i * * 12_vimim_chinese_punctuation_map("*")
i + * 12_vimim_chinese_punctuation_map("+")
i , * 12_vimim_chinese_punctuation_map(",")
i - * 12_vimim_chinese_punctuation_map("-")
i . * 12_vimim_chinese_punctuation_map(".")
i 0 * 12_vimim_alphabet_number_label("0")
i 1 * 12_vimim_alphabet_number_label("1")
i 2 * 12_vimim_alphabet_number_label("2")
i 3 * 12_vimim_alphabet_number_label("3")
i 4 * 12_vimim_alphabet_number_label("4")
i 5 * 12_vimim_alphabet_number_label("5")
i 6 * 12_vimim_alphabet_number_label("6")
i 7 * 12_vimim_alphabet_number_label("7")
i 8 * 12_vimim_alphabet_number_label("8")
i 9 * 12_vimim_alphabet_number_label("9")
i : * 12_vimim_chinese_punctuation_map(":")
i ; * 12_vimim_chinese_punctuation_map(";")
i 12_vimim_chinese_punctuation_map("
i = * 12_vimim_chinese_punctuation_map("=")
i > * 12_vimim_chinese_punctuation_map(">")
i ? * 12_vimim_chinese_punctuation_map("?")
i @ * 12_vimim_chinese_punctuation_map("@")
i [ * 12_vimim_chinese_punctuation_map("[")
i \ * =pumvisible() ? "" : ""、
i ] * 12_vimim_chinese_punctuation_map("]")
i ^ * 12_vimim_chinese_punctuation_map("^")
i _ * 12_vimim_chinese_punctuation_map("_")
i a * =g:vimim_wubi_ctrl_e_ctrl_y()a=g:vimim()
i b * =g:vimim_wubi_ctrl_e_ctrl_y()b=g:vimim()
i c * =g:vimim_wubi_ctrl_e_ctrl_y()c=g:vimim()
i d * =g:vimim_wubi_ctrl_e_ctrl_y()d=g:vimim()
i e * =g:vimim_wubi_ctrl_e_ctrl_y()e=g:vimim()
i f * =g:vimim_wubi_ctrl_e_ctrl_y()f=g:vimim()
i g * =g:vimim_wubi_ctrl_e_ctrl_y()g=g:vimim()
i ^ * 12_vimim_chinese_punctuation_map("^")
i _ * 12_vimim_chinese_punctuation_map("_")
i a * =g:vimim_wubi_ctrl_e_ctrl_y()a=g:vimim()
i b * =g:vimim_wubi_ctrl_e_ctrl_y()b=g:vimim()
i c * =g:vimim_wubi_ctrl_e_ctrl_y()c=g:vimim()
i d * =g:vimim_wubi_ctrl_e_ctrl_y()d=g:vimim()
i e * =g:vimim_wubi_ctrl_e_ctrl_y()e=g:vimim()
i f * =g:vimim_wubi_ctrl_e_ctrl_y()f=g:vimim()
i g * =g:vimim_wubi_ctrl_e_ctrl_y()g=g:vimim()
i h * =g:vimim_wubi_ctrl_e_ctrl_y()h=g:vimim()
i i * =g:vimim_wubi_ctrl_e_ctrl_y()i=g:vimim()
i j * =g:vimim_wubi_ctrl_e_ctrl_y()j=g:vimim()
i k * =g:vimim_wubi_ctrl_e_ctrl_y()k=g:vimim()
i l * =g:vimim_wubi_ctrl_e_ctrl_y()l=g:vimim()
i m * =g:vimim_wubi_ctrl_e_ctrl_y()m=g:vimim()
i n * =g:vimim_wubi_ctrl_e_ctrl_y()n=g:vimim()
i o * =g:vimim_wubi_ctrl_e_ctrl_y()o=g:vimim()
i p * =g:vimim_wubi_ctrl_e_ctrl_y()p=g:vimim()
i q * =g:vimim_wubi_ctrl_e_ctrl_y()q=g:vimim()
i r * =g:vimim_wubi_ctrl_e_ctrl_y()r=g:vimim()
i s * =g:vimim_wubi_ctrl_e_ctrl_y()s=g:vimim()
i t * =g:vimim_wubi_ctrl_e_ctrl_y()t=g:vimim()
i u * =g:vimim_wubi_ctrl_e_ctrl_y()u=g:vimim()
i v * =g:vimim_wubi_ctrl_e_ctrl_y()v=g:vimim()
i w * =g:vimim_wubi_ctrl_e_ctrl_y()w=g:vimim()
i x * =g:vimim_wubi_ctrl_e_ctrl_y()x=g:vimim()
i y * =g:vimim_wubi_ctrl_e_ctrl_y()y=g:vimim()
i z * =g:vimim_wubi_ctrl_e_ctrl_y()z=g:vimim()
i { * 12_vimim_chinese_punctuation_map("{")
i } * 12_vimim_chinese_punctuation_map("}")
i ~ * 12_vimim_chinese_punctuation_map("~")
在关闭vimim后再查看imap ,发现
i rintf("\n");
i :!gcc %
i VimIM * 12_ChineseMode()
i VimimOneKey * g:vimim_onekey()
i * :wa
i 78i-o
i * :ConqueTermVSplit bash
i
i
i
i
i
i
i * 12_VimIMSwitch()
i VimIM
i VimimOneKey
通过上面三个的比较,可以明白是怎么回事了,当启用vimim后,vimim 会通过imap 对
按键进行映射,对字母进行调用 匹配的函数, 对标点、符号则把半角换成全角。当
vimim被关闭后,程序调用函数把上面的映射清除,于是原先自己设定的imap就没有了。
于是想通过修改原代码,让它不去改动我需要的一些标点
打开 vimim.vim
首先看到这一段函数,从字面上看它是控制 打开和关闭vimim时执行的动作
function! s:vimim_start()
sil!call s:vimim_plugin_conflict_fix_on()
sil!call s:vimim_i_setting_on()
sil!call s:vimim_super_reset()
sil!call s:vimim_label_on()
sil!call s:vimim_helper_mapping_on()
set noruler
highlight! link Cursor CursorIM
endfunction
function! g:vimim_stop()
sil!call s:vimim_i_setting_off()
sil!call s:vimim_super_reset()
sil!call s:vimim_i_map_off()
sil!call s:vimim_plugin_conflict_fix_off()
sil!call s:vimim_chinesemode_mapping()
sil!call s:vimim_onekey_mapping()
sil!call s:vimim_restore_skin()
endfunction
一直没有找到设定imap的函数在哪,把start中的函数挨个注释都没找到。
但发现stop函数中的s:vimim_i_map_off(),是控制是否清空imap功能的,于是去看该
函数
function! s:vimim_i_map_off()
let recycles = range(0,9) + s:valid_keys
if s:chinese_input_mode !~ 'dynamic' && empty(s:vimim_latex_suite)
let recycles += s:AZ_list
endif
let recycles += keys(s:evils) + keys(s:punctuations)
let recycles += ['','','','']
for _ in recycles
if len(maparg(_, 'i')) > 0
sil!exe 'iunmap '. _
endif
endfor
endfunction
从中发现了punctuations ,搜索之,发现要找的东西了
function! s:vimim_dictionary_punctuation()
let s:punctuations = {}
let s:punctuations['@'] = s:space
let s:punctuations[':'] = s:colon
let s:punctuations['['] = s:left
let s:punctuations[']'] = s:right
let s:punctuations['#'] = '#'
let s:punctuations['&'] = '&'
let s:punctuations['%'] = '%'
let s:punctuations['$'] = '¥'
let s:punctuations['!'] = '!'
let s:punctuations['~'] = '~'
let s:punctuations['('] = '('
let s:punctuations[')'] = ')'
let s:punctuations['{'] = '〖'
let s:punctuations['}'] = '〗'
let s:punctuations['^'] = '……'
let s:punctuations['_'] = '——'
let s:punctuations['
let s:punctuations['>'] = '》'
let s:punctuations['+'] = "+"
let s:punctuations['-'] = '-'
let s:punctuations['='] = '='
let s:punctuations[';'] = ';'
let s:punctuations[','] = ','
let s:punctuations['.'] = '。'
let s:punctuations['?'] = '?'
let s:punctuations['*'] = '﹡'
let s:evils = {}
if empty(s:vimim_backslash_close_pinyin)
let s:evils['\'] = '、'
endif
if empty(s:vimim_latex_suite)
let s:evils["'"] = '‘’'
let s:evils['"'] = '“”'
endif
endfunction
这就是那个把标点符号从半角换成全角的函数
于是……把不能让它imap的 注释掉
let s:punctuations = {}
" let s:punctuations['@'] = s:space
" let s:punctuations[':'] = s:colon
" let s:punctuations['['] = s:left
" let s:punctuations[']'] = s:right
" let s:punctuations['#'] = '#'
" let s:punctuations['&'] = '&'
" let s:punctuations['%'] = '%'
" let s:punctuations['$'] = '¥'
" let s:punctuations['!'] = '!'
let s:punctuations['~'] = '~'
" let s:punctuations['('] = '('
" let s:punctuations[')'] = ')'
" let s:punctuations['{'] = '〖'
" let s:punctuations['}'] = '〗'
let s:punctuations['^'] = '……'
let s:punctuations['_'] = '——'
" let s:punctuations['
" let s:punctuations['>'] = '》'
let s:punctuations['+'] = "+"
let s:punctuations['-'] = '-'
" let s:punctuations['='] = '='
" let s:punctuations[';'] = ';'
let s:punctuations[','] = ','
let s:punctuations['.'] = '。'
" let s:punctuations['?'] = '?'
" let s:punctuations['*'] = '﹡'
ok,保存退出,去试试效果 perfect啊
现在写c就更爽了,括号配对,中文输入插件 ,哈哈哈……
iimap服务器没有响应,解决imap被vimIM和谐掉的问题相关推荐
- 手机运行服务器无响应,《最强蜗牛》服务器无响应怎么办 服务器无响应解决方法...
导 读 最强蜗牛服务器无响应怎么办?本作在今日迎来了正式的公测,这会导致大批量的玩家同时涌入进来,而服务器也因此而遭受到了非常大的符合,所以会导致后续加入进来的玩家出现服务器无响应进不去的现象.下面就 ...
- 饥荒联机版与服务器中断,《饥荒联机版》服务器没有响应解决方法
导 读 <饥荒联机版>显示服务器没有响应该怎么办呢?不少玩家遇到过服务器没有响应的问题吧.这里给大家介绍<饥荒联机版>显示服务器没有响应解决方法,一起来了解下吧. 问题说明 想 ...
- 刺激战场国际服务器没有响应,刺激战场连接服务器没有响应怎么办? 绝地求生刺激战场服务器没响应解决方法是什么?...
绝地求生刺激战场链接服务器没有响应怎么办?很多玩家在登陆刺激战场的时候会发现自己的手机会提示,连接服务器没有响应,请确认你的网络是否正常,这是为什么呢?怎么才能解决刺激战场连接服务器没有响应的问题呢? ...
- 卡通农场安卓服务器无响应,最强蜗牛游戏进不去怎么办 服务器无响应解决方法 - 找游戏手游网...
版本:v0.11.1 类型:模拟养成大小:111.37 MB评分:9.2 标签: 冒险 休闲游戏 养成 立即下载 最强蜗牛游戏进不去怎么办?服务器无响应怎么办?最强蜗牛在6月23日进行了公测,很多玩家 ...
- dns服务器未响应重启就好,网络诊断提示DNS服务器未响应解决方法 - 全文
DNS服务器未响应是什么意思 DNS服务器是计算机域名系统(DomainNameService)的缩写,它是由域名解析器和域名服务器组成的.域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并 ...
- dns服务器连接未响应,dns服务器未响应解决方法
您可能感兴趣的话题: dns服务器未响应 核心提示:平日上网中,很多朋友遇到过dns服务器未响应的问题,本教程为大家介绍出现此故障的原因及采取的措施. 相信在平日上网中,很多朋友遇到过dns服务器未响 ...
- 网络诊断dns服务器未响应,网络诊断提示DNS服务器未响应解决方法
DNS服务器未响应是什么意思 DNS服务器是计算机域名系统(DomainNameService)的缩写,它是由域名解析器和域名服务器组成的.域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并 ...
- DNS服务器未响应解决方法
我安装window7后下了个激活软件进行激活,可是激活后就不能上网了.浏览器诊断后的问题是DNS服务器未响应.我从网上找了些资料,解决的方法有两个: 1.使用360直接进行修复,360功能大全里有个修 ...
- dns服务器未响应 没网,dns服务器未响应解决方法
相信在平日上网中,很多朋友遇到过dns服务器未响应的问题,那么出现此故障是什么原因呢?又该如何解决呢? dns服务器支持多线解析,特别适合有多条出口线路的运营商.dns服务器对于外部DNS服务器对于外 ...
最新文章
- docker dockerfile 映射端口范围 批量映射端口
- 详细分析图像形态学操作
- 02-线性结构1 两个有序链表序列的合并 (15 分)
- install maven3 on ubuntu
- 手语识别_如何使用转移学习进行手语识别
- 做完四个小项目的收获
- 【java】@Transactional注解与事务
- python工资一般多少p-预测python数据分析师的工资
- 9. grouped product
- RK3399 Android上面调试IMX291 Camera驱动
- 微信小程序如何实现点击地图控件后位置移动到当前的定位点
- 山石网科面经(附参考回答)
- 22. 关于定时任务指定的时间间隔内没有完成任务的处理
- 【基础知识】8、加州房价预测项目精细解释
- Java音乐播放器设计
- 如何用excel搭建数据模型,销售数据管理软件
- 核磁共振 Nuclear Magnetic Resonance (NMR), H1-NMR, C13-NMR, DEPT, COSY 等分析技术
- 步步为营二 C语言基本概念 和 数据类型
- 无心剑英译吴飞《经纬之歌》(泸州职业技术学院形象宣传歌曲)
- 如何用好 Google 搜索引擎?
热门文章
- 数码摄影入门:焦距是什么?
- Solidworks如何生成爆炸图
- 世界首富用 AI 开除混吃混喝的“兄弟”
- asp:DropDownList动态绑定数据,设置默认值
- IP67 | IP58 防护等级理解
- 基于脉振高频电流注入的永磁同步电机无感FOC
- 【笔记】Android桌面角标Badge官方文档和兼容性解决
- vue 使用正则判断邮箱格式是否正确 手机号 证件啥的都可以套用
- U盘做为系统盘安装系统,出现start booting from usb device和boot failed解决方案
- 最新2022年高职大数据国赛任务书详解与模拟练习