最大化您的终端生产力

2017-10-01 22:43


本周,我们刚刚从社区发布了一些很棒的bash别名,我想写更多关于最大化您的终端生产力的信息。我已经教过很多开发人员,终端经常是我看到的地方,许多伟大的开发者(比我好多了)可以改进并获得一些生产力和更好的工具。
我在Windows XP机器上开始我的开发工作,学习PHP 4,XHTML,CSS和JavaScript。我甚至不知道什么是bash,更不用说当时使用了一个终端。我认为我的经验范围包括运行ipconfig检查我的网络设置。
当我观看原始的Ruby on Rails演示视频时,这一切都改变了。在这个视频中,我的头脑被MVC模式,Ruby和Rails所吹捧。我还了解了我最喜欢的两种工具:TextMate 1(沉默的时刻)和Unix shell。
我真的买了一台Mac 所以我可以使用TextMate,这是当时的好处。我仍然很伤心,Sublime已经超过了这位光荣的编辑,我很高兴再次使用这一天。我仍然认为它有一个未来,但是在我看来,周围的社区已经大大缩小了。但我离题。
与TextMate一起,我开始使用终端来执行创建文件,从服务器复制文件,以及使用ack和grep查找内容。
快进十几年,今天我可能会花费大约20-25%的时间在终端(可能或多或少)。我了解到,我的终端工作流程中自动化程度越高,解锁效率就越高。创建我的dotfiles使我能够在所有设备和服务器上拥有相同的熟悉的终端环境。
无论使用哪种机器,我的终端设置在我的Ubuntu超级本,数字海洋和我的Mackbook Pro上都差不多。我通过将我的dotfiles提取到GitHub上的一个项目中,学到了一点,我保留版本。他们是我不断改进的工具。我不建议你用我的;您将通过版本自己的方式获得如此丰富的经验!

我是黑客

虽然我会说我知道我的方式在终端上大多数,我仍然认为自己中间 - 我不是一个专家。我用oh-my-zsh作为基础,我的调整在上面。
我喜欢把我的Zsh视为终端的框架。就像像Laravel这样的网络框架可以让您一大堆免费开箱即用的很好的惯例,哦,我的Zsh提供了很好的默认值和一堆东西是免费的。

安装Zsh

当我开始与开发人员合作或配对时,我总是感到有点伤心,我注意到一个没有自定义的简单的香草终端。我不以任何方式羞辱他们,但我不得不表现出一些可以帮助的事情。最终,没有任何定制的股票壳对我来说看起来很伤心。

 
 
真的很伤心
我看到一些惊人的bash设置。一些开发人员只是坚持使用bash和手工定制。通常情况下,我花了很多时间来设置诸如git autocompletion,一个自定义的$PS1shell变量,允许我自定义提示,并围绕文件系统导航,在库存设置中对我笨重。
如果你主要是像我这样的开发者,我建议你给ZSH和哦我的Zsh一个尝试。我来到了甜蜜的主题,但我坚持强大的功能,如插件和历史完成。让我们看看其中的一些行动。

我最喜欢的终端提示和技巧

以下是我最喜欢的技巧和技巧,当我们想要了解更多关于提高终端生产力的信息时,我会向他们展示。
就终端应用而言,您可以使用内置终端。在Ubuntu上,我使用默认值。在OS XI上更喜欢iTerm2,但Hyper是另一个可以在Linux,OS X和Windows上使用的跨平台终端。

CD路径

你可能很熟悉$CDPATH。CD路径变量类似于$PATH,但它用于可以从任何路径相对更改目录(cd命令)的路径列表。您可以节省大量按键,导航到您经常使用的路径。不幸的是,您没有开箱即用的标签完成:

 
 
您可能会注意到,如果您尝试该路径上无法完成标签。现在在Z shell中查看:
 

这是你如何设置你的cdpath在.zshrc中:
cdpath=(~/Code/valet ~/Code/github)
设置cdpath后,source ~/.zshrc您可以从文件系统上的任何路径中选择 - 完成路径中的文件夹。

强大的路径扩展

如果你还在使用bash,这个功能本身就足以让你使用ZSH。以下是ZSH中路径扩展的工作原理:让我们说,我在Laravel项目中,我想从项目的根源中深入到Laravel /框架供应商的源代码中:

 
现在在bash中也是一样:
 
好的,我不打算抨击 Bash,但是我希望你能看到一些在香草终端体验之外可以使用的增压工具。

历史竣工

如果您知道要运行的命令的第一部分,或者想要循环浏览您从历史记录中运行的变体,则ZSH中的历史记录功能非常强大。哦,我的Zsh提供了共享的历史,所以你的所有终端会话(窗口和标签)将共享一个历史。
假设我想浏览我过去运行的一些手工命令:

 
要扩展历史记录,请从历史记录中输入要完成的命令,然后使用向上和向下箭头循环浏览匹配的历史记录条目。

