成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

這個方法,讓 Vim 輸入中文成為一種享受

系統
我相信,你在 Vim 中輸入中文時,一定有過很痛苦的經歷:在切換為命令模式時,需要切換為英文輸入法,然后在插入模式時,再切換為中文,這兩次切換,讓原本高效的 Vim 顯得笨拙無比,這個麻煩,勸退了很多 Vim 初學者。

[[423098]]

我相信,你在 Vim 中輸入中文時,一定有過很痛苦的經歷:在切換為命令模式時,需要切換為英文輸入法,然后在插入模式時,再切換為中文,這兩次切換,讓原本高效的 Vim 顯得笨拙無比,這個麻煩,勸退了很多 Vim 初學者。

現在,這個麻煩不存在了,因為這里有一個方法,可以讓 Vim 退出插入模式的時候自動切換為英文輸入法,再回到插入模式時自動恢復為原來的輸入法。Windows 或 MacOS 都可以實現。現在,只要是涉及文本編輯的,我都用 Vim,輸入中文再也不麻煩了,甚至是一種享受。

以下是具體的方法:

Windows

如果你用的是 Windows,我假設你用的是 gVim,因為 Windows 的 cmd 實在太糟糕,用 Vim 不方便也不美觀。

Vim 本身有這方面的設置,你可以查看幫助文檔,Vim 命令模式下輸入 :help iminsert 查看詳情。

具體解決方法:

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

  1. if has('multi_byte_ime')   
  2.  "未開啟 IME 時光標背景色   
  3.  hi Cursor guifg=bg guibg=Orange gui=NONE   
  4.  "開啟IME 時光標背景色   
  5.  hi CursorIM guifg=NONE guibg=Skyblue gui=NONE   
  6.  "關閉Vim的自動切換 IME 輸入法(插入模式和檢索模式)   
  7.  set iminsert=0 imsearch=0   
  8.  "插入模式輸入法狀態未被記錄時,默認關閉IME   
  9.  "inoremap <silent> <ESC> <ESC>:set iminsert=0<CR>   
  10. endif 

注意,vim 配置語法中,雙引號后面的內容為注釋。上述配置在本人的 Windows 上電腦親測有效。

