配置一个好用的terminal

效果图

terminal.png

windows的cmd不够好看,也不够好用,powershell感觉又太复杂了,而且有时候想在windows下使用linux中比较好用的程序,这就需要cygwin了。

cygwin的安装十分方便,只需要从官网下载最新的安装包即可,添加好163的镜像源,在软件包选择界面,除了默认选择的程序,需要将wget和curl选上,方便随后要配置的apt-cyg shell程序的使用。

安装完之后再想添加新程序,一是可以再次运行安装程序添加,二是利用apt-cyg这个shell脚本,在命令行中安装程序,就像在debian系的linux系统中使用apt-get命令一样方便。
作为一个软件包管理工具,基本原理肯定是将软件包下载下来,然后按照一定规则解包到系统中。apt-cyg可以使用的下载工具有三个,lynx、wget和curl,然而cygwin在第一次默认安装的时候,并不会选上wget和curl,而lynx似乎已经不在官方支持的软件源中了。将apt-cyg脚本移动到/bin目录就可以使用。

cygwin中默认使用的shell终端就是mintty,但是不经过配置的mintty很是丑陋,直接附上我的配置文件。新建或者修改个人文件夹下的.minttyrc文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
BoldAsFont=yes
Font=Meslo LG L DZ for Powerline
FontHeight=11
Transparency=medium
CursorType=line
Term=xterm-256color
BellFlash=no
ForegroundColour=205,205,205
BackgroundColour=39,39,39
CursorColour=162,193,224
Black=0,0,0
BoldBlack=33,33,33
Red=242,142,93
BoldRed=249,204,181
Green=93,242,142
BoldGreen=181,249,204
Yellow=192,242,93
BoldYellow=226,249,181
Blue=142,93,242
BoldBlue=204,181,249
Magenta=242,93,192
BoldMagenta=249,181,226
Cyan=93,192,242
BoldCyan=181,226,249
White=221,221,221
BoldWhite=247,247,247
FontSmoothing=full
AllowBlinking=yes
Locale=zh_CN
Charset=UTF-8
Scrollbar=none
OpaqueWhenFocused=no
FontWeight=400
RightClickAction=paste
ClicksTargetApp=no
ClickTargetMod=alt
ScrollMod=alt
Columns=121
Rows=34

基本上所有的终端程序,在关闭窗口后都无法在下次启动后依旧保存工作情况,比如有的时候ssh正连到服务器上突然手残把终端给关了,再打开终端就只能重新连接上去把之前的连接给干掉。使用tmux就没有这个问题了,更赞的是通过配置还能将终端的窗口进行分割。
然而刚装好的tmux也是不好看的,我所使用的配置文件是这个,怎么用看下readme就懂了。
然而这个配置所使用的实时显示电量的功能对我来说没有什么用,而且十分占cpu,为了实时检测电量,作者用了好多脚本,在任务管理器中可以看到大量bash.exe在不断的启动和关闭。
好在作者提供了个人配置,可以在tmux.conf.local中关闭电量监控,还可以自定义状态栏的图标、颜色,相对于官方的配置文件来说要方便一些。

这个配置每次都得自己开启鼠标支持,虽然作者写好了函数,每次开启只需要两步,但是既然要使用tmux自然是希望能随着终端的启动自动运行的,而开启鼠标支持的操作完全可以集成在tmux的启动脚本中,附上我个人的tmux启动脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
session="yuzunzz"
tmux has-session -t $session
if [ $? = 0 ];then
tmux attach-session -t $session
exit
fi

tmux new-session -d -s $session -n home
tmux split-window -t $session:1 -v

tmux select-window -t $session:1
tmux send -t $session:1.1 fish C-m
tmux send -t $session:1.1 "cut -c3- ~/.tmux.conf | sh -s _toggle_mouse" C-m
tmux send -t $session:1.1 clear C-m
tmux attach-session -t $session

只要能在启动时运行到这些命令就行,我是将启动脚本存在一个.sh文件中,再在.bashrc中运行这个文件。

这个配置文件中底部的状态栏实现了powershell的效果,但是并没有依赖powershell,然而我需要别的程序(vim)也使用上powershell,所以还是要装的。
pip安装上powershell之后,对于vim来说需要在.vimrc文件中加上一段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 你的powerline安装路径
set rtp+=/usr/lib/python2.7/site-packages/powerline/bindings/vim

" These lines setup the environment to show graphics and colors correctly.
set nocompatible
set t_Co=256

let g:minBufExplForceSyntaxEnable = 1
python from powerline.vim import setup as powerline_setup
python powerline_setup()
python del powerline_setup

if ! has('gui_running')
set ttimeoutlen=10
augroup FastEscape
autocmd!
au InsertEnter * set timeoutlen=0
au InsertLeave * set timeoutlen=1000
augroup END
endif

set laststatus=2 " Always display the statusline in all windows
set guifont=Inconsolata\ for\ Powerline:h14
set noshowmode " Hide the default mode text (e.g. -- INSERT -- below the statusline)

在我配置的terminal中,上半部分所使用的终端程序为fish,配上powershell,下面部门和新建的窗口则依旧使用默认的bash。对于fish来说,要集成使用powershell,需要在.config/config.fish中添加
set fish_function_path $fish_function_path "/usr/lib/python2.7/site-packages/powerline/bindings/fish"
而默认的bash也可以自定义提示符的格式,我自己的配置如下,具体可以搜索学习后参照更改。
export PS1='\[\e[38;5;189m\]\u™\[\e[0m\]\[\e[38;5;231m\]@\H \[\e[0m\] \[\e[1;32;1m\]\w\[\e[0m\] \$ '
同样需要放置在bash的启动配置中,这样每次新建bash的时候都能生效。

使用powerline还需要使用特别的字体,在官方的github上有提供,推荐我所使用的这个字体,另外选择这种字体的时候可能点击确认按钮会弹窗告知无法使用,其实只需要应用,再把设置窗口关掉就行了,直接在配置文件中更改也可以。

Over