關於本報

自由軟體鑄造場電子報
報主:中央研究院資創中心
創刊日期:2004-06-03
發報頻率:雙週刊
訂閱人數:3,349
官網:

近期電子報


訂閱便利貼


將貼紙語法置入您的網站或部落格當中, 訪客可以輸入mail取得認證信,並按下確認連結後, 快速訂閱您的報紙。
預覽圖
訂閱自由軟體鑄造場電子報報
自由軟體鑄造場電子報
-----------------------------------------------------------------------------------------------------
Plurk FaceBook Twitter 收進你的MyShare個人書籤 MyShare
  顯示內嵌語法

自由軟體鑄造場電子報
發報時間: 2010-01-26 16:00:00 / 報主:OSSF
[公益聯播]化妝品真相大公開社群
本期目錄
[技術專欄] 十個必用的 Vim Plugin
[源碼秘技] 彈性過人的新 Linux 發行版本 — Toorox
[技術專欄] 十個必用的 Vim Plugin
Cornelius/文 2010/01/23

The NERD Tree

    操作 Vim 時,通常都在 Terminal 底下作用,無法像一般的 GUI
    應用程式可以以樹狀目錄來瀏覽檔案。 The NERD Tree
    是一將檔案目錄以文字模式方式繪製出來的 Plugin。讓使用者可以不必跳出 Vim
    編輯器 而可進行檔案目錄的瀏覽、開啟等動作。新版的 NERD Tree
    還另外支援了書籤 (Bookmark) 功能,使用者可將路徑節點存成書籤,以便下次載入時
    直接回到該路徑上。

※ 安裝

    將下載回來的 zip 檔解壓縮之後,使用 rsync 將目錄同步複製到 ~/.vim 底下。
    複製完,NERD_tree.vim 檔案應該要在 ~/.vim/plugin/ 裡頭。

※ 使用

    :NERDTree [path|bookmark]

        可直接以 NERD Tree 開啟一路徑,或一書籤。

    :NERDTreeToggle [path|bookmark]
       
        同上,但若 NERD Tree 已經被開啟,則會自動關閉開 NERDTree 。

        通常可自己在 .vimrc 內 map 到 <leader>e 的快捷鍵:

            nmap <leader>e  :NERDTreeToggle<CR>

        如此,按下 \e 即可將 NERD Tree 開啟或關閉。

    :NERDTreeMirror

        此指令用於分享一個已經存在的 NERD Tree Buffer,
        假設於一分頁中已經開啟了 NERD Tree ,那麼可在另外一個分頁中
        將前一分頁的 NERD Tree Buffer 同步開啟於目前分頁。

    :NERDTreeFind
       
        開啟 NERD Tree 並且找尋目前編輯的檔案。
        若找到目前檔案則會自動將游標位置放至於該檔案節點上。

※ NERDTree 瀏覽操作

    如同操作一般的 Vim 文字檔案一樣,所有的 motion 指令都可使用。

    於資料夾節點上:

        o    - 展開資料夾節點
        C-j  - 跳至下一節點
        C-k  - 跳至上一節點

    於檔案節點:

        o     - 開啟檔案
        <Tab> - 開於水平分割視窗
        t     - 開於分頁
        T     - 開於分頁 (背景)

    其他詳細資訊可參考 :help NERDTree.txt

Taglist

    Taglist plugin 可使用 ctags 來產生程式碼的變數、函數、類別、標頭檔等等資訊的索引。
    並且可以左邊開啟分割視窗,將這些資訊分類別顯示出來,也可在 Taglist Buffer 內直接
    跳躍至該項目定義的位置。

※ 安裝

    同 NERDTree 安裝方式,安裝完,taglist.vim 應該要在 ~/.vim/plugin/ 內。

    同時你需要啟用 filetype 功能,請在 ~/.vimrc 內加上:

        filetype on

    來啟用 filetype 的機制。

    另外系統需要安裝 ctags :

    於 Debian, Ubuntu 平台,可使用 apt-get 安裝 ctags 套件:

        $ sudo apt-get install ctags

    於 Mac 底下可使用 MacPorts 安裝 ctags 套件:

        $ sudo port install ctags

