創用 CC 授權條款
除非另有註明,本網站的著作Fygul Hether製作,以創用CC 姓名標示-非商業性-禁止改作 4.0 國際 授權條款釋出。
顯示具有 Vim 標籤的文章。 顯示所有文章
顯示具有 Vim 標籤的文章。 顯示所有文章

2020年7月12日 星期日

vim-anywhere

摘要

vim-anywhere方面的使用記錄,本文環境是Ubuntu MATE 18.04。

vim-anywhere簡介

vim-anywhere讓Vim用戶在桌面環境任何輸入文字的欄位中都可使用Vim。它事實上是段shell script,在文字欄位中,按下一組快捷鍵,以引發gVim,在gVim中輸入好文字並存檔關閉(:wq)後,文字儲存到一暫存檔中,它會將暫存檔中的文字內容複製到系統的剪貼簿中。使用者再以貼上的快捷鍵把剪貼簿中的文字送入該文字欄位中。官網上有個簡單的示範動畫圖可供參考。

vim-anywhere可用在Linux與macOS,是開放源碼軟體。

2020年6月20日 星期六

Ubuntu 20.04安裝Vim 8.2版

摘要

Ubuntu 20.04預帶的Vim是8.1版,目前已有8.2版,可用非官方的PPA來安裝8.2版。此法也可適用於Ubuntu稍早的版號,預計也可適用於Vim未來的新版,如8.3。

2020年5月30日 星期六

Windows上的文件編碼與gVim界面選單出現亂碼的問題

問題描述

在Windows使用gVim時發現開啟的中文文字檔出現亂碼,很容易知道因為是是utf-8編碼的文字檔,在預設使用cp950編碼的Windows上開啟,因編碼不同,自然是亂碼。直覺上這問題應該好解決,設置Vim使用utf-8即可:

:set encoding=utf-8
試了沒問題,因為我習慣用utf-8,所以在 _vimrc 加入 set encoding=utf-8

重啟Vim後我卻發現,這回輪到命令選單變成亂碼,即使再加入langmenu的設置後重開Vim也是:

set langmenu=zh_TW.UTF-8
此時 :set all 的顯示結果中也出現 langmenu=zh_TW.UTF-8 ,但選單是亂碼。

langmenu必須在menu載入之前做好設置,故要加在 _vimrc 中。但如果真要在執行Vim時切換選單語言,做法像是先移除選單,重新設置langmenu,重讀選單語言翻譯[1]:

:source $VIMRUNTIME/delmenu.vim
:set langmenu=zh_TW.UTF-8
:source $VIMRUNTIME/menu.vim
上述delmenu.vim用來移除選單;menu.vim用來翻譯選單語言,而語言檔在 $VIMRUNTIME/lang 中,其中有個README.TXT中有些說明。

我試著這樣做之後選單上的中文字則是可正常顯示,不清楚為何設在 _vimrc中會造成亂碼,懷疑是否bug?

另一個觀察到的現象則是編輯的檔案名稱若有中文,暫存的swap檔與最終存檔時,檔名也可能出現亂碼。

我開始懷疑encoding選項影響的層面似乎比我想像的多,而我須要的是希望在讀、寫文件時做正確編碼,之後查了一下,發現果然如此。編碼方面的問題倒不難解決,反而是命令選單的亂碼現象困擾了好一陣子。

在無法解決命令選單亂碼的期間,只好先暫時做個補救的措施,後來花不少時間排查,才發現命令選單亂碼的成因,終於得以解決。

綜合以上,簡單說是二個問題:一、未正確設置Vim的文件編碼,導致中文文件內容,或中文檔名出現亂碼;二、gVim命令選單,即GUI界面的中文呈現亂碼。

本文談論以下幾點,並在最後附上參考連結:
  1. 針對上述第二問題,我採用的暫時措施。
  2. 上述第二問題的成因。
  3. 設置編碼。解決上述第一個問題。
  4. Vim與編碼有關的幾個設置。
  5. 與編碼相關的幾個問題。
  6. Vim與語言顯示有關的幾個設置。
  7. 其他
4,5,6也可以算是對1,2,3的一些補充說明。

2018年12月23日 星期日

既古老又現代的編輯器Vim

VI是個具有悠久歷史的文字編輯器,有不少後繼的版本,其中較廣為人知的當屬Vim,以及有圖形界面的gVim。雖然在當代的電腦圖形環境中不乏好用又精美的文字編輯器,但在某些較特別的情形下,這些優良的軟體卻派不上用場,譬如在無圖形環境的服務器或是透過終端機連線的時候。在這類情況下若想修改某個文字檔,VI或是Vim無疑是最廣泛使用的編輯器。

由於Vim是當前最普遍可見的VI後續改良版本,為簡化文字敘述,在本文以下提及Vim時,在某些情況下這詞也同時代表了VI與其他後繼版本,如gVim。

Vim經過數十年的發展,不僅兼顧了早期終端機連線時代的使用習慣,也加入了現代使用的考量,有相當多樣的擴充性,在近年更是篷勃發展,特別是Vim 8版開始。這一方面要得力於它本身是開源軟體,另一方面則是因為不少專業程序員使用Vim (Real programmers use Vim.)。一般使用者大概不會想去使用Vim,也沒這個必要,通常是程序員或是相關技術人員才用的。

據親身觀察,不少剛接觸Vim的使用者,在沒有獲得合適指導的情形下,往往心生排斥,認為Vim很難學。事實上若能領悟它的設計邏輯,了解它為何這麼設計,從這方面去思考,學習上並沒有那麼難,只要學得入門的一些基本操作,很快就可體會到它的強大。VI發展於1970年代,那時期的電腦鍵盤沒像現代有這麼多按鍵,有些符號的位置也稍有不同(圖1),滑鼠既不普遍長相也與現代大不相同,所以在當時設計出來的VI,自然是不動用滑鼠而在只使用一些基本按鍵的條件下就可完成相當複雜的工作,而且無須讓手遠離鍵盤的Home row(圖2)。(這兩張圖片的來源:Wikimedia Commons

圖1

圖2

當然Vim有許多功能並不是可一夕可學完的,即使是使用了幾十年也開班授課的專業人員,也不見得會全部功能。事實上只要學會常用或是夠用的部分就已足夠,其他用不著的學了也用不著又何必學?等到有必要時再去查用法即可。

Vim可在目前所有主流作業平台上使用,包括手機與平板。還有相當豐富的文件與使用者社群,以下會列出部分。相關實體書籍則可在天瓏書局找到一些。