2012年6月29日星期五

Windows下的Console Emulater

对于一个UNIX下用惯了各种终端和各种shell的人来说,在Windows世界里最大的痛苦是那个蹩脚的cmd。虽然有Cygwin和Msys 的mintty/rxvt,但它们还是更适合跑bash和它们自己的term类程序,不适合跑Windows的console程序(比如路径的斜线/反斜 线问题,比如ANSI颜色问题。。。)

下面,我们分两方面来找找替代品,这次介绍console emulater,类似UNIX下终端仿真器(terminal emulator)那样的东西,让多个字符界面程序(比如cmd/bash/python shell)跑在一个窗口里,下次再介绍类似UNIX下shell那样的东西,切实改进cmd那可怜的交互能力。

推荐: ConEmu

http://code.google.com/p/conemu-maximus5

看看下面的特性列表,颤抖吧!

  • 支持多标签,甚至支持将其它的GUI程序(不仅仅是console程序哦,比如putty/记事本等都可以)嵌入为标签页;
  • 可以选择各种字体,且自带抗锯齿功能;
  • 对各种console程序都兼容得很好(比如文件管理器Far Manager,win32版本的vim,比如IPython),甚至兼容DOS程序;
  • 支持Quake式的下拉风格(即类似于Guake/Tilda/Yakuake那样的,不用时窗口隐藏,需要时用热键呼出,界面从屏幕顶端拉下来)——这个需要最近的版本(至少2012-06-12之后的);
  • 增强的文字选取(比如缺省按住左Alt+鼠标拖动,可以选择矩形区域)
  • 支持ANSI X3.64和xterm 256彩色
  • 很多针对Far Manager文件管理器的增强,比如:让Far Manager支持Windows风格的文件拖放、右键菜单、分隔条,给Far Manager文件列表增加了缩略图和小图标浏览方式(Far Manager可是个基于字符的文件管理器),为查看器/编辑器自动提供新的标签页(即将Far Manager的screen实现为了它的标签页),

注意: 中文用户请使用2012-06-17之后的版本,因为这个版本刚修正了中文的显示问题(以前的版本会在命令行中出现每个汉字出现两遍的情况。这也是为什么以前我没有推荐这个好工具的主要原因)。

Far, cmd, Notepad and PUTTY started in ConEmu


补充说明一下如何将其它程序变为ConEmu里面的标签页(参见其Wiki: LaunchNewTab):

