Tommy 碎碎念

Tommy Wu's blog

« 上一篇 | 下一篇 »

透過 console 來使用 cygwin 與取代命令提示字元
post by tommy @ 23 十一月, 2012 21:17

原本在 cygwin 中, 是透過 mintty 來執行 shell, 不過... mintty 並沒有 tab 的功能, 所以, 要執行不同的 shell, 就要再打開一個視窗來用. 所以... 就使用 console 這個程式來取代.

在 Console 這個程式中, 去設定一個新的 tab, 執行下面這個 Shell 就可以執行 Cygwin 了:

c:\dev\cygwin\bin\bash.exe --login -i

不過要注意的是, 在 Console 中, 雖然可以去設定 scroll buffer 的行數, 不過... 只要在 cygwin 中執行 vim 或 man 或 less 指令後, 就會發現之前的 buffer 會不見. 這樣子有時要回頭看看以前執行的結果就很不方便.

這是因為這些程式, 都支援 termcap 的設定, 在程式一開使用會去執行 ti 的動作, 程式結果會去執行 te 的動作, 結果.... 就是之前的 buffer 會被清掉.

所以... 我們要避免這個動作.

首先, 試著去改 /etc/termcap 裡頭的 ti 與 te, 不過.... 似乎沒有作用. 所以... 只好一個個去設定了.

首先是 vim, 我們可以在 .vimrc 中用下面的設定來避免 ti 與 te 的動作:

set t_ti= t_te=

接著是 less 指令. man 一下這指令的說明, 發現 -X 或 --no-init 這個選項, 可以讓 less 不去做 ti 與 te 的動作. 所以... 用一個 alias 就可以避免:

alias less='less -X'

另外還有 man 這指令, 其實這個與上頭的 less 是同一個問題, 因為內定的 pager 就是用 less 來處理. 不過 alias 對這個並沒有作用, 所以, 我們可以另外指定要用的 pager 就可以了:

export MANPAGER="/usr/bin/less -isrRX"

經過這樣子的處理, 就沒再碰過 scroll buffer 消失的問題了.

另外... console 這個程式也可以取代 Windows 本身的 cmd.exe, 我們只要去建立一個 tab, 執行 cmd.exe 就可以把原本的命令提示字元變成多 tab 的程式了.

不過, 在中文的處理上頭, 會有些小問題, 在網路上看到了這一個設定, 匯入後果然可以正常顯示與輸入中文了:

Windows Registry Editor Version 5.00
 
[HKEY_CURRENT_USER\Console\Console2 command window]
"CodePage"=dword:000003b6
"FontSize"=dword:000a0000
"FontFamily"=dword:00000036
"FontWeight"=dword:00000190
"FaceName"="細明體"
"HistoryNoDup"=dword:00000000

目前這樣子使用, 運作看來都很正常了.

Del.icio.us Furl HEMiDEMi Technorati MyShare
迴響
暱稱:
標題:
個人網頁:
電子郵件:
迴響

  

Bad Behavior 已經阻擋了 68 個過去 7 天試圖闖關的垃圾迴響與引用。
Power by LifeType. Template design by JamesHuang. Valid XHTML and CSS