※ 使用

    :TlistToggle

        對目前檔案使用 ctags 產生標籤檔 (tag file),並且開啟/關閉 TagList 視窗。

    :TlistAddFiles {file(s)} [file(s) ...]

        加入其他檔案的索引到目前的 TagList 視窗。

    :TlistAddFilesRecursive {directory} [ {pattern} ]

        同上,不過可對一目錄底下的所有檔案做索引。

    :TlistSessionSave {filename}

        可將目前 TagList 的資訊存到一特定檔案內,以便於下次開啟 Vim 時載入回來。

    :TlistSessionLoad {filename}

        將 Session 檔案載入回來。

    :TlistUpdate

        更新 Tag 資訊

    詳細資訊請參考 :help taglist.txt

SnipMate

    為模仿 TextMate 一自動補完程式碼的功能而實做的 plugin。在 SnipMate 之前為
    SnippetsEmu ,但有 Place Holder 以及和 Autocomplpop 互相衝突的問題,SnipMate 則
    改進了這項問題,並且同名稱的 Place Holder 可以同步內容,也可反向跳躍至上一個 Place
    Holder。

※ 安裝

    同上 plugin 安裝方法,將對應的 Runtime 路徑裡頭的檔案複製到 ~/.vim/ 內。

    另外要注意的是,需要在 ~/.vimrc 內啟用 filetype plugin:

        filetype on
        filetype plugin on

※ 使用

    Snipmate 為不同類型的檔案提供了多種程式碼樣板,在編輯程式時,可以由特定的關鍵字來延展
    該程式碼樣板。

    舉例來說,編輯一 C 程式:

        $ vim test.c

    進入 insert mode ,輸入 "for" ,接著按下 <Tab> 鍵,此時 "for" 會被延展成完整的 for 迴圈
    片段,游標會跳至第一個 place holder ,輸入文字後,可按下 <Tab> 跳至下一個 place holder。

    Snippet 的樣板可在 ~/.vim/snippets 內找到,該樣板檔案名稱是以檔案類型作為區別,例如:
    c.snippets , java.snippets , javascript.snippets

    你也可以延伸自訂自己的 Snippet 樣板,舉例來說,為 C 程式碼撰寫樣板,可寫:

        c-ext.snippets
        c-cairo.snippets
        c-x11.snippets

    那麼在編輯 C 程式碼時,這些 Snippet 都會被自動載入。

FuzzyFinder

    FuzzyFinder plugin 提供了一個快速搜尋檔案、Buffer、書籤、指令、標籤的一個介面。
    搜尋時,可以即時預覽搜尋結果,並且支援 wildcard 的模糊搜尋

※ 安裝

    同上 plugin 安裝方法,將對應的 Runtime 路徑裡頭的檔案複製到 ~/.vim/ 內。

※ 使用

    FuzzyFinder 提供下列命令:

        FufBuffer      -  Buffer mode (fuf-buffer-mode)
        FufFile        -  File mode (fuf-file-mode)
        FufDir         -  Directory mode (fuf-dir-mode)
        FufMruFile     -  MRU-File mode (fuf-mrufile-mode)
        FufMruCmd      -  MRU-Command mode (fuf-mrucmd-mode)
        FufBookmark    -  Bookmark mode (fuf-bookmark-mode)
        FufTag         -  Tag mode (fuf-tag-mode)
        FufTaggedFile  -  Tagged-File mode (fuf-taggedfile-mode)
        FufJumpList    -  Jump-List mode (fuf-jumplist-mode)
        FufChangeList  -  Change-List mode (fuf-changelist-mode)
        FufQuickfix    -  Quickfix mode (fuf-quickfix-mode)
        FufLine        -  Line mode (fuf-line-mode)
        FufHelp        -  Help mode (fuf-help-mode)

    你可將常用命令 map 至快捷鍵,例如:

        nnoremap <leader>ff  :FufFile<CR>
        nnorempa <leader>fb  :FufBuffer<CR>
        ...

    以此類推。

    呼叫 FuzzyFinder 搜尋視窗之後,操作方式如下:

        Ctrl-n , Ctrl-p 上下選擇項目
        Ctrl-j          開啟該檔案到水平分割視窗
        Ctrl-k          開啟該檔案到垂直分割視窗
        Ctrl-l          開啟檔案至新分頁

        Ctrl-\ Ctrl-\   切換搜尋模式 ( fuzzy matching 或 partial matching )

