如何在tcsh终端实现基于预定义列表的单词替换与循环补全?
在tcsh中实现预定义短语的补全与循环切换
完全可以实现你要的功能,tcsh自带的补全系统支持从自定义文件加载候选列表,还能通过按键循环切换补全项,具体操作步骤如下:
1. 准备预定义服务器列表文件
先创建一个存储服务器地址的文件,比如~/.ssh/server_list,每行写一个服务器名:
server1.example.com server2.example.com serv-prod-01 serv-test-01
2. 配置ssh命令的补全规则
在你的~/.tcshrc配置文件中添加以下内容,让ssh命令的参数从刚才的列表文件中读取候选:
# 为ssh命令配置补全候选,从server_list文件读取 complete ssh 'p/*/`cat ~/.ssh/server_list`/'
3. 绑定循环切换补全项的按键
tcsh支持通过按键循环切换补全候选,用bindkey命令将<Ctrl+n>和<Ctrl+p>绑定到切换下一个/上一个候选的功能:
# 绑定Ctrl+n到下一个补全候选 bindkey '^N' complete-next # 绑定Ctrl+p到上一个补全候选 bindkey '^P' complete-prev
4. 开启自动补全列表显示(可选)
如果希望补全时自动列出所有候选,方便查看当前可选的服务器,可以添加:
set autolist
测试效果
配置完成后,执行source ~/.tcshrc让配置生效,然后:
- 输入
ssh serv<Tab>,tcsh会自动补全第一个以serv开头的服务器(比如serv-prod-01) - 按下
<Ctrl+n>,会切换到下一个匹配的候选(serv-test-01) - 按下
<Ctrl+p>则会切回上一个候选
如果输入的前缀没有匹配项,按下Tab后会列出所有服务器列表,同样可以用<Ctrl+n>/<Ctrl+p>循环切换。
内容的提问来源于stack exchange,提问作者BAdhi
相关产品推荐
相关产品推荐

