[分享]终极Shell——Zsh

仅仅用于软件推荐,不适合发求软件或软件使用问题方面的贴子
回复

心动VS行动?

行动
87
44%
心动
21
11%
以静制动
91
46%
 
总计票数: 199
rediscover
帖子: 3173
注册时间: 2010-01-13 23:26

Re: [分享]终极Shell——Zsh

#151

帖子 rediscover » 2011-04-14 0:20

已经深入Zsh门下,表示用Bash不胜其烦。但是如果系统坏了,有个ash的root shell也是好的。 :em06
Here I am.
Ubuntu 桌面培训 - 全中文官方文档,含汉化截图,提供PDF
头像
fang0319
帖子: 628
注册时间: 2011-01-05 14:21

Re: [分享]终极Shell——Zsh

#152

帖子 fang0319 » 2011-04-14 8:33

bash 还没有学好呢,呵呵
O(∩_∩)O
jemy.zhang
帖子: 37
注册时间: 2007-02-19 16:07

Re: [分享]终极Shell——Zsh

#153

帖子 jemy.zhang » 2011-09-24 23:07

果然用起来舒服啊,看来我也要直接替换了
kardinal
帖子: 750
注册时间: 2006-03-19 11:39

Re: [分享]终极Shell——Zsh

#154

帖子 kardinal » 2011-10-21 21:16

maniux 写了:有一個問題:

我用的是gentoo,emerge的時侯,如果想安裝特定版本,bash裏就:

代码: 全选

emerge =eix-0.17.0
但是在zsh裏,這麽輸入,就會:

代码: 全选

zsh: eix-0.17.0 not found
那=不認。

這個怎麽解決?
这种情况一般要在前面加个脱字符吧 \ ,因为zsh把 = 解析成独有的语法了,具体解析成什么我也懒得去查了,现在用eshell了……
kardinal
帖子: 750
注册时间: 2006-03-19 11:39

Re: [分享]终极Shell——Zsh

#155

帖子 kardinal » 2011-10-21 21:31

lgxwqq 写了:
wen1987 写了:在 /bin 中建议个新文件在 zsh 中不会补全,要重启 zsh 才行,bash 和 fish 中都可以的,郁闷。

还有 apt-get 的不全速度太囧了,有办法改进吗?
同问lz这个问题...新安装一个软件之后确实无法tab补全,只能把命令完整的敲进去....是确定要rehash吗?

还有就是有时候比如说/etc/init.d/po [TAB]这个时候tab,但是/etc/init.d/中并没有po开头的文件,这时候按照lz的配置文件出来的结果就是会自动换成其他文件,但是会报一堆错,

代码: 全选

