Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >这个方法,让 Vim 输入中文成为一种享受

这个方法,让 Vim 输入中文成为一种享受

作者头像
somenzz
发布于 2021-09-14 08:06:12
发布于 2021-09-14 08:06:12
5.3K00
代码可运行
举报
文章被收录于专栏:Python七号Python七号
运行总次数:0
代码可运行

我相信,你在 Vim 中输入中文时,一定有过很痛苦的经历:在切换为命令模式时,需要切换为英文输入法,然后在插入模式时,再切换为中文,这两次切换,让原本高效的 Vim 显得笨拙无比,这个麻烦,劝退了很多 Vim 初学者。

现在,这个麻烦不存在了,因为这里有一个方法,可以让 Vim 退出插入模式的时候自动切换为英文输入法,再回到插入模式时自动恢复为原来的输入法。WindowsMacOS 都可以实现。现在,只要是涉及文本编辑的,我都用 Vim,输入中文再也不麻烦了,甚至是一种享受。

以下是具体的方法:

Windows

如果你用的是 Windows,我假设你用的是 gVim,因为 Windows 的 cmd 实在太糟糕,用 Vim 不方便也不美观。

Vim 本身有这方面的设置,你可以查看帮助文档,Vim 命令模式下输入 :help iminsert 查看详情。

具体解决方法:

在命令模式中输入 :edit $VIM/_vimrc,在代码最后添加以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if has('multi_byte_ime')  
 "未开启 IME 时光标背景色  
 hi Cursor guifg=bg guibg=Orange gui=NONE  
 "开启IME 时光标背景色  
 hi CursorIM guifg=NONE guibg=Skyblue gui=NONE  
 "关闭Vim的自动切换 IME 输入法(插入模式和检索模式)  
 set iminsert=0 imsearch=0  
 "插入模式输入法状态未被记录时,默认关闭IME  
 "inoremap <silent> <ESC> <ESC>:set iminsert=0<CR>  
endif

注意,vim 配置语法中,双引号后面的内容为注释。上述配置在本人的 Windows 上电脑亲测有效。

如果无效,你还可以试下网上的方法[1]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if has('gui_running')
  set imactivatekey=C-space  
  inoremap <ESC> <ESC>:set iminsert=2<CR>
endif

MacOS

MacOS 自带 Vim,与 gVim 不同,Vim 则需要借助于 smartim 插件来实现,smartim 依赖 im-select 程序,不过在安装 smartim 时会自动安装 im-select。

smartim 插件依靠 Vim 的 autocmd 机制,就是进入命令模式时先把正在使用的输入法保存起来,然后切换到默认的输入法,进入插入模式时再切换为之前的输入法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
augroup smartim
  autocmd!
  autocmd VimLeavePre * call Smartim_SelectDefault()
  autocmd InsertLeave * call Smartim_SelectDefault()
  autocmd InsertEnter * call Smartim_SelectSaved()
augroup end

以下是具体的安装步骤:

1、先安装 Vim 的插件管理器 Vundle

你可以不安装 Vundle,然后手动安装 smartim,不过不推荐你这样做,因为将文件复制到指定的目录是件麻烦事,而且后面你可能需要更多好用的插件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

2、配置 Vundle,添加 smartim 插件。

打开 Vim,命令模式下输入 :edit $MYVIMRC 编辑 ~/.vimrc 文件,在文件的最开始处添加以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
Plugin 'ybian/smartim'
" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList       - lists configured plugins
" :PluginInstall    - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean      - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line

上述代码中已经加入了 smartim 插件:Plugin 'ybian/smartim'

保存退出 Vim,然后重新打开,配置文件就生效了,这时在命令模式下输入:PluginInstall 等待 smartim 插件完成安装。

安装完成之后,你就可以自由愉快的在插入模式下输入中文,然后一个 ESC 就可以自动切换为英文输入法了。

如果没有生效,请往下看。

修改 smartim 命令模式默认的输入法

我当时这一步做完还不行,因为我的 Mac 英文输入法是 com.apple.keylayout.ABC,手动切换到英文输入法,然后使用 im-select 查看:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
❯ pwd
/Users/aaron/.vim/bundle/smartim/plugin
❯ ./im-select
com.apple.keylayout.ABC

而 smartim 默认的命令模式输入法是 com.apple.keylayout.US,因此需要在 vimrc 中指定 smartim 的默认输入法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let g:smartim_default = 'com.apple.keylayout.ABC'

