搜尋此網誌

工商服務

2009年3月5日 星期四

[Linux][指令]超級常用的vi/vim操作指令

vi是古董級的文字介面文書處理器,而vim則是其加強版(例如支援語法變色功能),後者甚至將自己定位為「程式開發工具」。儘管有些指令十分常用,但是我每次都會忘記,往往只依稀記得零星幾個而已,於是索性整理如下,方便日後查用。

在此之前先說明一下vi/vim的三種操作模式:「一般模式」可以移動游標瀏覽、刪除、複製、貼上等;「編輯模式」可以加入新的內容;「命令列模式」可以搜尋、存檔、離開等。從「一般模式」到「編輯模式」要按ia,從「編輯模式」到「一般模式」要按〔ESC〕,而進入「命令列模式」則要先回到「一般模式」再按:
  • 刪除:一般模式下按x刪除游標所在位置後面的字元;一般模式下按dd刪除游標所在位置那一行
  • 複製:一般模式下按yy複製游標所在位置那一行
  • 剪下:一般模式下按yydd
  • 貼上:一般模式下按p將複製資料貼到游標所在位置的下一行
  • 尋找:一般模式下按/文字從游標處往下尋找;一般模式下按?文字從游標處往上尋找
  • 取代:一般模式下按:1,$s/文字1/文字2/g將全文的「文字1」都取代為「文字2」
  • 移至第n行:一般模式下按「數字」+〔Enter〕
  • 移至檔案開頭:一般模式下按gg
  • 移至檔案結尾:一般模式下按G
  • 存檔離開:一般模式下按wq
  • 強制離開:一般模式下按q!


[Qt漫談]下載並安裝Windows版本Qt 4.5+Qt Creator 1.0

前天(3月3日)下午連進去Qt首頁下載的還是Qt 4.5 rc1版本,沒想到隔了一天再去看,不僅網頁版面已經變了,而且Qt 4.5還以正式版之姿登場,相關網頁上的rc1字樣也都已不復見。就連安裝流程的畫面也不一樣了,因為首次將IDE工具附加進來。

被Nokia併購後,Trolltech已更名為Qt Software,所以下載網址變成http://www.qtsoftware.com/downloads。根據授權方式有分LGPL/Free Downloads和Commercial Downloads兩種,其中LGPL/Free Downloads的下載套件又可分為Qt SDK(包含程式庫、IDE、開發工具)和Qt(只有程式庫和開發工具)兩種,也就是說只想執行Qt程式而不想自行開發的人選擇後者即可,雖然後者實際上也會把開發工具一併安裝起來。換言之,跟我原先以為的會類似.NET Framework程式庫的發行方式並不相同,無論是Qt SDK或Qt,你都必須先下載Qt Framework的原始碼,然後再編譯產生程式庫,不過隨著Qt的普及,未來這些程式庫(例如Qt Core是QtCore4.dll)可能也下載得到,而不必再自行編譯了。以Windows平台為例,其Qt SDK的檔案大小是194MB,單純的Qt程式庫則是159MB(而非網頁上標示的136MB),差別在於後者不會安裝Qt Creator。









接著啟動Qt Creator(可進行Qt應用程式開發的輕量級跨平台IDE)小試身手看看:從「File→New」建立新的「Qt Gui Application」專案,全部採用預設值建立完成後,可以點按.ui檔以啟動Designer工具於右側,最後從「Build→Run」啟動建置成可執行檔的應用程式(什麼都沒有的空白表單)。












補充一下程式集裡面看到的Qt資料夾內容,原先的Qt Designer設計工具現在隱身到Tools資料夾底下去了(如果是安裝Qt Framework版本的話,看到的資料夾內容則與Qt 4.4的大同小異,亦即基本上只是少了Qt Creator而已):



連結:Qt Software的下載專區
連結:〈Qt 4.5, Qt Creator released〉新聞稿
連結:〈New Cross-Platform IDE and SDK makes Qt ideal for students and researchers〉新聞稿
連結:iThome新聞〈諾基亞發表新版 Qt 開發軟體〉

【2009.03.06 updated】
【2009.05.14 updated】

2009年3月4日 星期三

[Qt密技]執行Qt程式時找不到相關dll檔該怎麼辦?





Qt程式在散佈之後可能會遭遇無法正確執行的窘境,問題就出在找不到程式本身所需的動態連結程式庫(dll)檔案。解決方法有二:

一、將Qt工具靜態編譯,這樣開發出來的程式就會內含所需的程式庫;好處是執行檔是獨立的一整包,缺點則是執行檔會因此很龐大,而且日後想要更新程式庫必須重新建置執行檔。

二、因為程式庫被建置成動態連結的分享方式,所以在部署時必須把所需的dll檔案放到該執行檔找得到的地方;這樣子的好處是執行檔會小很多,而且隨著日後程式庫的升級,程式效能也會跟著提升;更重要的是可以維持Qt 4.5新的LGPL授權方式,保有是否開放原始碼的主控權。

針對第二種解決方案,以此處於Qt 4.4環境下執行的範例程式為例,只要將缺少的mingwm10.dll(15.5KB)、QtCored4.dll(17.8MB)和QtGuid4.dll(64.3MB)跟執行檔放置在一起即可,不過Qt程式庫之所以會這麼龐大,是因為它們是包含偵錯資訊的版本(所以在版本數字4前面有個「d」字樣),如果是發行版本的程式庫,其大小則分別只有QtCore4.dll(2.53MB)和QtGui4.dll(9.94MB);或者索性將程式庫通通放置到C:\WINDOWS\System系統路徑底下,然而缺點則是因為系統路徑是優先搜尋的路徑,所以如果程式在編譯時所採用的Qt版本與程式庫的不相同,照樣會發生錯誤,以筆者的電腦為例,上頭有三套Qt 4.x的環境,就經常會發生這種版本錯亂的問題,呵呵。



連結:Qt 4.4技術文件〈Deploying Qt Applications〉
連結:Qt 4.5技術文件〈Deploying Qt Applications〉

【2009.03.06 updated】
【2009.04.15 updated】
【2009.04.17 updated】