Arch 使用一个月经验杂谈
0. 关于重要文档丢失
本来这篇文章应该是从”1. 关于文档编辑器” 开始的,可是不幸的我非常不幸地按下了那代表不幸的按键”shift+delete”。不幸 (ふこう) だ!T T~~~~~
理所当然我使用数据恢复手段,测试了两种据说可靠的数据恢复工具。可是一不小心失去的东西又怎么能那么容易回来,我不出意料地迎来了一个最终找不到文件的结局。世界再一次用警告的手段告诉我,必须珍惜一切的一切,唉……
“往者不可谏,来者犹可追。已而,已而!” 经过这一疫,得出了以下几点总结:
1) 绝不可再以 “未命名” 当作文件名,第一这个不利于数据恢复,第二这个容易误删,论坛灌水的时候有句俗语,叫 “标题一定得长~~~~~~~~~~~”.txt
2) 绝不可再习惯性地 shift+delete,一定要养成 delete 的习惯,回收站不是当摆设的。
3) /home 分区独立于 / 分区之外,对于数据恢复好处非常大
4) 安装 testdisk 以后有一条 photorec 命令可以用来恢复数据,之后检索用 grep -rHn "<pattern>" *
1. 关于文档编辑器
我想 linux 下的编程用的编辑器实在是很多,而且大多都是世界顶尖级的神软,大概可以像圆周率的小数部分一样无限地持续下去。曾经有这样一句话:“世界上一共有三种文本编辑器,emacs、vi (vim) 和其他。” 很可惜,我是菜鸟一个,只会用其他。emacs 和 vim 我用起来都不是很顺手,我只是想找一个类似 Win 下 EmEditor 那样方便的软件,支持多语言编码、支持多种换行符、支持多种代码高亮、操作上手简便的文本编辑器。可是 emacs 和 vim 在上手上都不是那么轻易的。在试用了 N 款编辑器软件之后,我选择了 medit。官方简介只有这么短短的一句:“A GTK text editor”,但是我真的蛮喜欢这个 5M 多的小家伙。且听我介绍一番。
首先,它支持多语言编码重新载入,分为 “西欧、东欧、东亚、东南 / 西南亚、中亚、Unicode” 六大类,每一类都有对应的各国编码,不过没有根据国别自动选择的功能。当然保存的时候也可以选择编码,不过它不支持 HEX 载入,无法查看 16 进制源文件。然后,它对 Unix/Windows/Mac 的换行符支持切换,但是没有清楚地标记在保存框上,UTF-8 的 BOM 没有办法清楚地选择有无,所以保存相关的默认行为我并不是很清楚。至于高亮方面,则和 EmEditor 比较像,比较简洁,支持种类繁多但是不是很极致地注重美感,整体代码染色比较清爽。最后,它还支持 toggle bookmark,python 控制台、终端、多标签、文件目录树、多文件字串查找。真的很不错一款编辑器,希望有更多人喜欢它。
2. 关于输入法 fcitx 与 ibus
ibus 重一点儿,问题多一点儿,效率低一点儿。但是毕竟是个多语言支持的框架,支持日文输入。fcitx 正如它的名字一样 (Free Chinese Input Toy for X), 对中文输入支持比较好,但没办法输入其它语言。
介于需求日文输入,我选择 ibus,但 ibus 下的搜狗拼音和谷歌拼音我都用不了。前者似乎是放弃了开发,后者应该是 ibus-googlepinyin 的 bug,作者的官网上一片报错,希望他早日修复。已知的一个 bug 是 python2 与 python3 的不兼容引起的:虽然 aur 版的谷歌拼音里没遇到这个问题,但如果自己编译的话会找不到遇到 main.py 执行错误。因为默认的 python 已经不是 python2,变成 python3 了。说起 python 我还有点儿话说,且看下文看图器部分。
3. 关于包管理 pacman 与 yaourt
二者很大的一个区别是 yaourt 不用 sudo,而且染色比较好看 XD。man 里面可以看到大量的参数以实现极多的包管理功能,但是我还是觉得有必要记录一下常用的几个组合
$ yaourt -Syua #刷新全部包(ABS+AUR)
$ yaourt -Syua --devel #刷新全部包(ABS+AUR)以及正在开发的包(XXX-svn、XXX-git、XXX-hg)
关于这个正在开发的包,我说点儿事,就是 git 包实际的版本号和 yaourt 查询到的版本号可能不一致。早上我发现我的 gtkqq 版本非常奇怪,比官方版本号整整新了 1 个多月,觉得太不可思议了,后来才意识到问题所在。
$ yaourt -S svn #想自己编译XXX-svn,得安装svn
$ yaourt -S git #想自己编译XXX-git,得安装git
$ yaourt -S mercurial #想自己编译XXX-hg,得安装mercurial
你妹的!最后一个是什么东西啊,明明叫做 hg,-S 直接安装 hg 不行,-Ss 搜索 hg 也找不到,查了半天才知道叫这个” 妹求扰”,创始人 Matt 一定是化学学太好才给这玩意起个元素名,还耍帅用个形容词…… 更郁闷命令行还得用 hg clone,你妹的!
$ yaourt -Ss <pattern> #查找源(ABS+AUR)里带有指定<pattern>的包
$ yaourt -Qs <pattern> #查找机器上已安装的包(ABS+AUR)里带有指定<pattern>的包
$ yaourt -Qi <pattern> #查看机器上已安装的<pattern>包的详细
$ yaourt -Ql <pattern> #查看机器上已安装的<pattern>包的安装位置
问题就在这个
$ yaourt -Qt #查找机器上所有孤立的包
$ yaourt -Qe #查找机器上所有以“指定”形式安装的包
$ yaourt -Qd #查找机器上所有以“依赖”形式安装的包
$ yaourt -Qte #查找机器上所有以“指定”形式安装的孤立包
$ yaourt -Qtd #查找机器上所有以“依赖”形式安装的孤立包,并选择是否删除
值得注意的是最后一条,因为各种 AUR 依赖写的不全,好多编译需要的包比如 cmake 我那是装了删,删了装,好不累人…… 而且编译完 mplayer2-git 以后好多库的依赖居然都没了,结果导致我现在再也不敢乱 qtd 了…… 顺便说句拉丁文里面 Q.E.D. 是证明完毕的意思,每次打这些命令我都联想到这个……
4. 关于终端
一开始装 Arch 选择桌面环境的时候,因为图省事就装了 LXDE。我当时选择 WM 和 DE 的条件很简单,看 wiki 上翻译的种类,越多文种的翻译代表该平台使用的越广,得到的支持也就越好。所以我一下子就选中了 openbox,随即选中了 LXDE,之后便开始使用了它默认的终端 LXTerminal。之后第一件事我就开始了搜索 terminal,然后我发现了一个叫做 sakura 的终端很不错,右键可以很轻易地定制很多界面上的东西,而且对剪切板的支持也很好,然后我就把 lxterminal 卸了。
直到蒋座跟我推荐 urxvt,以及把他的配置给了我,我才意识到 sakura 确实有些不足的地方,比如启动有些偏慢,界面的自定义也并不是那么完全,它的染色只能用一个 palette 的值来指定,而可以选择的值只有”tango、linux、xterm、rxvt” 四种,最最别扭的是那个丑陋不堪的标签栏,让我坚决不想开第二个标签。但毕竟 sakura 是我自己选择的软件,而且陪我走过了一段不短的时间,所以即使我大部分时间都转向了 urxvt,也没有想要卸掉它的意思,偶尔看看它有没有更新也不错。
再来就是 urxvt 了,首先说目前我觉得最最不足的地方,远程支持的染色会消失,因为我不怎么使用 vim 服务器也经常不装 emacs,所以暂时没有办法研究解决方案。之后说说 urxvt 的配置,整个配置依赖.Xdeaults 文件。蒋座的方法是写一个.Xresources 保存完整配置,然后建一个.Xdefaults 链接指向.Xresources。我觉得这方法很好,立马依葫芦画瓢建立了个 /usr/bin/python 的链接指向 /usr/bin/python2,来解决 python2、python3 冲突问题。至于 urxvt 的染色配置,我就不细说了,网上随便搜搜都一大堆介绍。我说点儿特别的,如何让 urxvt 支持标签以及剪贴版。
urxvt 的 tab 支持,启用 perl 扩展:tabbed
$ <editor> ~/.Xresources
!extensions
URxvt.perl-ext-common: default,...,tabbed,...
!URxvt.tabbed
URxvt.tabbed.tabbar-fg: 2
URxvt.tabbed.tabbar-bg: 0
URxvt.tabbed.tab-fg: 3
URxvt.tabbed.tab-bg: 0
urxvt 的剪贴板支持,首先安装 urxvt-clipboard,再简单启用 perl 扩展:clipboard
$ yaourt -S urxvt-clipboard
$ 编辑器 ~/.Xresources
!extensions
URxvt.perl-ext-common: default,...,clipboard,...
这个剪贴板支持是这样的,不用 ctrl+c,终端里选中之后自动把选中内容复制到主区 PRIMARY 和剪贴板区 CLIPBOARD (linux 的剪贴板管理请自行 wiki)。之后如果你在终端外选中别的什么字串,会覆盖主区 PRIMARY,但是剪贴板区依然是终端内容,所以可以直接 ctrl+v 到任意窗口。
urxvt 还有一个特性是 alt+s,可以查找上面屏幕里出现的某个字串,找到第一个以后用上下箭头键可以切换查看搜索到的不同位置的其它匹配字串,ESC 退出搜索,虽然不能直接选中匹配项,但其实还是蛮方便的。
最后再来一条,该死的缓冲行数修改:URxvt.saveLines:65535,不解释!
5. 关于图片:看图器、图片编辑器、截图器
我真的试用了很多软件,我把 extra 和 community 仓库里的带有 viewer 的软件试了个遍,本来这一段写了很长的,可惜我现在已经找不回来了,只能简单写写,先说看图器。
gpicview:LXDE 默认带的看图器,主界面就是一张图,下面有工具条,类似 Windows 默认那个。基本编辑功能上算是尚可,唯独不支持剪贴板操作。滚动条上有些 bug,经常是一开图就看到两个别扭的滚动条。
gqview: 参考 geeqie
geeqie:gqview 的改版,图片自适应较好。有个可隐藏的侧边预览;启动有些偏慢,编辑功能比 gpicview 还弱,支持部分的自定义快捷键。
mirage: 中规中矩,没觉得有太大的特色,有个侧边预览,编辑功能尚可,不支持剪贴板,不支持快捷键自定义。
gthumb: 目前发现的最好的看图器,编辑功能强,支持剪贴版,但仅支持小键盘 1-9 为快捷键的宏定义。
xv: 奇葩软件,界面像 xemacs,每太多尝试。
mcomix: 看漫画的软件,类似 windows 下的 mangameeya 与 comicsview,属于专用王道软件,没有编辑功能。
最后我就选用了 gthumb 为主力,辅以 mcomix。
图片编辑器我装了 gimp,传说中 linux 下的 photoshop,不过我目前没有 P 图的兴致,所以也没怎么试。
截图器又可以好好说说了,又是一个难以寻觅佳软的活儿。
scrot: 命令行的强软,绑定快捷键以后非常高效,但是缺点是不支持子窗口控件截图。
gscreenshot:scrot 的壳,而且非常地难看,一点儿用没有……
ksnapshot-git: 功能不错但依赖繁琐,装好以后还一个劲儿的报错。
shutter: 很重,插件过多,但是功能确实非常强大,支持窗口子控件截图,还能得到窗口标题作为文件名 (目前选中此物使用中)。
6. 字体配置
不知道多少人不敢安装轻量级桌面的原因是怕配置字体,至少我就是一个。linux 下字体配置的问题那简直就是刀山血海,引无数好汉败阵而逃…… 凡是自配置桌面能把字体美化这一点折腾到极致的,在我眼里都是英雄。我这里只是退而求其次,不求美化,只是顺眼而已。其实我也没干什么,只不过发现了一个神站点,文泉驿的在线字体配置页【linux 用户猛击这里】。泪流满面啊,TVT,终于可以自己决定字体替换顺序了,还把 sans、serif、mono 分的那么清清楚楚,感激涕零啊,TVT。下面是我机器上一共手动安装的字体一览,全部装自 yaourt。
$ yaourt -Qs "wqy|ttf"
extra/sdl_ttf 2.0.11-1
A library that allows you to use TrueType fonts in your SDL applications
extra/ttf-arphic-ukai 0.2.20080216.1-3
Kaiti (brush stroke) unicode TTFonts
extra/ttf-arphic-uming 0.2.20080216.1-3
CJK Unicode font Ming style
extra/ttf-bitstream-vera 1.10-8
Bitstream vera fonts
extra/ttf-dejavu 2.33-1
Font family based on the Bitstream Vera Fonts with a wider range of characters
local/ttf-ms-fonts 2.0-9
Core TTF Fonts from Microsoft
extra/ttf-sazanami 20040629-7
Japanese fonts
community/wqy-bitmapfont 0.9.9-8
A bitmapped Song Ti (serif) Chinese font
local/wqy-microhei 0.2.0_beta-2
A Sans-Serif style high quality CJK outline font.
community/wqy-zenhei 0.9.45-2
A Hei Ti Style (sans-serif) Chinese Outline Font.
7.PDF 阅读器
同样我也试了很多款,列举如下
apvlv: 貌似挺流行的 vim 风 pdf 阅读器,但是似乎 ABS 里那个对中文支持不太好……
ePDFViewer:LXDE 官方 wiki 推荐的 PDF 阅读器,但是俺无数次被 “装载……” 搞到郁闷。
xpdf: 这个大概就属于重量级软件了,一个字,卡,这下我算是搞懂了 x 开头的软件都是一个风格的灰色界面。
mupdf: 目前觉得最快的 pdf 阅读器了,界面像个看图器,什么都没有。快捷键挺多的,不过还算很方便。
zathura: 自动保存上次打开的页面这一点挺方便的,操作风格类似 vim,熟悉 vim 的人可以试试。
然后说点儿 mupdf 操作相关,翻译自 man mupdf
h, j, k, l: vim风,依次左、下、上、右方向滚动页面(如果可以滚)
+, -:放大或者缩小
w:缩放窗口大小以适合图像
r:重新载入文件
. pgdn right space:下一页
, pgup left b:上一页
<, >:向后、向前跳翻十页
m:为本页做一个书签(重启后无效)
t:跳回上一个书签。
[0-9]m:把本页存入指定的0-9号书签寄存器。
[0-9]t:读取指定的0-9号书签寄存器里的书签并跳往该处。
123g:跳到123页。
/:字串查找。
n, N:查找下一个。
c:关闭/开启彩色显示。
8.PS1
应要求贴个神 PS1……
获取分支名的函数……
function find_git_branch {
local dir=. head
until [ "$dir" -ef / ]; do
if [ -f "$dir/.git/HEAD" ]; then
head=$(< "$dir/.git/HEAD")
if [[ $head == ref:\ refs/heads/* ]]; then
git_branch=" ${head#*/*/}"
elif [[ $head != '' ]]; then
git_branch=' (detached)'
else
git_branch=' (unknown)'
fi
echo $git_branch
return
fi
dir="../$dir"
done
git_branch=''
}
目前在用的,标题栏和提示符都显示一大串东西……
PS1='\[\e]2;[\u @ \h]─[\A]─[\w]─[\!] $(find_git_branch)\a\]\n\[\e[0;36m\]┌─[\[\e[1;35m\]\u\[\e[1;34m\] @ \[\e[1;35m\]\h\[\e[0;36m\]]─[\[\e[1;34m\]\A\[\e[0;36m\]]─[\[\e[1;34m\]\w\[\e[0;36m\]]─[\[\e[0;31m\]\!\[\e[0;36m\]] \[\e[1;34m\]$(find_git_branch)\n\[\e[0;36m\]└─[\[\e[0m\]\$\[\e[0;36m\]] \[\e[0m\]'
仅标题栏显示一大串东西,提示符 [$]……
PS1='\[\e]2;[\u @ \h]─[\A]─[\w]─[\!] $(find_git_branch)\a\e[0;36m\][\[\e[1;37m\]\$\[\e[0;36m\]] \[\e[0m\]'
仅提示符显示一大串东西,标题栏为默认……
PS1='\n\[\e[0;36m\]┌─[\[\e[1;35m\]\u\[\e[1;34m\] @ \[\e[1;35m\]\h\[\e[0;36m\]]─[\[\e[1;34m\]\A\[\e[0;36m\]]─[\[\e[1;34m\]\w\[\e[0;36m\]]─[\[\e[0;31m\]\!\[\e[0;36m\]] \[\e[1;34m\]$(find_git_branch)\n\[\e[0;36m\]└─[\[\e[0m\]\$\[\e[0;36m\]] \[\e[0m\]'