Bash completion: ignore dot-files, inputrc: 配置组合键

来源:互联网 发布:网络神偷9.1破解版 编辑:程序博客网 时间:2024/06/08 09:49

Completion filename


在linux 下总是使用Tab键的自动补全功能,但是的遇到目录下的隐藏文件时,使用起来就有些麻烦了,如何让Tab忽略那些隐藏目录呢??


let's suppose I have a directory structure like this:

src  + .svn  + de     + .svn     + renew       + .svn       + agent         + .svn         + settler

Java project using svn. What I'd like to do is: cd s<tab><tab><tab><tab><tab> instead of cd s<tab>d<tab>r<tab>a<tab>s<tab>. Iow: Make bash ignore the .svn directories. Is this possible?

1.[或许需要开机重启]

Try adding the following to /etc/inputrc

set match-hidden-files off

2.[已验证] 

如何只是忽略.svn目录,可以使用

export FIGNORE=.svn

Make bash tab completion ignore .svn directories


It’s actually really easy to fix this:
export FIGNORE=.svn
$FIGNORE is just a colon-separated list of suffixes to ignore when doing tab completion.


Appendix -- inputrc 

http://oss.org.cn/ossdocs/gnu_linux/lfs/blfs-1.0/postlfs/inputrc.html

/etc/inputrc

Inputrc 用来处理键盘映射表。这个文件在启动的时候被一个bash和其他shell使用的库,readline,调用。

阅读info bash -- 小节: Readline Init file 和info readline可以获得更多信息。这个rc文件可以作很多事情。

接下来的是一个基本的/etc/inputrc,其中有对各个配置参数的解释。

请注意这些注释不能inputrc中的命令处作在同一行。


# /etc/inputrc的开始# 确认我们不会在同一行中输出所有的东西。set horizontal-scroll-mode Off# 开启8比特输入set meta-flag Onset input-meta On# 禁止对第8个比特过滤set convert-meta Off# 在显示时保存第8个比特set output-meta On# 关闭可视和声音提示set bell-style none# 下面的内容给出了在readline# 函数第一部分中包括的换码符序列的值"\eOd": backward-word"\eOc": forward-word# 在控制台使用"\e[1~": beginning-of-line"\e[4~": end-of-line"\e[5~": beginning-of-history"\e[6~": end-of-history"\e[3~": delete-char"\e[2~": quoted-insert# xterm使用"\eOH": beginning-of-line"\eOF": end-of-line# /etc/inputrc结束

全局的设定值包含在 /etc/inputrc中。 每个用户自己的值设定于~/.inputrc。 ~/.inputrc 若存在,则会忽略全局设定值。前面bash设定中缺省调用 /etc/inputrc 如果你想让系统同时使用两个设定,可以把一个 .inputrc放到/etc/skel 中给每一个新建立的用户使用。

http://www.cppblog.com/mydriverc/archive/2009/10/09/98204.html

先用cat查看组合热键的ASCII字符: 

<按下热键,如:Ctrl-Alt-H>

看到了什么? ^[^H 对不对? 

同理可以得知其他组合热键对应的ASCII字符, 有一些组合热键像Ctrl+Alt+D/Q/Z/C/S/M/J/U/I/E好像不能使用,不过没关系,可用的热键有15个左右 

然后修改/etc/inputrc 或 ~/.inputrc,向里面添加组合热键的宏定义,偶的如下:

"^[^G":"gaim & &>/dev/null && disown\C-M" 
#按Ctrl-Alt-g在当前shell打开gaim, 并脱离该shell独立运行,即:即使你退出了该shell, gaim也不会关闭字符输入方法: 在vi的插入模式下, ^[是先按Ctrl-V, 然后按ESC,[^G是先按Ctrl-v, 然后按Ctrl-H,其他的与此类似 

 "^[^H":"vi /etc/httpd/conf/httpd.conf\C-M" 
  # Ctrl-Alt-h 打开vi编辑器编辑apache的配置文件 
  
  "^[^L":"stardict & &>/dev/null && disown\C-M" 
  # Ctrl-Alt-l ->> 运行星际译王(l->look up查询的意思) 
  
  "^[^O":"soffice & &>/dev/null && disown\C-M" 
  # Ctrl-Alt-o ->> 打开Openoffice 
  
  "^[^P":"opera & &>/dev/null && disown\C-M" 
  # Ctrl-Alt-p ->> 大名鼎鼎的浏览器Opera 
  
  "^[^X":"xmms & &>/dev/null && disown\C-M" 
  
  测试一下: 
  su - 
  <Press Ctrl-Alt-X>

例如:

$ vi ~/.inputrc"^[^O":"cd ~/apache/tomcat"

但按下ctl+alt+o时,命令行就会自动弹出上面的命令,但并没有自动执行。所以,如何配置,让他自动执行呢??

0 0
原创粉丝点击