Windows命令行是否具有类似智能bash的自动完成/命令历史记录?


21

我最近开始使用bash,发现了一些非常出色的功能(不一定是开箱即用的,但是可以配置):

  • 向上/向下箭头支持部分完成:键入“ git”,按向上箭头,您将浏览以“ git”开头的最新命令(即使在以前的会话中也是如此!)
  • Ctrl-R会搜索您的命令历史记录(由于某些原因被称为reversed-i-search)
  • 我敢肯定,还有很多我不知道的事情。

Windows是否有支持这些功能的cmd.exe替代品?我浏览了该问题的最佳答案,但是没有找到任何流行的替代方法是否支持它。


2
您是否曾经在命令提示符下尝试过F7?
William Hilsum

我没有。Google的第一个结果(从2005年开始!)就是“编码恐怖”! codinghorror.com/blog/2005/07/stupid-command-prompt-tricks.html 现在,只需回答我问题的另一部分,我将更加兴奋。
ripper234 2011年

1
不幸的是,Windows用户通常使用系统附带的功能,并且没有流行的cmd.exe替代品。Cygwin被广泛用作Windows的Linux“仿真器”,您可以尝试一下。@威廉:很好,不知道,但是你曾经尝试过bash吗?Bash会记住旧会话的命令,而不仅仅是当前会话。并且还按照ripper234的状态过滤结果,更不用说将链接转换为有效的URL,在终端应用程序上使用鼠标滚动和显示很长的列表了……顺便说一句,为什么您仍然不能水平调整命令提示符窗口的大小?这将永远困扰我...
m0skit0 2011年

cmd下文(通过paradroidRedGrittyBrick)以及上面超链接的答案中都讨论了两种流行的替代方法,而您后面的问题基于一个明显不正确的前提。我只是使用鼠标自己来水平调整控制台窗口的大小。
JdeBP

Answers:


22

下载并安装Powershell 2.0控制台(如果您使用的是Windows 7,则已经安装)。

它支持所有旧命令以及别名,宏等。

这里有一些基本技巧

电源壳对话框

get-history: 显示先前输入的命令列表。

invoke-history 35:获取历史记录列表中执行命令#35

`:按向后撇号键可插入换行符或使用>转义字符来生成文字字符。您还可以在竖线(|)字符处换行。

Alt+ Space + E:显示带有“ 标记”,“复制”,“粘贴”,“全选”,“滚动”和“查找”选项的编辑快捷菜单。然后K,您可以按标记,Y复印,P粘贴,S全选,L以滚动浏览屏幕缓冲区,或在屏幕缓冲区F中搜索文本。要将屏幕缓冲区复制到剪贴板,请按Alt+ Space + E+ S,然后按Alt+ Space + E+ Y

Alt+ F7:清除命令历史记录。

Ctrl+ C:突破子提示或终止执行。

Ctrl+ End:删除光标一行中的所有字符。

Ctrl+ Left Arrow|| Ctrl+ Right Arrow:一次左右移动一个字。

Ctrl+ S:暂停||恢复输出显示。

Esc 清除当前行。

F1在命令行上将光标向右移动一个字符。在该行的末尾,从上一个命令的文本中插入一个字符。

F2 通过将最后一个命令行复制到您键入的字符来创建新的命令行。

F3 从当前光标位置到行尾,使用上一个命令行中的内容来完成命令行。

F4 从当前光标位置到您键入的字符,从当前命令行删除字符。

F5 向后扫描您的命令历史记录。

F7:类似于get-history。显示包含命令历史记录的弹出窗口,并允许您选择命令。使用箭头键滚动列表。按Enter选择要运行的命令,或按Right arrow将文本放在命令行上。

F8 使用您输入的文本向后浏览命令历史记录,以查找与您到目前为止在命令行上键入的文本相匹配的命令。

F9从命令历史记录中运行特定编号的命令。当您按F7或时,将列出命令编号get-history

Page Up/ Page Down:获取命令历史记录中的第一个/最后一个命令。

右键单击如果禁用了QuickEdit,则显示带有Mark,Copy,Paste,Select All,Scroll和Find选项的编辑快捷菜单。要将屏幕缓冲区复制到剪贴板,请右键单击,选择“选择”,然后按Enter。

Tab/ Shift+ Tab:按Tab键或按Shift + Tab可访问选项卡扩展功能,其中包括文件夹或文件名自动完成功能。


是否支持部分历史记录搜索?
ripper234 2011年

1
是的,键入您要搜索的字符串,然后按F8键。
surfasb 2011年

这是PowerShell键盘控件的非常全面的概述。
paradroid

稍后,我将列出必须具有Powershell模块的列表。。。
surfasb

1
@surfasb:您应该包括PowerTab,因为它与此答案有关。进行制表就像IntelliSense。
paradroid

11

您无需替换命令提示符!Windows具有许多内置于命令提示符中的功能,例如:

  • 命令历史:F7F9

  • 从前面的命令一次添加1个字母: F1

  • 自动完成目录和文件名: Tab

还有更多技巧,但是您将需要在Google上进一步了解,因为我找不到包含完整列表的网站。


11

Clink扩展了Windows命令行并添加了以下功能

  • 来自GNU的Readline库的强大的类似Bash的行编辑
  • 高级路径完成(TAB)
  • 从剪贴板粘贴(Ctrl-V)
  • 支持可执行文件/命令和环境变量的完成
  • 撤消/重做(Ctrl-_或Ctrl-X,Ctrl-U)改进的命令行历史记录。跨会话坚持
  • 可搜索(Ctrl-R和Ctrl-S)。历史记录扩展(例如!!,!和!$)。使用Lua编写脚本的完成。

完善。它使cmd.exe更加有用。
2013年

5

Win-Bash

Windows的独立bash

win-bash是著名的GNU bash的Windows端口(请参阅GNU Bash主页)。

与Windows的其他bash端口(例如cygwin bash)不同,win-bash不需要特殊的环境或DLL。只有一个二进制文件,仅此而已。

我不确定它的功能和可靠性。


还有jpsoftware的take命令 -但是,哎呀,在您提到的另一个Q中已经提到了,因此大概不能满足您的要求。


实际上,“执行命令” 确实可以执行xe想要的操作。它具有全局命令历史记录,即使没有运行命令解释器也可以记住该历史记录。它具有历史列表过滤和编辑功能。我的猜测是“最重要的答案”不能延伸到答案5。☺
JdeBP

@JdeBP-接受命令在列表中排名第12。
ripper234 2011年

超级用户在此处查看时将其列为第五个答案。
JdeBP 2011年

1
您可以按“活跃”,“最旧”或“投票”对答案进行排序。通过“投票”是默认和超级用户则似乎随机化的答案具有同等的投票-我觉得刷新页面会改变顺序..
RedGrittyBrick

1
@ ripper234:你在说什么?Win-Bash于去年三月更新。
paradroid 2011年

3

已经提到 Take Command,但是 TCC / LE(子集)是具有许多功能,命令和可定制性的免费 CMD替代品。就键盘快捷键,别名和颜色而言,它在某种程度上提供了类似于bash的体验。

它可以完成您提到的几件事,包括带有Up/Down箭头的部分历史记录完成。 CTRL-B重复上一条命令的路径。尝试键入option以查看全部选项。

TCC/LEConsole2中也可以很好地工作

此外,您当然可以在Windows与Cygwin一起使用bash 。


1

开源的PyCmd命令提示符扩展可以满足您的大部分要求。

它的目的是模拟UNIX shell的一些强大功能(不错的Tab完成,持久历史记录等)。

图片

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.