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

rip*_*234 21 windows bash command-line

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

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

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

sur*_*asb 23

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

它支持所有传统命令以及别名、宏等...

以下是一些基本提示

电源外壳对话框

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

invoke-history 35:执行get-history列表中的命令 #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 被禁用,则显示带有标记、复制、粘贴、全选、滚动和查找选项的编辑快捷菜单。要将屏幕缓冲区复制到剪贴板,请右键单击,选择“选择”,然后按 Enter。

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


Kel*_*ari 13

您不需要替换命令提示符!Windows 在命令提示符中内置了许多这些功能,例如:

  • 命令历史:F7F9

  • 从上一个命令一次添加 1 个字母: F1

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

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


the*_*oid 13

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

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


Red*_*ick 5

双赢

适用于 Windows 的独立 bash

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

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

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


还有 jpsoftware 的take 命令- 但是,哎呀,在你提到的另一个 Q 中提到过,所以大概不会做你想要的。