再试就可以了。

修改 smartim 的延迟

当你使用的过程中会发现,按下 ESC 之后,短暂的时间内输入法还没有切换为英文,这种卡顿让输入比较快的键盘手无法忍受。

解决方法是在 smartim.vim 文件中添加 set timeoutlen=0

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
❯ pwd
/Users/aaron/.vim/bundle/smartim/plugin
❯ ls
im-select   smartim.vim

在 smartim.vim 文件的最后,添加 set timeoutlen=0

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
augroup smartim
  autocmd!
  set timeoutlen=0
  autocmd VimLeavePre * call Smartim_SelectDefault()
  autocmd InsertLeave * call Smartim_SelectDefault()
  autocmd InsertEnter * call Smartim_SelectSaved()
augroup end

这样问题解决。不过这会产生一个小问题,就是自定义的快捷键会失效,比如你定义了 jj 表示 ESC

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
imap jj <Esc>

因为没有了延迟,当你输入第二个 j 的时候,Vim 不会把它当做组合。不过不用 jj 也罢。

如果很纠结这个,可以在函数  Smartim_SelectDefault() 的第一行添加 set timeoutlen=0在函数 Smartim_SelectSaved() 的第一行添加 set timeoutlen=500,不过即使如此,仍会有 500ms 的延迟。

最后的话

本文分享了 Vim 中文输入的痛点解决办法,亲测可用,Linux 可以参考 MacOS 的做法。这样你就可以在 Vim 中自由自在的输入中文了,是不是很爽?

从此,用 Vim 编程和写文档变成一种享受。

如果觉得有帮助,不妨点赞和关注,每天分享一个小技术。

有问题可以留言讨论

参考资料

[1]

