Bash 将package扩展到package.json,使用制表符完成,甚至使用package-lock.json
我曾经是一个非常快乐的node.js小开发者。我没有意识到我每天会运行Bash 将package扩展到package.json,使用制表符完成,甚至使用package-lock.json,bash,shell,tab-completion,Bash,Shell,Tab Completion,我曾经是一个非常快乐的node.js小开发者。我没有意识到我每天会运行vim package.json,但显然这是很多次。我以后再谈 通常,当我想要编辑package.json时,我会键入vim packTabEnter或者vim pacTabEnter。这是此时的肌肉记忆 自npm@5,引入了包锁.json文件。这意味着 vim pacTabEnter 打开文件包。这将导致大量额外的击键,并且工作流已更改为 vim pacTabEnter:qvim软件包。TabEnter 结果是浪费了大量的击
vim package.json
,但显然这是很多次。我以后再谈
通常,当我想要编辑package.json
时,我会键入vim pack
TabEnter或者vim pac
TabEnter。这是此时的肌肉记忆
自npm@5,引入了包锁.json
文件。这意味着
vim pac
TabEnter
打开文件包
。这将导致大量额外的击键,并且工作流已更改为
vim pac
TabEnter:qvim软件包。
TabEnter
结果是浪费了大量的击键、时间、挫折、眼泪和对软件以外的职业的思考
如果文件已经存在,即使package lock.json也存在,那么有没有办法让vim或shell中的completion将pac
或pack
扩展到package.json
?这可能是vim的完成,也可能只是一般的shell。大概我永远都不需要编辑或检查package lock.json
,这样在完成任何操作时都可以忽略该文件。我还想确保compltion不会在不存在的情况下展开package.json
。我也不希望这影响任何其他文件,例如,如果circle.yml
和circle bak.yml
都存在,它不应该将circle
选项卡扩展到circle.yml
。。。我只对package.json
感兴趣
我尝试了alias vimp=“vim package.json”
,但我对此不满意,因为pEnter使用同一个手指,所以打字很难。我只想让完成像我习惯的那样工作。您可以为vim
制定如下自定义规则:
_vim() {
local cur
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
if [[ $cur = pac* && -f package.json ]]; then
COMPREPLY=( package.json )
return 0
fi
}
complete -F _vim vim
如果您在点击Tab之前键入的内容超过了pac
,并且存在package.json
,那么这将自动完成到package.json
。该行为仅对vim
vim pac的参数启用。tab Enter
应该可以正常工作。@hek2mgl这稍微好一点,但仍然不是我想要的。我希望能够vim pac tab Enter
将您的别名设置为vimpa(ck?
?@ExplosionPills这是您是否真的想要的问题:)。您可以更改bash完成文件,但这将是系统范围内的。或者,在每次开始处理项目时,都可以获得自定义bash完成。如果可以的话,我可以告诉你怎么做。或者,您可以创建一个package.json的符号链接,将其命名为foo
,并使用vim foo
。PS:刚才看到了创建别名的建议。这可能是最好、最简单的解决方案。