all_labels:compadd:39: invalid pattern character `('
_path_files:407: invalid pattern character `('
_path_files:compadd:458: invalid pattern character `('
_path_files:407: invalid pattern character `('
_path_files:compadd:458: invalid pattern character `('
_path_files:409: invalid pattern character `('
_path_files:409: invalid pattern character `('
就是这样子,有点难看, :em06

叫lz大哥吧 :em02
sed -i 's/lz/大哥/g'

不知道这个是哪个配置决定的,
报歉……这么长时间才回复……
不过一般我不太泡论坛的,有什么问题可以直接发邮件我 [email protected]
可能有时候很长时间也不收邮件,但是最多也就是一二个月而已 :em06

先从简单的回答
新安装软件确实要rehash的

包管理软件一向是补全最慢的,本来查询软件包数据库就是比较耗时的操作,而有些内容可能联网才能查询
apt可能比其它的又要慢一点,我用pacman,补全速度还是可以接受的
这个可以自己改改补全字典来优化一下的吧,不过谁也不会没事就整天 apt,所以一般也不太花精力去优化这条

最后一个应该不是配置文件的问题,因为配置文件里面没有 compadd 这个命令
我觉得可能是你安装的 zsh 里面有什么文件损坏之类的……好像不太可能……好吧,我换个靠谱点的
其实有的时候,打开编辑器,在shell脚本里面随便改动个把字符,就可能出现上面的结果,它对格式要求太严格了,而且它报错也很不靠谱,正常情况下难以追踪……真是操蛋的玩意儿
这类问题不太好搞,重装一次先,配置文件也重新覆盖一遍
上次由 kardinal 在 2011-10-22 1:31,总共编辑 2 次。
kardinal
帖子: 750
注册时间: 2006-03-19 11:39

Re: [分享]终极Shell——Zsh

#156

帖子 kardinal » 2011-10-21 21:35

adagio 写了:我太感动了,天意弄人啊,这个死老天为什么让我这么久才看到这个帖?
不管有多少楼,我都要在这里留下我“到此一游”的证据,就算立马封了我的ID,我也要说:“鸡屎,我爱死你了!”


用了LZ的配置文件,当我第一次颤抖着、轻轻的按下一个TAB键的时候……,天哪!我、我、我这是怎么了?为什么……,为什么我的眼眶会突然模糊!突然潮湿了?那突然出现的cd ,那突然出现的当前目录列表……,喔不不,还有当我再一次怯生生的按下TAB的时候,那个在目录名之间不断跳动的高亮色块,那不断在命令行补出来的完美路径……,这这这,这太贴心啦! :em21

我已经很久没有这样激动了,最近一次是什么时候?
嗯……好像是3年前,当我第一次穿上我给我老婆买的T恤的时候
那最近一次流泪又是什么时候?
好像是十几二十年前看《哪吒闹海》的时候

鸡屎!我要说这是我这辈子拉过最爽最痛快的一种屎!

LZ!如果那个死老天能给我再来一次的机会的话,我要对你说:“我顶!我狂顶!!我每天都来顶!!!”,如果非要在这前面加上一个条件的话,我要说:“沙发啊!为什么我没能坐上沙发!!老天瞎了眼啊!!!”

:em21 :em21 :em21
哥们你太夸张了…… :em06

我现在发现,不光是 tab 可以定制一下,其它的键也是可以的
这些东西是我现在用的 eshell 上的,本来也没打算弄到 zsh 上,不过看你这么给力,我试试能不能弄到 zsh 上
tab 是补全,如果是空行的话,自动填入 cd 和空格 ,如果你再输入一个空格然后 tab 的话,就变成 cd -0,接着你 tab 一次,这个数字加一次

空行 ret 直接 ls ,如果是 ..... 或者是 cd .......的话,它会自动扩展成 cd ../../../../.. 的形式。不过如果返回的上级目录太多的话 ........ 也是挺麻烦的

这个时候可以用空行 C-w ,一次向上一个目录,如果不是空行的话,则一下删一个单词,如果标记了区域的话,则删掉标记的内容

spc 比较简单,空行的话直接填入 switch-to-buffer ,不过在 eshell-cmpl 里面定义了 它的补全方式。如果你多输入空格再补全的话,它会填入 \* ,用于补全临时 buffer。同学们可以研究下它的补全的写法,自己写其它命令的补全,其实是很简单的。
kardinal
帖子: 750
注册时间: 2006-03-19 11:39

Re: [分享]终极Shell——Zsh

#157

帖子 kardinal » 2011-10-21 22:47

代码: 全选

user-ret(){
	case $BUFFER in
	    "" )
	        BUFFER="ls"
	        zle end-of-line
	        zle accept-line
	        ;;
        *\.* )
            BUFFER=${${BUFFER//\./\/\.\.}/\/\.\.\//}
	    zle end-of-line
            zle accept-line
            ;;
        * )
            zle accept-line
            ;;
        esac
            }

zle -N user-ret
bindkey "C-x" user-ret	
ok,好长时间不用了,也不知道回车键用什么表示的,就用 C-x 临时代替
配第二项的表达式可把我配晕了,数了半天才数对……不要再有下次了
像什么空行到上一级目录什么的实在是没有任何技术含量可言,我相信你能搞定 :em09
kardinal
帖子: 750
注册时间: 2006-03-19 11:39

Re: [分享]终极Shell——Zsh

#158

帖子 kardinal » 2011-10-22 0:13

google 基本不能用,用百度也找不到有用的信息……
tmd ,这是肿么了肿么了,我只是想要把一个功能绑到回车键上而已

……用 vim 或者 emacs 应该可以用插入控制字符的方法直接插入
凑合用吧

上面的表达式还是有点问题,如果只有一个点的时候它总是给替换成 ../ 要不就是 /.. 我也懒得数了

下面这个稍微正常点,两个以上的点都可以正常处理……一个点的话会吞掉……不过一般用一个点的时候不多

代码: 全选

${${BUFFER//\./\.\.\/}%\.\.\/}
kardinal
帖子: 750
注册时间: 2006-03-19 11:39

Re: [分享]终极Shell——Zsh

#159

帖子 kardinal » 2011-10-22 1:24

fang0319 写了:bash 还没有学好呢,呵呵
zsh 比 bash 用起来要简单…… 似乎因为是 bsd 协议的,和 gpl 不兼容,所以不能默认安装
kardinal
帖子: 750
注册时间: 2006-03-19 11:39

Re: [分享]终极Shell——Zsh

#160

帖子 kardinal » 2011-10-22 20:49

:em06 原来是 “\r” ,本来新建了一个文件,在里面改完了 source 就不行,能查的都查遍了,不知道什么原因。今天没事把那段拷到 .zshrc 里面,竟然可以用了……
不过还是有问题,我几乎又重新写了一遍……shell script真是操蛋的玩意
https://github.com/ran9er/desert/blob/master/zshrc

代码: 全选

user-ret(){
    if [[ $BUFFER = "" ]] ;then
        BUFFER="ls"
        zle end-of-line
        zle accept-line
    elif [[ $BUFFER =~ "^cd\ \.\.\.+$" ]] ;then
          BUFFER=${${BUFFER//\./\.\.\/}/\.\.\//}
        zle end-of-line            
        zle accept-line
    else
        zle accept-line
    fi
}
zle -N user-ret
bindkey "\r" user-ret
上次由 kardinal 在 2011-10-24 15:14,总共编辑 1 次。
kardinal
帖子: 750
注册时间: 2006-03-19 11:39

Re: [分享]终极Shell——Zsh

#161

帖子 kardinal » 2011-10-22 21:13

现在总结一下:
(下划线表示空格,方括号表示需要手动输入,=> 表示 tab 一下,>>表示回车,<<表示执行,希望你没有晕)

代码: 全选

>> ls <<
[_] => !?
=>  cd_ => (dir)
cd_[_] => cd_~ => (named dir)
cd_[-] => (cd history)
cd_[--] => cd_+[-] => cd_-[-] => cd_+[-] ......
cd_[...] >> cd_../../ <<
cd_[....] >> cd_../../../ <<
cd_[.....] >> cd_../../../../ <<
..................................
Chanux
帖子: 45
注册时间: 2011-03-23 19:40

Re: [分享]终极Shell——Zsh

#162

帖子 Chanux » 2012-08-29 22:05

一直从第一页翻到末页,看完帮顶并Mark之。
头像
momova
帖子: 3381
注册时间: 2007-07-11 21:43
系统: archlinux
来自: 东江边

Re: [分享]终极Shell——Zsh

#163

帖子 momova » 2012-11-01 10:18

# cd ~ 补全顺序
#zstyle ':completion:*:-tilde-:*' group-order 'named-directories'
#'path-directories' 'users' 'expand'
#}}}
这一行出错,提示:
command not found: path-directorie
然后,随便哪个目录cd:
>>>cd 127
Usage: file [-bchikLlNnprsvz0] [--apple] [--mime-encoding] [--mime-type]
[-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
file -C [-m magicfiles]
file [--help]
64 cd
64 cd
chpwd:12: command not found: histfile
这是啥情况呢
我来了,我看见了,我征服了!
求勾搭,不管饭。
xep007
帖子: 871
注册时间: 2006-01-03 20:44

Re: [分享]终极Shell——Zsh

#164

帖子 xep007 » 2012-11-01 10:35

看看吧。这么优秀,相信以后会成为系统默认吧。
头像
momova
帖子: 3381
注册时间: 2007-07-11 21:43
系统: archlinux
来自: 东江边

Re: [分享]终极Shell——Zsh

#165

帖子 momova » 2012-11-01 21:26

xep007 写了:看看吧。这么优秀,相信以后会成为系统默认吧。
arch的最新版本安装的时候已经是了
我来了,我看见了,我征服了!
求勾搭,不管饭。
回复