网上的方法: https://www.zhihu.com/question/341748857/answer/796039634

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python七号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Mac 下升级 vim 并自己配置 vim 的过程
1.升级 vim   我自己 MacBook Pro 的系统还是 10.11 ,其自带的 vim 版本为 7.3 ,我们将其升至最新版: 使用 homebrew : brew install vim --with-lua --with-override-system-vim 这将下载最新的 vim 版本并替换系统自带的 vim 。 安装完成后重启终端,更新环境变量,输入 vim 后 vim 的版本便为最新版本了。 如果以后想更新 vim 版本,直接输入 brew upgrade vim 便能快速升级了。 想
希希里之海
2018/05/16
2.6K0
VIM个性化配置(一)
只需在Home目录创建一个 ~/.vimrc 文件即可以配置 vim 了,如需安装插件,在 ~/.vim 目录下创建一个bundle文件夹,插件装在里面。(需安装 Vundle 插件管理器),将以下内容拷入~/.vimrc 文件中即可。
宋天伦
2020/07/27
1.4K0
Golang 语言--linux 下 go语言 vim设置
在linux下安装 vundle.vim,请参照https://github.com/VundleVim/Vundle.vim获取和配置 打开.vimrc,如果没有可以创建.vimrc,复制如下内容到.vimrc " An example for a vimrc file. "" Maintainer: Bram Moolenaar <Bram@vim.org> " Last change: 2014 Nov 05" " To use it, copy it to" for Unix and
李海彬
2018/03/21
2.6K0
VSCode 配置 NeoVIM 插件,实现自动切换输入法
https://github.com/neovim/neovim/blob/master/INSTALL.md
莫他喵
2024/05/31
1.3K0
超级强大的vim配置(vimplus)
最近在重新配置Vim,也在GitHub上找了三个star和fork数目很高的方案,在这里分享给大家: https://github.com/amix/vimrc - star 3,482 ; Fork
_gongluck
2018/03/13
30.1K2
超级强大的vim配置(vimplus)
「个人vim插件+配置」
复制代码时执行`set paste`来取消自动缩进,再`set nopaste`恢复。
饶文津
2020/06/02
1.1K0
Linux : Vim 使用与配置 (附 GitHub 自动化配置脚本)
由于经常使用 vim 编辑配置文件,有时候也会进行使用vim 编写一些脚本和c/c++ 程序,所以配置一个常用的 vim 是很是必要的。这篇博文主要是记录vim使用和配置相关的一些知识点。
西湖醋鱼
2020/12/30
4.9K0
Linux : Vim 使用与配置 (附 GitHub 自动化配置脚本)
python学习-vim插件安装
Vundle 是 Vim bundle 的简称,使用git来管理vim插件,有了它,安装其它插件就方便很多。
py3study
2020/01/06
1.4K0
python学习-vim插件安装
Vim的配置说明
在网上参考了某大牛个vim配置,然后更改添加了一部分,形成了自己的配置,让Vim变的更强大。
xindoo
2021/01/21
1.1K0
.vimrc-备份
吴易娃
2024/01/12
1770
VIM配置文件vimrc
Ubuntu 默认情况下只安装tiny-vim , 只要运行 sudo apt-get install vim 安装完整的vim就好了
阳光岛主
2019/02/19
2.9K0
Vim编辑器基础入门
Vim(Visual Interface|可视化接口),在linux中常常使用的工具,是进行Linux嵌入式编程的必备工具之一; vim最大的贡献就是它的按键系统这也是为什么chrome、idea、atom等编辑器都会提供一个vim mode;
全栈工程师修炼指南
2020/10/23
1.9K0
Vim编辑器基础入门
这可能是最全最实用的Vim操作集合
Vim 作为已经 29 岁(1991.11.2)的老牌文本编辑器,比“名名”年龄还大,在2019年 StackOverflow 的统计数据中仍然排在了总榜第五名,占据了25.4%的“市场”。Vim 不同于其他编辑器或者 IDE,它被称作“编辑器之神”,它小巧、启动极快、可运行在任何主流系统上、各种快捷操作、所有 Unix 或类 Unix 系统都预装了 Vi 或 Vim,而且很多编辑器、IDE 都提供 Vim 插件,学会了 Vim 可以一套快捷键走遍天下,而且可以和其他编辑器实现优势互补,编辑用 Vim,项目结构、文件结构、长得好看等用其他编辑器。Vim 学习一开始较难,一旦上手,就如神兵利器解封,助你在文本编辑披荆斩棘。
别打名名
2020/07/29
2.3K0
这可能是最全最实用的Vim操作集合
golang实战-1:搭建vim-go开发环境
LSB Version: :core-4.1-amd64:core-4.1-noarch
千里行走
2019/11/06
3.6K0
golang实战-1:搭建vim-go开发环境
ubuntu16.04打造vim和pyt
ubuntu16.04 安装支持python3的IDE 1. 安装vim: # apt-get install  -y vim-gnome 2. 安装ctags,ctags用于支持taglist # apt-get install ctags 3. 安装taglist # apt-get install vim-scripts vim-addon-manager # vim-addons install taglist 4. 安装pydiction 实现代码补全: #wget  https://www.vi
py3study
2020/01/03
7100
vim配置
默认检查的是CPP,要检查C需要修改一下。 python项目要加进Pythonpath,否则包可能找不到定义:
超级大猪
2019/11/22
7750
vim 基础配置
最近在使用 python 搞服务, 简单配置了一个 vim, 配置了自动补全以及背景色 。(ps:搜狗输入法快捷键占用真是太坑爹,改用谷歌输入法,世界安静了)
用户2434869
2018/09/12
8260
vim 插件管理 Vundle
2) Ag 依赖 ag mac: https://github.com/ggreer/the_silver_searcher windows: https://github.com/k-takata/the_silver_searcher-win32
lukachen
2023/10/22
2390
vim 插件管理 Vundle
Vim 文本编辑工具详解
作为一名测试工程师,掌握高效的文本编辑工具是必不可少的。Vim 作为一个强大的文本编辑器,因其快捷键操作和强大的功能深受开发者的喜爱。本文将详细介绍 Vim 的基本使用方法和一些高级技巧。
霍格沃兹测试开发Muller老师
2024/07/22
2190
Vim 文本编辑工具详解
vim开发环境配置
作为编辑器之神的vim,初安装时,就像十几岁的孩子,潜力无限但能力有限。所以当我们要充分开发它的潜能时,那么就不得不对vim进行扩展,也就是安装插件。(当然了,如果你不想定制自己所需要的插件,只是想一键安装,然后满足你几乎所有对vim的需求,那么你可以尝试spf13-vim github地址:https://github.com/spf13/spf13-vim) 下面介绍部分插件的安装,以满足基本的代码阅读或者项目开发的需求。
编程珠玑
2019/09/03
2K0
vim开发环境配置
相关推荐
Mac 下升级 vim 并自己配置 vim 的过程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验