哦我的Zsh插件

如果你使用Oh My Zsh,你可以访问一些很棒的插件。这是我的.zshrc文件中的列表:
plugins=(git cap composer phing rails rake ruby gem symfony2 bundler docker docker-compose laravel5)

命令搜索

这个提示不是Bash或ZSH的排他,但您需要在工具箱中使用。点击Ctrl+r,您可以根据您输入的内容快速搜索命令。继续点击Ctrl+r循环多个结果。最容易证明:

 

搜索历史和执行历史

通过历史搜索是另一个与使用bash shell或ZSH无关的一般提示。谦虚的history命令是一个伟大的资源,当你不记得你以前运行的令人敬畏的命令。当Ctrl+r失败时,请运行以下内容:
$ history | grep docker rmi
11214  docker rmi c6864c2e7026
注意一个数字出现在每个条目旁边的历史记录中。如果您使用感叹号,则可以重新运行该条目:
$ !11214
$ docker rmi c6864c2e7026

SSH配置

大多数这些提示围绕终端命令和导航。这个提示更多的是增加您的SSH使用率。~/.ssh/config当您需要从服务器下载文件时,在文件中组织SSH 可以节省大量的击键。我的大部分生产工作量都运行在使用Docker的Google K8机器上,但现在我需要SSH到我的个人服务器。
以下是一个SSH配置条目对我来说可能是一个例子:
Host myalias
  Hostname 123.456.38.208
  IdentityFile ~/.ssh/id_rsa
  User myuser
  ForwardAgent yes
当我需要启动SSH会话时,我可以执行以下操作:
$ ssh myalias
我的代理自动转发,我自动使用正确的用户和身份文件。它节省了一大堆烦恼,确保您使用正确的凭据。
我最喜欢使用这个配置是上下复制一个文件:
$ scp myalias:~/myfile.txt ~/Downloads/myfile.txt
$ scp ~/Downloads/myfile.txt myalias:~/myfile.txt
如果以前使用scp过,您可以了解别名如何使该命令易于键入和正确使用。我强烈建议您阅读并尝试使用SSH配置。

终端主题

我认为使用相同的主题是使终端在任何机器上成为家的另一个重要部分。我喜欢iterm2colorschemes.com是一个很好的资源,如果你使用iTerm。我使用Monokai苏打从这个项目。我也修改了我的Ubuntu终端,以匹配Monokai Soda的颜色,所以我有相同的经验,我保持版本在我的dotfiles。
跨平台拥有相同的颜色对我来说是巨大的,并减少了颜色方案之间的一些精神上的调整。

如此多的终端技巧

还有更多的我可以告诉你,但这些可能是我最喜欢的终端工具和技巧。我希望他们能激励你更多地尝试终端,让自己变得更加自信。像任何工匠一样,了解你的工具,并定制他们,所以他们觉得像一个不可替代的锤子,只要感觉到完美的,当你运行它。
我建议您检查哦我的Zsh并浏览插件。他们有几乎所有我使用的插件。其次,我建议您在GitHub上启动自己的dotfiles repo。您可以看一下我的例子,说明如何在$ HOME文件夹中符号链接您的dotfiles。
以下命令是如何在机器上克隆我的dotfiles repo:
git clone git@github.com:paulredmond/dotfiles.git ~/.dotfiles
然后我将它们像这样(在我引导rbenv并安装rake之后)符号:
$ rake install
你不必使用rake,但我喜欢Ruby,使用我的Rakefile引导我的dotfiles是很有趣的。这是我的dotfiles的点; 这是一个操场,让我试验我的控制台工具。
确保你不要添加任何秘密。事实上,我有时候使用一个本地文件,我添加到所有.gitignore我可以在机器上一次性的东西。这样的东西可以在你的〜/ .zshrc文件中运行:
# Local config ignored by gitif [[ -e $HOME/.zshrc.local ]]
then
    source $HOME/.zshrc.local
fi
 

重庆网站建设 重庆网站制作 重庆网站建设

服务支持

我们珍惜您每一次在线询盘,有问必答,用专业的态度,贴心的服务。

让您真正感受到我们的与众不同!

合作流程
合作流程

重庆网站建设流程从提出需求到网站建设报价,再到网站建设,每一步都是规范和专业的。

常见问题
常见问题

什么是网站定制?网站报价如何?网站常见问题。

常见问题
售后保障

网站建设不难,难的是一如既往的热情服务及技术支持。我们知道:做网站就是做服务,就是做售后。