AutoComplPop

    AutoComplPop Plugin 為一可自動偵測目前程式碼的語境,自動呼叫相關對應的補齊函式 (Completion Function)
    而省去手動觸發補齊功能的 Plugin。

    安裝之後,AutoComplPop 就會自動啟用,輸入片段程式碼即可見效。
    需要注意的是,Vim 的版本需要在 7.2 才有支援。

    安裝方式同以上 Plugin 。

NeoComplCache

    大多數補齊函式,需要另外掃描外部檔案以獲得補齊資訊,耗費的時間依情況而定,但大多數補齊資訊都
    大同小異,因此 NeoComplCache Plugin 針對特定的樣式 (Pattern) 所回傳的補齊資訊做了快取,
    以增加補齊速度。

    安裝方式同以上 Plugin 。

Fakeclip

    為了解決於 Terminal 以及 GUI 之間複製貼上的問題,FakeClip
    利用了虛擬的暫存器來解決多種平台上 Termianl 複製文字至剪貼簿的問題。

    同時支援:

        Cygwin
        Mac OS X
        X Window System (使用 xclip)

BufExplorer

    Vim 缺乏一個良好的 Buffer 管理介面,只能利用簡單的 :buffers , :[n]buf ,
    [n]bufwipe , [n]bufdo 指令來做操作。

    BufExplorer 提供了一個介面將所有 Buffer 的資訊整理出來,你也可透過該介面
    喚回、刪除該 Buffer。

    安裝方式同以上 Plugin。

Surround.vim

    Surround plugin 可針對包含在文字外的括號、引號、XML 標籤等等做快速的修改。

    舉例來說:

    於下字串內,按下 cs"' 時

    "Hello world!"

    可改為:

    'Hello world!'

    此時若按下 cs'<q>

    則可改為

    <q>Hello world!</q>

    Surround plugin 也支援 Visual Mode ,選擇後,可使用大寫 S 對該區塊修改包圍的文字

    安裝方式同以上 Plugin。

GSession.vim

    GSession.vim 是一處理 Vim Session Plugin 。一般建立 Session 可使用
    :mksession [filename] 指令,來將目前所有的分頁、開啟的檔案狀態儲存起來,在下次
    載入 Vim 時可以將狀態喚回。 但缺點就在 Session File 會被存在工作目錄內,
    GSession 可自動將 Session File 集中放置在 ~/.vim/session 內,並且可以是匿名 Session
    ,也就是,你不需要花時間想 Session 的名稱。
   
    存 Session 之後,在同一個路徑開啟 Vim 時便會自己載入 Session,省去輸入指令再去載入的時間。

    若要儲存為命名的 Session ,載入時,也同時支援自動補齊,不需自己記住當時所存的 Session 名稱。

    安裝方式同以上 Plugin。

※ 使用

    <leader>ss   建立匿名 global session file

    <leader>sS   建立匿名 local session file

    <leader>se   刪除目前的 session file

    <leader>sE   刪除所有的 session file

    <leader>sn   建立命名的 global session file

    <leader>sl   建立命名的 local session file

附錄:

    以上 plugin 皆可使用 Vimana 來安裝。
    Vimana 為一可以偵測 vim.org 上 plugin 檔案,來自動安裝 plugin 檔案之模組。

    安裝 Vimana :
       
        使用 cpan 來安裝 Vimana,若是初次使用 cpan,只需要採用預設的 cpan 設定即可。

        $ sudo cpan Vimana

    搜尋 plugin :

        $ vimana s [keyword]

    安裝 plugin :

        $ vimana i [plugin name]

 

