100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Vim 输入法在normal和insert之间自动切换

Vim 输入法在normal和insert之间自动切换

时间:2023-06-22 17:44:37

相关推荐

Vim 输入法在normal和insert之间自动切换

利用imdisable实现Fcitx与Vim模式切换

在使用fcitx时,可以使用:

在插入(insert)模式下切换到常规模式(normal)时,输入法不会自动改变成英文输入法,可以考虑使用以下配置,在vim中使用.vimrc添加,在neovim中使用init.vim添加以下:

autocmd! InsertLeave * set imdisableautocmd! InsertEnter * set noimdisable

但这一方法的缺陷是只支持GVim(图形界面),原因可能是set imdisable是设定窗口的XIM状态,GVim就是它本身的窗口,可以直接被设置。而在虚拟终端中,这个属性由Terminal控制,vim无从修改。

在vim中的官方解释是:

'imdisable' 'imd'boolean (default off, on for some systems (SGI)) globalWhen set the Input Method is never used. This is useful to disablethe IM when it doesn't work properly.Currently this option is on by default for SGI/IRIX machines. Thismay change in later releases.

其中文解释是:

'imdisable' 'imd' 是布尔值,默认是off,对于一些SGI系统是on,是全局的当设置成 imd 时,输入法永远被禁用。在输入法不能正常工作时有用。当前该选项对SGI或IRIX机器上默认是开启的。在以后的版本中可以会被改变。

在gvim中

vim从「插入模式」ESC退出后可以关闭输入法,只需要再vimrc配置文档中敲入以下代码:

if has("gui_running")set imactivatekey=C-spaceinoremap <ESC> <ESC>:set iminsert=0<CR>endif

说明:

set imactivatekey=C-space

这一行的作用是让gvim控制输入法,好让下面的参数起作用。inoremap :set iminsert=0

是在按下 ESC 的时候,自动关闭输入法,直接就可以修改文件了。

如果需要更多的参数,可以用 help iminsert 来查看vim的帮助文件。

原文链接:

还有一个链接说可以这样设置更好

if has("gui_running")set imactivatekey=C-spaceinoremap <ESC> <ESC>:set iminsert=2<CR>endif

只要把iminsert的值设置为2就行了。也就是inoremap <ESC> <ESC>:set iminsert=2

关于iminsert的值的含义,官方帮助文档(通过help iminsert查看)给出解释:

Specifies whether :lmap or an Input Method (IM) is to be used inInsert mode. Valid values:0:lmap is off and IM is off1:lmap is ON and IM is off2:lmap is off and IM is ONTo always reset the option to zero when leaving Insert mode with <Esc>this can be used: :inoremap <ESC> <ESC>:set iminsert=0<CR>This makes :lmap and IM turn off automatically when leaving Insert mode.

从插入模式退出,关闭输入法,可直接输入英文,这样可以使用命令,如果需要输入中文,比如编辑文件,文件名中包含中文,这时候可以按 ctrl+6 来打开输入法。然后 i 回到插入模式,输入法又自动开启,可以继续输入中文。

一个在mac中使用的方法(有视频)

链接

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。