这个问题是关于“通过终端做所有事情”的心态。我发现浏览文件系统效率非常低。我的典型工作流程是:
我想去~/foo/bar/boo/far/my/project/file.txt
…
cd ~
cd foo/b...???
# okay, I won't quite remember what bar was called
# let me just go to "foo" and view it
cd foo
ls
# Oh, it was bar
cd bar
# Now, what was after bar again?
ls
# boo, that is it.
cd boo
pwd
ls
cd for
cd my
# ERROR: my not found
ls
# at this point I'm kinda lost where I am
pwd
cd ..
cd far
cd my
cd pro<tab>
cd proj<tab>
cd proje<tab>
# wtf am I in the wrong directory again?
ls
# notice there is a directory called projectiles, that's why it doesn't work
cd project
vim fi<tab>
现在我想去 ~/foo/bar/boo/settings.txt
cd ../../..
vim set<tab>
# notice I'm editing a completely different file
# wtf
# :q
ls
# oh I'm in the wrong place
pwd
cd ..
vim set<tab>
# :q
# Done!
在完美的世界中,我可能只需要输入vim ~/foo/bar/boo/far/my/project/file.txt
,但在现实世界的工作流程中,这相当于只从第 0 行到最后一行输入程序的源代码,而不会丢失任何字符。这就是现在的工作方式——你需要某种互动,这是一个循序渐进且混乱的过程。使用cd
,ls
和pwd
对此对我来说效率非常低。
有没有更好的办法?我错过了什么吗?
答案1
有很多不同的选项可供选择来帮助解决这些问题:
使用别名
- 既适用于常用目录,例如,
alias q='cd /home/durrantm/Dropbox/94_2015/work/code/ruby__rails/ruby/ruby_quiz'
也适用于常用命令。当您每天打字一百次时,甚至alias p=pwd
可以让生活变得更轻松。pwd
您会注意到单字母别名是我最喜欢的一个技巧。
- 既适用于常用目录,例如,
自定义您的 PS1 提示(搜索 PS1 提示)以帮助显示您所在的位置。这是我的: 特征:
- 显示前 3 个和后 2 个目录(当超过 5 层时,中间用下划线表示)
- 是否有回车符,因此实际提示位于新行
- 使用颜色来表示不同的信息
- 当我在 git 项目中时显示我的 git 分支。
- 适用于 Ubuntu 和 OSX(我每天都使用)
- 显示日期、用户和机器
在 vim 中使用 ctrl-p,如 muru 所示
安装并使用自动跳转(https://github.com/wting/autojump)来记住您访问过的命令行目录。这可能非常适合您。
命令行模糊查找器也可能适合您的风格 - 更多信息请参见https://github.com/junegunn/fzf
使用 z-shell,它往往有更多内置支持和更好的选项,例如 cdpath(Z Shell 的菜单格式目录完成)和 Z Shell 的 autocd 选项,
答案2
如果您使用vim
,请考虑使用CtrlP 插件。第一次在目录上运行时可能需要一段时间来索引文件,但之后速度很快。它匹配整个路径,因此只要您准确地记住路径的某些部分,它就非常有用。这是我在以下位置查找文件/usr/share
:
我/usr/share
有超过 150000 个(根据 178038 个常规文件find
)文件,所以我将let g:ctrlp_max_depth = 10
和添加let g:ctrlp_max_files = 0
到我的.vimrc
.第一次运行时索引需要几秒钟。