◎作者簡介

Cornelius,目前在 AIINK(愛印網),以 Perl 語言開發的 Jifty web framework 從事網站開發相關工作。於 CPAN - Perl 模組典藏網維護多個 Perl 模組,參與 Jifty, SD 等 Perl 相關開放原始碼專案 。主要以 Vim 做為開發工具,著有 cpan.vim , perl-completion.vim , perldoc.vim 等多個 vim 相關 Plugin。 
 Github
 Twitter
 Plurk
 Blog
 Google group

[源碼秘技] 彈性過人的新 Linux 發行版本 — Toorox
翁卓立/文 2010/01/22

◎ 簡介

資訊業界的訊息瞬息萬變,短短的幾天時間,世界上很可能又會出現一些新技術或新知識,考驗著所有資訊從業人員的學習能力。以 Linux 為例,目前較為流行或通用的發行版本 (Distribution) 大約有五、六種之多,但事實上幾乎每隔一段時間,便會有各種不同的發行版本推出新版本。對於喜歡求新求變的人們而言,永遠不會缺乏新的話題可以討論。
 

Linux 的發行版本在以往都是採用安裝光碟的方式釋出,使用者取得某發行版本的安裝光碟後,只能利用此光碟的內容進行作業系統的安裝作業。所以如果使用者想要了解某個發行版本的特色,只能從官方網站上取得的文件加以推測此版本的 Linux 發行版本是否符合個人需求。這樣的使用方式最大的缺點,在於使用者非得要實際進行硬碟內容的破壞動作(硬碟分割表重整、重新格式化、安裝等等),才能實際體驗該發行版本的特色。這樣的作業模式對於大多數的 Linux 初學者而言,是相當難以處理的情況。畢竟搞懂各種作業系統或檔案系統對於硬碟分割表、磁碟的處理方式,可能已經需要一段時間。如果在未能了解細節的情況下冒然進行新作業系統的安裝,對於硬碟資料的危害不言可喻。

有鑑於此,目前大多數主流的 Linux 發行版本,都已經採用 Live CD 的格式作為安裝光碟的選擇。使用安裝光碟開機時,使用者可以選擇是否直接進行系統安裝,或是先使用內建的 Live CD 模式進行操作,了解此版本的功能與特色之後,再決定是否將此光碟的內容安裝至硬碟之中。由於提供了使用者一個完善的試用方法,所以使用者可以先在不傷害硬碟資料的情況下使用 Linux ,了解相關細節後再決定安裝與否。如此一來便可以解決使用者在不安裝作業系統的情況下,無法熟悉該作業系統的問題,也不至於讓尚未習慣該作業系統安裝方式的初學者,在無意間誤刪硬碟資料的情況發生。

本文所要介紹的 Toorox ,是由德國人所發展的一套 Live CD Linux 發行版本(但實際上燒錄光碟時需使用 DVD 光碟片)。雖然是以 Live CD 作為主要的操作模式,但事實上也可以利用系統所提供的安裝功能,要整套作業系統安裝至硬碟或是 USB 隨身碟之中。Toorox 本身是以 Gentoo 這套 Linux 發行版本為基底,再採用 Knoppix 的技術所合而為一的 Linux Live CD 發行版本。之所以會採用 Knoppix 作為 Live CD 的技術,除了 Knoppix 本身屬於 Linux Live CD 的先驅以外,另一個可能的原因則是 Knoppix 一樣也是由德國人所研發而成,在使用上多了一份親切感。顯而易見的,採用 Gentoo 加上 Knoppix 所設計而成的 Toorox ,預設的圖形作業環境也是 KDE 。

[源碼秘技] 彈性過人的新 Linux 發行版本 — Toorox

安裝 Toorox 所需要的硬體,並不需要太高階的設備。以 Toorox 的最小系統需求而言,只需要 Pentium II 以上等級的 x86 相容 CPU ,加上 256MB 的主記憶體與 DVD 光碟機即可。當然如果希望 Toorox 可以執行得更為順暢,採用多核心的 CPU 加上 1GB 的記憶體與 DVD 光碟機,可以讓 Toorox 有如虎添翼的效果。