最简单的方法: 菜单里选择New console...,然后在对话框里面输入程序名称即可,注意这里不仅仅可以输入cmd/powershell/vim/far这些console程序,你输入putty甚至notepad,都是可以的!
Create new console dialog
另一种方法是,在ConEmu里面跑一个cmd.exe,然后在cmd里面输入putty -new_console,确定,哒哒!putty就变成ConEmu的一个标签页了; 输入: vim -new_console 然后vim就在一个新的标签页里面打开了! (是的,其实这里的-new_console并不是putty或者vim的参数,会被ConEmu拦截并进行处理。)
  • 注意得选用最近几天的版本,并在Settings->Features中勾选上Inject ComEmuHk。对于以前的版本,得这样:"%ConEmuBaseDir%\ConEmuC.exe" /c vim.exe -new_console:nh0 c:\sources\1.cpp (详细解释可以参看其Wiki: NewConsole
  • 另外一个例子: 将grep的结果“重定向”到一个新的标签页:grep -new_console -nHi --color path cmd_autorun.cmd 而当前cmd并不阻塞,可以继续输入其它命令(缺省不想激活新标签页的话可以用-new_console:b )

其它备选

1 Console2

http://sourceforge.net/projects/console

Console2的功能就比较简单,主要是提供了多标签页,另外有一些小的功能(比如可以选择字体、可以半透明等)。
对各类Console程序兼容性比较好,cmd/python/bash/vim都可以正常运行。

不过按缺省的设置,在中文系统上使用时,会存在文字错行的问题,解决方法是将如下内容导入注册表
(注意拷贝到xxxxxx.reg文件时要保存为Unicode编码,然后才能导入。转自: 介绍几个cmd的替代品_时光可见

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\Console2 command window]

"CodePage"=dword:000003a8
"FontSize"=dword:000a0000
"FontFamily"=dword:00000036
"FontWeight"=dword:00000190
"FaceName"="新宋体"
"HistoryNoDup"=dword:00000000

但中文输入还是有问题: 不能激活输入法,也就是说无法输入中文,得在其它地方输入了再粘贴过来。

(图片来自: http://blog.darkthread.net/blogs/darkthreadtw/archive/2007/02/08/console2.aspx )

2. ColorConsole

http://www.softwareok.com/?Freeware/ColorConsole
ColorControl也是一个比较简单的多标签Console,附带几个小功能(选中部分文字改变其颜色,带颜色导出终端文字到HTML/RTF,通过菜单快速跳转到某个目录)


ColorConsole在程序兼容性上有比较严重的问题,不仅无法运行vim/jasspa等全屏程序,而且msys-bash/python/jsdb等命令解释器全都无法正常运行。
colorconsole

3.PowerCmd

上面说的几个工具都可以提供标签页,而不能提供分屏能力,但PowerCmd可以(同时也可以再多标签页)。

另外有一些小功能:

  • 路径自动补全(按Tab键触发)
  • 历史记录
  • 关键字高亮

不过我并不推荐这个工具,一方面它不是免费的; 另一方面它有不少问题: 无法运行python shell(jsdb/lua倒可以运行);跑msys bash时所有msys程序(比如ls,grep)都会segmentation fault;对一些基于屏幕的程序,虽然是象GUI程序一样打开新窗口,但有时不能正确识别(比如jasspa me) 。
powercmd

本文链接



(automatically copied by ifttt from http://www.cnblogs.com/bamanzi/archive/2012/06/27/windows-console-emulater.html)

2012年6月24日星期日

推荐跨平台笔记软件CherryTree

前两天看见UbuntuHome发了这篇 [程序员专用笔记CherryTree], 下载下来试用了一阵之后,感觉很不错,于是在公司的电脑上就从minipad2切换过来; 家里的Linux上也装上了它,开始把我一些零散的笔记挪进去。

 

CherryTree是个树状笔记软件,有着其它类似软件的功能

  • 支持富文本(粗体/斜体/等宽/下划线/链接/背景色/前景色)
  • 支持类似HTML的h1..h3多级标题
  • 支持无序列表/有序列表/TO-DO列表
  • 支持嵌入图片

它还有一些特色功能:

  • 支持嵌入表格(不过只是简单的表格)
  • 支持嵌入代码框(可以语法高亮哦)
  • 可以扫描整个笔记本,生成文档目录
  • 有丰富的导入功能,可以导入Basket, KeepNote, Leo, NoteCase, Tomboy, TreePad, TuxCards等笔记软件的文件
  • 可将整个笔记本(或者其中一部分)导出成HTML,每个节点一个文件,都带有树状索引

另外,CherryTree是将整个笔记本保存为一个文件(sqlite格式或者xml格式),图片/表格这些都是在保存在里面的。

CherryTree采用python+gtk编写,也提供了windows binary包,安装比较省事。

 


为什么选择CherryTree?

(这一部分更多是描述个人偏好,不感兴趣可以跳过)

前面一篇博文里面说过,我用EverNote还是比较多的,但它主要还是用做”知识仓库“,存放比较系统化的一些内容。

但其实还有两个场景,都不太适合用EverNote:
一个是写东西 (authoring),比如写博客文章、写会议记录什么的,这要求编辑器的能力要比较强,比如能方便地调整章节、编辑表格什么的,之前我一直是用emacs org-mode来干这个的;

另一个场景是随手记点东西,有的是有待整理后放到笔记里,有的是临时的代码片段,有的只是在较短时间内的备忘(比如某台服务器的IP地址什么的),这种一般我会按照主题(比如Emacs,shell等,内容多了会再分子主题)。之前我在上班时主要是用flashpad/minipad2来做这个,在家里用Linux时,就一直没有什么趁手的工具,都是用Firefox扩展QuickFox Notes来应付。

flashpad/minipad2/quickfox notes这几个的缺点是:

  • 都只支持纯文本,有时候很期望用加粗、颜色什么的来标识需要注意的内容,标题、链接什么的最好也有(倒是可以接受非所见即所得的方式,比如FloatNotes采用Markdown格式编写,以HTML方式呈现);
  • 都不支持嵌入图片,有时候截屏是比较简单方便的记录方式;
  • flashpad/minipad2不跨平台;
  • QuickFox Notes采用标签页来呈现所有的,内容多了之后,标签栏两头来回找,太麻烦了(以前我是将短期不太关系的内容放到“收藏夹”里面去了,而且还有个搜索框,觉得挺方便的。直到前几天我从奇怪Firefox同步的内容总是不全才发现这个“收藏夹”的英文原文是Archive,放进去的笔记是归档到本机文件系统去了,不会自动同步)

而且改用CherryTree的话,这两个场景都可以用同一个工具了,尤其是表格和代码框,我很喜欢 :-)

cherrytree my usage

本文链接



(automatically copied by ifttt from http://www.cnblogs.com/bamanzi/archive/2012/06/24/note-taking-tool-cherrytree.html)

2012年6月19日星期二

网海拾贝 2012-05 (expect,gnu screen/tmux, ipython, virtualenv, emacs...)

我打算将每个月看到的不错的文章整理一个索引,相对以前零散地放在书签里或者微博上,我觉得这样更好一点。试试看吧,也许过几个月又改主意了。

素材来自于我的Pocket(即Read It Later)记录和博客园闪存。

 

 

Python

Author: bamanzi

Date: 2012-06-19 21:27:49 HKT

HTML generated by org-mode 7.3 in emacs 23

本文链接



(automatically copied by ifttt from http://www.cnblogs.com/bamanzi/archive/2012/06/04/various-goodies-2012-05.html)

2012年6月16日星期六

LinuxMint 12历险记(以及GNOME 3逃逸办法)

1. GDM-3: Could not update ICEauthority file

上周三晚,因为想使用launchpad上提供的wine-1.4 (现在比较懒得自己编译 了),又觉得自己的LinuxMint比较老了(还是Mint 11 Katya,而Mint 13 Maya 在上个月都出来了),于是就决定来个 apt-get dist-upgrade

打完收工,重启系统,问题来了——图形界面进不去,在GDM里面输入用户名、密码 再回车后,系统忙一阵,蹦出来一个提示框:

网上一阵狂搜,有很多很多很多人出现这个,大都说是权限问题,但我一个个试 了,没一个能解决问题——唯一的收获是发现这东西跟GNOME 3有关。之前听说 GNOME 3需要3D加速,我这集显看来是跑不起来了?

不详细说折腾过程了,反正白天上班的空档就阅读一下LinuxMint 12/13的 Release Notes (12 Lisa/13 Maya 和Whats New (12 Lisa/13 Maya ),尤其是跟 GNOME 3相关的部分,然后每晚折腾一下,到周六晚终于搞定了——其实解决方法很 简单,就是GDM 3在作祟,我干掉它换用 LightDM 就行了——至于具体原因我也懒 得去深究,反正就一登录界面嘛——而且我中间下载过LinuxMint 12的virtualbox 磁盘镜像,发现这个版本缺省的就是使用的LightDM。

2. GNOME 3逃逸办法

下面介绍一下对我在这个过程中了解到LinuxMint对GNOME 3提供的一些解决方案, 供各位参考(之前在各个网站上听到过不少对GNOME 3的争论,其实我还一直没有 真正用过它,下面只是我在解决上述问题中了解到的一些内容——而短期内我还是 选择GNOME 2,也就是MATE):

Linux Mint对GNOME的用户提供了三种升级方案,Linux Mint 12提供了Gnome Shell+MGSE和MATE,而Linux Mint 13增加了一个Cinnamon。 这三者是可以共存的: "You can install Cinnamon alongside other desktops (including MATE and Gnome Shell/MGSE). " - Linux Mint Blog: Introduing Cinnamon)。

2.1 MGSE: 如果你喜欢玩新东西

LinuxMint了解到用户们对于GNOME 3(Gnome Shell)的可用性有很多抱怨,于是在LinuxMint 12 (Lisa)里面提供了MGSE和MATE两个东西。MGSE即Mint Gnome Shell Extensions,是LinuxMint对Gnome Shell添加的一些扩展(本身也是基于Gnome Shell的扩展技术来开发的),主要是包含了底部面板(GS缺省 只有一个顶部面板)、应用程序菜单、窗口列表和Alt-Tab修正(GS缺省只能切 换应用程序,不能直接切换窗口)。—— New Features in Linux Mint 12: Gnome 3 and MGSE

 

2.2 MATE: 如果你想找回老版GNOME的感觉

而MATE则是基于Gnome 2.x的一个分支(Many users refused to accept the new GNOME, calling on someone to continue development of GNOME 2.), 为了避免跟Gnome 3.x的一些包相冲突而改了名字(以及一些代码)。MATE的 大部分包名是将 gnome 几个字母换成了 *mate*,比如 mate-panel, mate-terminal, 有些原本不包含"gnome"字样的也改了,比如 eog -> mate-image-viewer, totem -> mate-video-player ,但有几个例外,比如 nautilus -> caja, metacity -> marco

Linux Mint 12的CD版本只集成了MGSE,而没有MATE(但DVD版本有),需要自 己安装: apt-get install mint-meta-mate 。但Linux Mint 12带的MATE还 是1.0,它自己在Release Notes里也说 MATE is at a really early stage of its development and isn't stable yet ,不过这里有最新的包(当前是 1.2.0): http://mate.karapetsas.com/ (安装方法是将 deb http://packages.mate-desktop.org/repo/ubuntu/ oneiric main 加入 /etc/apt/source.list.d/mate.list后,apt-get update && apt-get install -t oneiric mate-desktop

Linux Mint 13则提供了两种CD,一种是MATE 1.2,一种是Cinnamon 1.4。

一开始我还以为MATE是LinuxMint创造的,网上搜了一下才发现是由Arch Linux发起的(Wikipedia: MATE (desktop environment): History,目前支持 Arch/Mint/Debian/Ubuntu,但集成到发行版的只有Mint (参见: http://mate-desktop.org/about/).

2.3 Cinnamon: 比MGSE更新的玩具

考虑到MGSE只能基于Gnome Shell开发,能力有限,Linux Mint 13又多出来一 个东西: Cinnamon,它是在GNOME 3(Gnome Shell)上分支出来的,旨在提供一 个接近传统风格的桌面(Linux Mint Blog: Introducing Cinnamon)。但底层 仍然采用Gnome 3的技术,比如,还是需要3D加速(参见: New features of Linux Mint 13 - Cinnamon 1.4)。

Cinnamon

前面说过,MGSE,MATE和Cinnamon可以共存的,不过Linx Mint 13的CD还是发 了Mate和Cinnamon两个版本。

3. 其它

  • LinuxMint基于Ubuntu Oneiric,找软件仓库时需要记牢这个。LinuxMint与 Ubuntu各个版本的对应表都在这里: http://www.linuxmint.com/oldreleases.php
  • LinuxMint 12启动时黑屏(black splash screen)居然是"设计如此"(by design) http://linuxmint.com/rel\_lisa.php#info
  • 在VirtualBox里面跑GNOME 3,需要在VB里将虚拟机的显存设置为至少64M。 倒不一定要在VB里启用2D/3D加速(不过我这里3D加速的选项被禁用了,可 能是因为host pc的显卡是集显)
  • 一直奇怪linuxmint下 /etc/lsb-release/etc/issue 总是被自动 修改回老版本的版本号(该回初始安装是的linuxmint 10,后来升级到11, 现在升级到12,居然都不会变),刚才上网查了一下,原来是有个 /usr/lib/linuxmint/mintSystem/mint-adjust.py 在自动修改,这个文 件由 mintsystem 这个包提供。要禁止掉这个“特性“,可以修改 /etc/linuxmint/mintSystem.conf
  • LinuxMint推荐用重新安装的方式来做大版本升级(How to upgrade to a newer release - Linux Mint Community),而不推荐用apt-get dist-upgrade(Upgrade linux mint in-place using apt - Linux Mint Community),看来也是有它自己的道理的 :-)

Author: bamanzi

Date: 2012-06-14 22:39:15 HKT

HTML generated by org-mode 7.3 in emacs 23

本文链接



(automatically copied by ifttt from http://www.cnblogs.com/bamanzi/archive/2012/06/14/linuxmint-12-gnome-3-kick-ass.html)