【问题标题】:Windows 10 keyboard shortcut for inserting current UNIX timestamp at cursor用于在光标处插入当前 UNIX 时间戳的 Windows 10 键盘快捷键
【发布时间】:2021-06-16 12:24:43
【问题描述】:

我希望能够使用自定义键盘快捷键在光标处插入当前的 unix 时间戳(以秒为单位)。虽然使用自定义 JS 插件的浏览器很容易完成,但它仍然不是我正在寻找的干净解决方案,显然无法在浏览器之外工作。

我想它基本上需要我创建一个运行自定义脚本的快捷方式(返回当前的 unix 时间戳值)并将此脚本的输出插入光标处。但是,虽然编写脚本似乎很琐碎,但我什至不知道从哪里开始完成剩下的任务。

【问题讨论】:

  • 显然,在 Windows 中注册键盘快捷键并不是特别容易:stackoverflow.com/questions/40398476/…
  • 我建议查看AutoHotKey之类的内容。
  • 是的,AutoHotKey 就是这样做的。但我正在寻找一种在不安装任何第三方软件的情况下实际实现这一目标的方法。我发现通过在快捷方式文件属性中设置快捷方式很容易触发快捷方式(例如指向 PS 脚本),但仍然试图弄清楚如何在光标处插入当前的 unix。如果我成功了,我想我会第一次发布我自己问题的答案。
  • 使用第三方软件有什么问题?
  • at cursor 在这里是什么意思?在某个应用程序或编辑器中,或者任何您可能有一些文本字段为您提供打字光标的地方?例如,在 Word 中,您可以运行宏。各种编辑器提供了一些方法来创建您自己的代码块并使用自定义热键将它们连接到菜单中。这个问题太笼统了..

标签: windows powershell keyboard-shortcuts keyboard-events


【解决方案1】:

这种方法需要您执行快捷键组合和然后Ctrl + V。这不是您正在寻找的东西,但应该非常接近。它使用Set-Clipboard 将 Unix 时间戳放在剪贴板上,以便将其粘贴到所需位置。

  1. 打开 文件资源管理器 并导航到您要创建的位置 快捷方式
  2. 右键单击 > 新建 > 快捷方式
  3. 键入项目的位置 字段中,输入(全部在一行上): C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command "&{Set-Clipboard -Value ([string](Get-Date -UFormat %s -Millisecond 0))}" -WindowStyle Hidden -NonInteractive -NoLogo -NoProfile -ExecutionPolicy Bypass
  4. 输入快捷方式的名称,然后点击完成
  5. 右键单击新创建的快捷方式并选择属性
  6. 运行更改为最小化
  7. 快捷键字段内单击并执行所需的快捷键组合以捕获它;例如,Ctrl + Alt + [
  8. 点击确定
  9. 要运行快捷方式,请执行之前捕获的快捷键组合(将 Unix 时间戳放在剪贴板上),然后执行 Ctrl + V

【讨论】:

    【解决方案2】:

    PowerShell 5.1+ 具有名为 PSReadline 的本机模块。这个模块有Get-PSReadLineKeyHandlerSet-PSReadLineKeyHandlerRemove-PSReadlineKeyHandler

    使用这些 cmdlet,您可以为此自定义 unixdate 输出创建自己的 KeyHandler。下面我将组合键 Ctrl+Alt+u 绑定到这个,但它可以是任何组合键。

    注意:如果您想将示例直接粘贴到 PowerShell 中,请使用下面的 `

    Set-PSReadLineKeyHandler -Chord Ctrl+Alt+u `
    -ScriptBlock { 
    $unixDate = $([uint64](New-TimeSpan -Start "01/01/1970" -End (Get-Date)).TotalSeconds)
    [Microsoft.PowerShell.PSConsoleReadLine]::Insert("$unixDate")
    } -BriefDescription "Unix TimeStamp" `
    -Description "Returns the current Unix TimeStamp"
    

    如果您还希望将其复制到剪贴板以粘贴到另一个程序中,则可以在插入后添加[Microsoft.PowerShell.PSConsoleReadLine]::Copy()

    KeyHandler 仅在您当前的会话期间处于活动状态,因此如果您想让它成为每个新 PowerShell 会话的半永久键组合,您应该将其添加到您的 PowerShell 配置文件中。您可以通过运行notepad $PROFILE 并将上面的 sn-p 拖放到该文件中来编辑您的配置文件。如果文件不存在,则会创建它。

    您可以在 [docs.microsoft.com] 页面上阅读有关 PSReadLine cmdlet 的更多信息,以及有关 [Microsoft.PowerShell.PSConsoleReadLine]here 的更多信息

    【讨论】:

    • 你可以直接使用DateTimeOffset.ToUnixTimeSeconds而不需要时间跨度
    • 是的,就像这样:$unixDate = [System.DateTimeOffset]::Now.ToUnixTimeSeconds()New-TimeSpan 进行比较时,我注意到[System.DateTimeOffset] 是UTC,New-TimeSpan 是本地的。
    【解决方案3】:

    转到here,点击下载(如果你有wget.exe,请不要使用wget.exe),然后按照以下步骤操作:右键点击下载的文件>属性>快捷方式然后你会发现一些东西说 None (exact),单击它,然后按 Ctrl + Alt + [whatever key] 或只需按 [whatever key] (您需要使用 Ctrl + Alt 并将 [whatever key] 更改为任何字符并删除括号) .重新启动计算机,它应该在设置中设置的默认浏览器中打开this 链接(要打开设置应用程序,请按 Win 键 + I)。抱歉,我不知道或可以研究将它放在光标中,所以这就是我所知道的......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多