採用 Toorox 的時機非常多元化,事實上大多數的日常作業都能以 Toorox 完成。例如希望將硬碟中的資料備份出來,但硬碟中的作業系統已經損毀無法開機的情況。或是作為網路瀏覽之用,可以確保每一次執行較為敏感的操作時(例如使用網路銀行),瀏覽器本身或是相關的工具程式都是乾淨無虞的。至於 Linux 的新手,則是可以先行使用 Toorox 作為熟悉 Linux 的工具。如此一來可以在最短的時間內熟悉 Linux 作業系統,又不必擔心硬碟資料會因為誤動作而產生資料毀損的問題。如果有必要,亦可使用 Toorox 將整個作業系統安裝至硬碟之中。如果希望製作 USB 開機磁碟,則 Toorox 也提供了相關的工具程式,可以讓使用者在最短的時間內製作出一個可以進行開機與操作的 USB 隨身碟。不但可以直接使用此隨身碟進行開機,一些個人所建立的新檔案也能直接存放在隨身碟之中,而這也是 Live CD 的作業模式所無法達成的功能之一。

[源碼秘技] 彈性過人的新 Linux 發行版本 — Toorox

◎ Toorox 的特色

採用 Live CD 方式進行開機與操作的 Toorox ,最大的特色便是本身只需要使用電腦上的主記憶體即可執行,完全不會更動既有硬碟之中的資料。當然如果使用者有存取現有硬碟資料的需求,亦可採用掛載的方式將硬碟分割區掛至 Toorox 的檔案系統中,再進行相關作業。這樣的設計可以確保使用者在試用 Toorox 時,不會因為誤動作而刪除了原先硬碟之中所存放的資料。但 Toorox 在執行時,嚴格說來也並非完全不會主動存取現有硬碟之中的資料。這是因為如果硬碟之中原先安裝的作業系統也是 Linux ,且該硬碟之中有 Linux 所使用的 Swap 分割區,則 Toorox 也會加以利用,以便增加系統的執行效能。由於 Swap 分割區所存放的資料是作業系統所存入的暫存資料,其分割區之中的資料是否被改寫並不影響原先作業系統的穩定性,所以 Toorox 直接存取 Swap 分割區的作法並不會抵觸 Live CD 不會存取系統原有硬碟的設計理念。

另一個對 Toorox 使用者而言相當方便的功能,則是 Toorox 會採用 lshwd 工具,在系統開機時直接掃描硬體設備,並將所有需要的驅動程式直接載入系統。雖然 Linux 的驅動程式的支援方面不像 Windows 如此全面且廣泛,但只要不是太冷門的硬體,通常 Toorox 都能在開機時直接辨視出來,並找到相對應的驅動程式模組以載入記憶體,並與核心程式進行結合。

或許是因為 Toorox 是由德國人所開發的關係, Toorox 雖然也支援多國語系,但截至目前為止在開機時能選擇的語系只有英文與德文二種,而且預設語系會是德文。至於中文語系,或是其他國家的主流語言,則是全數不支援。或許將來在 Toorox 持續推出新版本時,會在多國語系的支援功能方面再作加強。

[源碼秘技] 彈性過人的新 Linux 發行版本 — Toorox

Toorox 所內建的軟體相當多元化,版本通常也是當時的最新版本(或接近當時的最新版本)。例如 2010 年一月所推出的最新版本,採用了 2.6.32 版的 Linux 核心。桌面作業環境採用 KDE 4.3.4,而 X Window 則是使用 Xorg-Server 1.6.5。其他像是 OpenOffice、VLC、Thunderbird 或是 K3b、GIMP 等 Linux 常見的軟體,在 Toorox 的發行版本中也可以直接找到。