如果無效,你還可以試下網上的方法[1]:

  1. if has('gui_running'
  2.   set imactivatekey=C-space   
  3.   inoremap <ESC> <ESC>:set iminsert=2<CR> 
  4. endif 

MacOS

MacOS 自帶 Vim,與 gVim 不同,Vim 則需要借助于 smartim 插件來實現,smartim 依賴 im-select 程序,不過在安裝 smartim 時會自動安裝 im-select。

smartim 插件依靠 Vim 的 autocmd 機制,就是進入命令模式時先把正在使用的輸入法保存起來,然后切換到默認的輸入法,進入插入模式時再切換為之前的輸入法:

  1. augroup smartim 
  2.   autocmd! 
  3.   autocmd VimLeavePre * call Smartim_SelectDefault() 
  4.   autocmd InsertLeave * call Smartim_SelectDefault() 
  5.   autocmd InsertEnter * call Smartim_SelectSaved() 
  6. augroup end 

以下是具體的安裝步驟:

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

你可以不安裝 Vundle,然后手動安裝 smartim,不過不推薦你這樣做,因為將文件復制到指定的目錄是件麻煩事,而且后面你可能需要更多好用的插件。

  1. git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 

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

打開 Vim,命令模式下輸入 :edit $MYVIMRC 編輯 ~/.vimrc 文件,在文件的最開始處添加以下代碼:

  1. set nocompatible              " be iMproved, required 
  2. filetype off                  " required 
  3.  
  4. set the runtime path to include Vundle and initialize 
  5. set rtp+=~/.vim/bundle/Vundle.vim 
  6. call vundle#begin() 
  7. " alternatively, pass a path where Vundle should install plugins 
  8. "call vundle#begin('~/some/path/here'
  9.  
  10. " let Vundle manage Vundle, required 
  11. Plugin 'VundleVim/Vundle.vim' 
  12. Plugin 'ybian/smartim' 
  13. All of your Plugins must be added before the following line 
  14. call vundle#end()            " required 
  15. filetype plugin indent on    " required 
  16. To ignore plugin indent changes, instead use: 
  17. "filetype plugin on 
  18. " Brief help 
  19. " :PluginList       - lists configured plugins 
  20. " :PluginInstall    - installs plugins; append `!` to update or just :PluginUpdate 
  21. " :PluginSearch foo - searches for foo; append `!` to refresh local cache 
  22. " :PluginClean      - confirms removal of unused plugins; append `!` to auto-approve removal 
  23. " see :h vundle for more details or wiki for FAQ 
  24. " Put your non-Plugin stuff after this line 

上述代碼中已經加入了 smartim 插件:Plugin 'ybian/smartim'。

保存退出 Vim,然后重新打開,配置文件就生效了,這時在命令模式下輸入:PluginInstall 等待 smartim 插件完成安裝。

安裝完成之后,你就可以自由愉快的在插入模式下輸入中文,然后一個 ESC 就可以自動切換為英文輸入法了。

如果沒有生效,請往下看。

修改 smartim 命令模式默認的輸入法

我當時這一步做完還不行,因為我的 Mac 英文輸入法是 com.apple.keylayout.ABC,手動切換到英文輸入法,然后使用 im-select 查看:

  1. ❯ pwd 
  2. /Users/aaron/.vim/bundle/smartim/plugin 
  3. ❯ ./im-select 
  4. com.apple.keylayout.ABC 

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

  1. let g:smartim_default = 'com.apple.keylayout.ABC' 

再試就可以了。

修改 smartim 的延遲

當你使用的過程中會發現,按下 ESC 之后,短暫的時間內輸入法還沒有切換為英文,這種卡頓讓輸入比較快的鍵盤手無法忍受。

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

  1. ❯ pwd 
  2. /Users/aaron/.vim/bundle/smartim/plugin 
  3. ❯ ls 
  4. im-select   smartim.vim 

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

  1. augroup smartim 
  2.   autocmd! 
  3.   set timeoutlen=0 
  4.   autocmd VimLeavePre * call Smartim_SelectDefault() 
  5.   autocmd InsertLeave * call Smartim_SelectDefault() 
  6.   autocmd InsertEnter * call Smartim_SelectSaved() 
  7. augroup end 

這樣問題解決。不過這會產生一個小問題,就是自定義的快捷鍵會失效,比如你定義了 jj 表示 ESC

 

  1. imap jj <Esc> 

因為沒有了延遲,當你輸入第二個 j 的時候,Vim 不會把它當做組合。不過不用 jj 也罷。

如果很糾結這個,可以在函數 Smartim_SelectDefault() 的第一行添加 set timeoutlen=0在函數 Smartim_SelectSaved() 的第一行添加 set timeoutlen=500,不過即使如此,仍會有 500ms 的延遲。

最后的話

本文分享了 Vim 中文輸入的痛點解決辦法,親測可用,Linux 可以參考 MacOS 的做法。這樣你就可以在 Vim 中自由自在的輸入中文了,是不是很爽?

 

從此,用 Vim 編程和寫文檔變成一種享受。

 

責任編輯:武曉燕 來源: Python七號
相關推薦

2015-04-15 09:44:58

CodeReview程序員

2014-12-16 13:49:59

華為MCU視頻會議系統

2019-01-21 17:32:25

華為

2011-12-28 21:18:18

App

2020-10-22 10:09:04

Facebook AIVR

2020-05-29 10:26:43

遠程工作新冠病毒虛擬化

2011-07-04 17:53:48

快速測試

2015-09-11 16:11:56

CIO時代網

2019-03-27 15:00:59

多云公共云混合云

2021-06-04 08:58:41

Linux運維Linux系統

2023-02-26 23:10:09

存儲Linux架構

2023-07-25 15:10:36

Linux存儲

2018-04-16 09:43:39

2016-03-07 10:51:02

華為華為合作伙伴伙伴大會

2017-12-05 15:30:12

2022-03-04 22:29:56

區塊鏈技術經濟

2013-06-28 11:25:46

2018-12-14 14:30:12

安全檢測布式系測試

2010-03-26 13:34:47

CentOS安裝

2021-06-11 00:11:23

GPS數據協議
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黑人巨大精品欧美一区二区免费 | 欧美国产亚洲一区二区 | 久久久久久久久综合 | 国产高清视频一区 | 亚洲毛片| 日韩中文不卡 | 日韩综合网 | 99久久久99久久国产片鸭王 | 国产精品视频免费看 | 国产一区在线免费观看视频 | 一区二区三区av | 欧美一区二区三区的 | 免费国产一区二区 | 免费视频一区二区 | 中文字幕在线一区二区三区 | 久久久亚洲一区 | 久久久久国产一区二区三区四区 | 九色.com| 99热这里都是精品 | 视频1区2区 | 国产精品视频www | 亚洲欧洲日韩精品 中文字幕 | 一区二区三区在线播放 | 精品国产18久久久久久二百 | 人人爽人人爽人人片av | 日本精品裸体写真集在线观看 | 华丽的挑战在线观看 | 精品中文字幕一区二区 | 国产精品成人国产乱一区 | 网站黄色在线 | 中国大陆高清aⅴ毛片 | 色婷婷精品 | av一区二区在线观看 | 欧美激情综合色综合啪啪五月 | 一级特黄色毛片 | 天堂av中文在线 | 日韩在线免费视频 | 亚洲一区二区在线 | 亚洲一区二区三区四区五区午夜 | 国产成人久久精品一区二区三区 | 日本亚洲欧美 |