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

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的一些補充說明。

2020年5月23日 星期六

Wget使用簡介

前言

有幾個命令行HTTP/FTP client之類的開放源碼軟體專案被廣泛採用,像curl, Wget, HTTrack, Aria2……。這些不同的軟體各有不同的特色,譬如curl支援最多種網路傳輸協定[1];HTTrack則可複製網站(俗稱砍站,但這詞可能讓人誤解),以方便離線瀏覽;Wget在某些方面可身兼curl與HTTrack之長;而Aria2支援了Bittorrent。

本文想談的是Wget,它可應付一般的HTTP使用情境,它也預設安裝在Ubuntu 20.04中,上述其他的,則要額外安裝。有圖形介面可用,但這裡只談命令行的使用。文中幾個範例中的URL是虛構的,僅純粹方便展示用。

Wget簡介

Wget的發展可回溯到1995年,是GNU Project的一部分,其名稱源自於World Wide Web與HTTP_GET的結合。支援HTTP, HTTPS, FTP, FTPS協定來下載檔案。非互動式命令行工具,可方便從腳本、排程,以及無圖形界面的終端機來執行它。一些功能像[2]:
  • 續傳之前失敗的下載
  • 檔名可用萬用字元
  • 遞迴目錄
  • 所下載網頁中的絕對連結可轉換成相對的
  • 支援多種作業平台

2020年4月26日 星期日

Ubuntu 20.04無法選用小小輸入法的問題與解決

問題描述

Ubuntu 20.04前幾日剛釋出,可能有人會遇到無法順利安裝小小輸入法的狀況,所以特別寫這篇。其實這大約是從18.10版就有的問題,忘了之前是在何處看到的,說是換了新版im-config後才有的狀況,有人把im-config換舊版就可用了,不過還有另外的方法可用,在小小輸入法尚未為此做出調整之前,暫時可用以下的方法。

im-config是Debian系Linux用的東西,所以受影響的,並不限於Ubuntu,而是Debian系的;其他非Debian系的Linux無此問題。

還是先描述一下狀況:

目前已知在Ubuntu 20.04,安裝小小輸入法for Linux 2.5版後,在執行 ./yong-tools.sh --select 時會出現以下錯誤訊息:

/usr/bin/im-config: 3: /usr/share/im-config/data/10_yong.conf: Syntax error: "(" unexpected

Ubuntu 18.04.4的im-config是0.34,Ubuntu 20.04版的則是0.44,我不清楚im-config實際上從哪個版號開始會出問題,總之,採用im-config 0.34之後版本的Debian系Linux在安裝小小輸入法 for Linux 2.5版時,極可能會出現上述狀況。

為節省篇幅,安裝/卸載小小輸入法的方法可見參考[1],這裡就不重複寫了。

2020年4月12日 星期日

Unix上製作自解封存檔:makeself

摘要

前面〈淺談Ubuntu上常見的壓縮與封存命令〉提過7zip可以製作自解封存檔,然而這類自解檔較常見的形式反而可能是以 .run 或 .sh 為副檔名(或稱後綴)的自解檔。之前第一次使用到這類自解檔感覺有點新鮮,有異於7zip做出來的東西,後來發現是由makeself做出來的。

makeself可用在製作自解安裝檔的用途上,本文做點簡單介紹。

2020年3月29日 星期日

淺談Ubuntu上常見的壓縮與封存命令-續

封存程式

在Unix類的系統上做資料備份,建議還是用tar,它可較完整地保存檔案的各種屬性,不建議用zip或7z。如果只是有檔案想打包給別人用,但擔心對方不會用tar,那麼理所當然就用zip或7z。

由於7z在許多方面的表現都比zip出色,也支援zip的格式,用法也不難,而且也相當普遍,所以在考慮使用zip時,除非有其他特殊因素,否則應該先認真考慮一下7z會是更好的選擇。也許讀者會想略過zip一節內容而直接看7z的,這兩者的用法並不像上述般有相似性。

淺談Ubuntu上常見的壓縮與封存命令

摘要

前面談過tar,本文談談以下幾個Ubuntu上壓縮命令與archive封存(或譯為歸檔)命令:
  • compress
  • gzip
  • bzip2
  • xz
  • zip
  • 7z
只談命令行(CLI)的使用,若要圖形使用者介面GUI,桌面系統內建的壓縮管理員或PeaZip都很好用。使用環境同樣是Ubuntu MATE 18.04。

在進入正題之前,先談一下data compressor(壓縮程式)與file archiver(封存程式),上列的前4個屬前者,最後2個與tar則屬後者。

壓縮程式與封存程式

一般習慣上會把像WinZip, WinRar, 7-zip這類稱為壓縮程式,但在這裡把這類可將多個檔案或目錄,塞進一個容器檔案中,同時在必時也可使用壓縮演算法把要塞進去的檔案做壓縮處理的程式,稱為封存程式;而單純只對單一檔案做資料壓縮處理的程式,稱為壓縮程式。

Unix的設計理念,把個別程式的功能單純化設計好,聯合使用多支程式時,就可達成強大、複雜的功能。所以tar只提供封存功能,但以指定壓縮選項的方式來聯合使用其他壓縮程式,就可達成封存且壓縮的目的;想加密,再使用加密程式如gpg即可。

以下依這兩類分別做簡介,除了compress,在Ubuntu 18.04中皆已內建,無需額外安裝。每類所列的程式是依照推出時間的順序而定,也就是排在前的較早。

2020年2月26日 星期三

tar命令的進階使用

摘要

接續〈tar命令的基礎使用〉,本文談點Unix/Unix-like的tar命令的幾個進階使用與範例:
  • 檔案選擇與排除
  • 覆寫控制
  • 加密
  • 增量備份
  • 多重卷冊
  • 複製目錄並保留屬性
本文使用環境是Ubuntu MATE 18.04。