而 Toorox 所提供的 Toorox Installer 程式,對於習慣將 Linux 直接安裝在硬碟的使用者而言也是相當方便。 Toorox 提供二種安裝模式,分別可以將 Toorox 的發行版本安裝在硬碟或是 USB 隨身碟之中。其中硬碟可以支援內接式硬碟或是外接式的 USB 硬碟,在安裝上都不會有太大問題。如果將 Toorox 安裝至 USB 隨身碟之中,則使用者只需要帶著這支隨身碟,即可在任何支援 USB 開機的電腦上執行自己的 Linux 作業系統,並且可以將所有需要儲存的資料存放在該隨身碟之中。操作上顯得相對方便許多。

Toorox 在開機後會自動產生二個預設帳號,其中一個是系統管理員 root 的帳號,另一個則是名為 user 的一般使用者帳號,使用者可以自行挑選合適的帳號登入系統並進行操作。這二個預設帳號的密碼分別是「root」與「user」,與帳號名稱完全相同。基於系統安全的考量,這樣的密碼顯然相當危險,不足以保護系統上的資料。如果使用者選擇將 Toorox 安裝至硬碟或是 USB 隨身碟,則需要再手動變更這二個帳號的密碼,以免遭人利用進行破壞。

由於 Toorox 預設使用的視窗管理程式為 KDE,所以在操作上與一般採用 KDE 的 Linux 發行版本並無太大不同,只是 Toorox 有針對部份功能進行改善,讓使用者的操作經驗可以更加完善。例如系統預設的檔案瀏覽器為 Konqueror ,螢幕擷取程式採用 KSnapshot 等等。

[源碼秘技] 彈性過人的新 Linux 發行版本 — Toorox

而在開機時可以直接選擇系統操作時的解析度,也是 Toorox 的巧妙設計之一。使用者在開機時可以先選擇所要使用的語系,再決定螢幕的解析度,從最標準的 1024x768 一直到時下最流行的寬螢幕解析度都有支援。雖然這樣的設計未必需要相當複雜的技術支援,但對於使用者而言則是提供了許多便利性。

[源碼秘技] 彈性過人的新 Linux 發行版本 — Toorox

◎ 結語

Linux 的發行版本不斷地推陳出新,幾乎已經讓一般的 Linux 初學者感到無所適從,不知道該如何進行選擇。雖然這樣多元化的選擇會讓使用者感到困擾,但從另一方面來看,可以擁有自主的選擇權,也未必是件壞事。 Toorox 提供了一套新的 Linux 發行版本選擇,而且在操作環境上也有三種不同的選擇,包括直接以光碟執行、安裝至硬碟執行,或是以攜帶性為主要考量的 USB 隨身碟等等,可以說是相當具有彈性的一套 Linux 發行版本。

如果硬要說 Toorox 有什麼缺點,恐怕在多國語系方面會是最為人所垢病的一點。雖然說開發者是德國人,採用德語作為預設語系無可厚非,但除了德文以外,只提供英文的操作介面仍然會讓人覺得不夠親切。畢竟在現今的社會中,對於英文有排斥感的人不在少數,能否針對世界各地人們所慣用的語言進行支援,會是 Linux 發行版本能否快速被使用族群所接受的一個重點。除此之外,Toorox 的華麗外觀,加上與 KDE 的完全整合,綜合來說還是相當值得所有人進行嘗試的一套 Linux Live CD 發行版本。


◎ 作者簡介
翁卓立
逢甲大學資訊工程學系畢業,現為台灣科技大學電子所在職專班學生。目前擔任韌 體研發工作,主要使用 Embedded Linux 進行產品開發。著有「Linux 進化特 區:Ubuntu 9.04 從入門到精通」等書。

推薦訂閱
【ACTION! 走讀社區開麥拉】 屏東社區深度旅遊體驗暨短片徵選活動開鑼了!@【藍色東港溪保育協會網路通訊】
介紹一個免費資訊與網路新知網站@【網頁研習室【網頁製作系列報導】】
自由軟體鑄造場電子報
轉寄『第 143 期 彈性過人的新 Linux 發行版本 — Toorox』這期電子報

寄信人暱稱  寄信人email
收信人暱稱  收信人email

  • 社群留言
  • 留言報主