在windows下习惯命令行操作

命令行的哲学与快捷键的哲学非常相似,为什么快捷键可以提高我们的效率, 因为鼠标操作需要经历手离开键盘移到鼠标上、移动定位按钮、点击、手移回键盘上的过程,而使用快捷键往往只需要按键盘上的几个键就可以完成同样的任务,如果鼠标操作需要1到2秒,那么快捷键操作通常只要0点几秒。为什么需要命令行操作道理也是一样的。

在linux的世界中, 可以通过命令行高效的完成很多事情, 比如常见的ls, grep, cat等等, 因为这些工具的存在, linux程序员几乎可以在命令行下完成所有的工作, 这种工作方式既极客又高效, 习惯了这种工作方式后就再也不想用鼠标了。

但并不是所有时候都能使用mac或者linux进行编程工作的,我们不得不去面对缺乏命令行工具的windows世界,虽然有着宇宙最强ide,但这并不能取代命令行给我们带来的高效。那么在windows下有没有办法高效的利用命令行呢?答案是肯定的。

powershell

powershell是windows为了取代cmd而产生的命令行工具,powershell提供了比linux shell更好的语法,但这并不能改变windows下命令行程序缺乏这一致命缺陷。如今流行的工具都会提供windows版本,比如nodejs,比如git,这在一定程度上缓解了windows下命令行不好用的问题。我曾经写了一篇介绍conemu的文章,介绍了以bat文件为基础快速启动命令行并配置好常用的环境变量的方式。

这里将介绍另一种快速启动命令行的方式,以及快速启动常用程序的方式

在windows中,lnk文件代表快捷方式,往往我们都是通过在桌面或者开始菜单建立快捷方式来快速打开某个程序,大部分程序在安装过程也会帮我们完成这些事情,但这仍然需要大量的鼠标操作。lnk文件正是我们要做到快速启动程序的关键,lnk文件可以在windows的Run中省略后缀打开,比如打开处于环境变量中z.lnk文件只需要四个键即可完成,Win + R z Enter

所以在windows下我的设置是这样的

  • 将某个常用的目录加入环境变量path中比如C:\chenbojian
  • 将指向conemu的快捷方式z.lnk放入该目录中
  • 快捷键快速启动并享受命令行。

这样启动powershell后会从$PROFILE中加载环境,如果你懂一些powershell的语法就可以像写.bashrc一样轻松的调教你的powershell,让他支持你喜欢的命令,比如我增加了vim的aliasSet-Alias vi path/to/gvim.exe,你也可以添加你喜欢的编辑器比如vscode,sublime等。这样我们就得到了类似linux命令行的体验了。

something else

使用powershell以及快捷键虽然得到了很好的体验,但仍然有着极大的差距,这主要因为windows的编译工具链与linux系的差别,linux程序往往都是通过源码发布的,然后在用户机器上编译得到可执行文件,这主要依赖于Linux中广泛存在多年的automake工具链,但windows并没有automake工具链,这使得windows下从源码编译变得异常困难,这使得很多好用的linux工具无法及时在windows下得到更新。

windows下也存在着cygwin和msys2这样的让linux程序直接在windows下编译的工具,我也曾经使用过,但windows下总有些别扭,尤其是字符集的不一致导致乱码问题。windows虽然内核早已使用unicode,但是对于中文支持确是一直使用了gbk的方式,比如chcp65001后就无法输入中文的命令行,种种因素使得windows下使用linux工具不够完美的体验。

随着windows10的发布windows似乎正在做着一系列的事情来吸引开源开发者对windows平台的关注,希望windows能在开源的世界中重新焕发活力。