<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>历史 on wentao's blog</title><link>https://wentao.org/tags/%E5%8E%86%E5%8F%B2/</link><description>Recent content in 历史 on wentao's blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>©2022 wentao.org.</copyright><lastBuildDate>Sun, 08 May 2022 22:18:00 +0800</lastBuildDate><atom:link href="https://wentao.org/tags/%E5%8E%86%E5%8F%B2/index.xml" rel="self" type="application/rss+xml"/><item><title>解决armbian更新报不能验证个别公钥</title><link>https://wentao.org/post/2023-07-11-fix-armbian-verified-gpg-key/</link><pubDate>Tue, 11 Jul 2023 09:58:00 +0800</pubDate><guid>https://wentao.org/post/2023-07-11-fix-armbian-verified-gpg-key/</guid><description>&lt;p>近期把rock5b升级 &lt;code>armbian&lt;/code> 的 &lt;code>bookworm&lt;/code> 版本的时候,不管是官方的源还是国内,都会在执行 &lt;code>apt update&lt;/code> 的时候会出现如下的错误:&lt;/p>
&lt;blockquote>
&lt;p>An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: &lt;a href="https://mirrors.aliyun.com/armbian">https://mirrors.aliyun.com/armbian&lt;/a> bookworm InRelease: The following signatures couldn&amp;rsquo;t be verified because the public key is not available: NO_PUBKEY 93D6889F9F0E78D5&lt;/p>
&lt;/blockquote>
&lt;p>解决办法如下:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-bash" data-lang="bash">curl &lt;span class="s1">&amp;#39;https://keyserver.ubuntu.com/pks/lookup?op=get&amp;amp;search=0xdf00faf1c577104b50bf1d0093d6889f9f0e78d5&amp;#39;&lt;/span> &lt;span class="p">|&lt;/span>gpg --dearmor&lt;span class="p">|&lt;/span> sudo tee /etc/apt/trusted.gpg.d/armbian.gpg
&lt;/code>&lt;/pre>&lt;/div>&lt;p>简单的说就是把在keyserver.ubuntu.com上的公钥手动放到受信任的公钥列表里面.&lt;/p>
&lt;p>对于其他的类似报错可以 &lt;a href="https://keyserver.ubuntu.com/">https://keyserver.ubuntu.com/&lt;/a> 上查找并导入.&lt;/p>
&lt;p>参考资料:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/cli/cli/issues/6175"target="_blank">GPG key used to sign debian packages is expired · Issue #6175 · cli/cli&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://forum.armbian.com/topic/26978-csc-armbian-for-rk3318rk3328-tv-box-boards/page/34/#comment-143097"target="_blank">CSC Armbian for RK3318/RK3328 TV box boards - Page 34 - Rockchip CPU Boxes - Armbian Community Forums&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>nyagos增加zoxide的支持</title><link>https://wentao.org/post/2023-04-27-zoxide-with-nyagos/</link><pubDate>Thu, 27 Apr 2023 16:02:00 +0800</pubDate><guid>https://wentao.org/post/2023-04-27-zoxide-with-nyagos/</guid><description>&lt;h2 id="介绍">介绍&lt;/h2>
&lt;p>&lt;a href="https://github.com/ajeetdsouza/zoxide"target="_blank">zoxide&lt;/a> 提供了 &lt;code>z jump&lt;/code> 的功能.能够记录就访问的路径,并通过其中的关键词快速的定位到你想要的文件夹.&lt;/p>
&lt;p>&lt;a href="https://github.com/nyaosorg/nyagos"target="_blank">nyagos&lt;/a> 是一个支持使用 &lt;code>lua&lt;/code> 配置的 &lt;code>shell&lt;/code>. 快速、稳定.但是使用圈子很小.&lt;/p>
&lt;p>&lt;a href="https://github.com/ajeetdsouza/zoxide"target="_blank">zoxide&lt;/a> 提供了常见的 &lt;code>shell&lt;/code> 整合,在 &lt;code>nyagos&lt;/code> 下面没有相关的支持.&lt;/p>
&lt;h2 id="步骤">步骤&lt;/h2>
&lt;p>由于主要是自用,简单的通过 &lt;code>lua&lt;/code> 和 &lt;code>nyagos.alias&lt;/code> 功能实现了一个简单的版本.&lt;/p>
&lt;p>其中 &lt;code>z&lt;/code> 跳转的时候只支持一个参数.&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-lua" data-lang="lua">&lt;span class="n">nyagos.alias&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">z&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="kr">function&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">rest&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">rest&lt;/span>
&lt;span class="kr">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">string.len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">rest&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">nyagos.eval&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;zoxide query --exclude &amp;#39;&amp;#34;&lt;/span>&lt;span class="o">..&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">nyagos.getwd&lt;/span>&lt;span class="p">())&lt;/span> &lt;span class="o">..&lt;/span>&lt;span class="s2">&amp;#34;&amp;#39; -- &amp;#34;&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">rest&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kr">end&lt;/span>
&lt;span class="n">nyagos.chdir&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kr">end&lt;/span>
&lt;span class="n">nyagos.alias&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">zi&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kr">function&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">rest&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>
&lt;span class="kr">if&lt;/span> &lt;span class="n">rest&lt;/span>&lt;span class="o">==&lt;/span>&lt;span class="kc">nil&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">rest&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>
&lt;span class="kr">end&lt;/span>
&lt;span class="n">path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">nyagos.eval&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;zoxide query -i -- &amp;#34;&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">rest&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34;| fzf&amp;#34;&lt;/span> &lt;span class="p">)&lt;/span>
&lt;span class="n">nyagos.chdir&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kr">end&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>利用 &lt;code>postexechook&lt;/code> 功能,实现了自动更新 &lt;code>zoxide&lt;/code> 数据.&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-lua" data-lang="lua">&lt;span class="n">nyagos.postexechook&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="kr">function&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kr">if&lt;/span> &lt;span class="s2">&amp;#34;cd&amp;#34;&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">nyagos.eval&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;zoxide add -- &amp;#34;&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">nyagos.getwd&lt;/span>&lt;span class="p">())&lt;/span>
&lt;span class="kr">end&lt;/span>
&lt;span class="kr">end&lt;/span>
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>快速查找PowerShell的历史命令</title><link>https://wentao.org/post/2022-11-23-grep-powershell-history/</link><pubDate>Wed, 23 Nov 2022 19:41:00 +0800</pubDate><guid>https://wentao.org/post/2022-11-23-grep-powershell-history/</guid><description>&lt;p>在 &lt;code>bash&lt;/code> 或者 &lt;code>fish&lt;/code> 这些shell下面可以通过 &lt;code>history&lt;/code> 来显示历史命令.在 &lt;code>PowerShell&lt;/code> 下也可以通过 &lt;code>Get-History&lt;/code> 来获取.&lt;/p>
&lt;p>不过毕竟功能有点单一,写了个函数来扩展一下.&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="k">function&lt;/span> &lt;span class="n">hist&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nv">$find&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$args&lt;/span>&lt;span class="p">;&lt;/span>
&lt;span class="nb">Get-Content&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nb">Get-PSReadlineOption&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">HistorySavePath&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="p">?&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nv">$_&lt;/span> &lt;span class="o">-like&lt;/span> &lt;span class="s2">&amp;#34;*$find*&amp;#34;&lt;/span> &lt;span class="p">}&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Get-Unique&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="n">more&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>这样就可以通过 &lt;code>hist 关键词&lt;/code> 来搜索历史命令&lt;/p>
&lt;p>如果你安装了 &lt;code>fzf&lt;/code> 的话,可以使用如下的版本&lt;/p>
&lt;pre>&lt;code class="language-powersehll" data-lang="powersehll">function hist {
$find = $args;
Get-Content (Get-PSReadlineOption).HistorySavePath | ? { $_ -like &amp;quot;*$find*&amp;quot; } | Get-Unique | fzf
}
&lt;/code>&lt;/pre>&lt;p>这样可以利用 &lt;code>fzf&lt;/code> 的模糊查询来缩小范围.&lt;/p></description></item><item><title>denote</title><link>https://wentao.org/post/2022-11-20-denote/</link><pubDate>Sun, 20 Nov 2022 11:47:00 +0800</pubDate><guid>https://wentao.org/post/2022-11-20-denote/</guid><description>&lt;p>近期把笔记软件从&lt;a href="https://www.orgroam.com/"target="_blank">Org-roam&lt;/a>迁移到了&lt;a href="https://protesilaos.com/emacs/denote"target="_blank">Denote (denote.el)&lt;/a>,主要是有以下几个考虑:&lt;/p>
&lt;ul>
&lt;li>org-roam在windows下面的性能堪忧,即使使用了emacs内置的sqlite性能还是不太行.&lt;/li>
&lt;li>酷炫的&lt;a href="https://github.com/org-roam/org-roam-ui"target="_blank">org-roam/org-roam-ui&lt;/a>其实没啥用&lt;/li>
&lt;li>denote性能和命名规范都挺合心意,&lt;/li>
&lt;/ul>
&lt;p>以下是我的配置:&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-emacs-lisp" data-lang="emacs-lisp">&lt;span class="p">(&lt;/span>&lt;span class="nb">use-package&lt;/span> &lt;span class="nv">denote&lt;/span>
&lt;span class="nb">:bind&lt;/span>
&lt;span class="p">((&lt;/span>&lt;span class="s">&amp;#34;C-c n n&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="nv">denote&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;C-c n i&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="nv">denote-link-or-create&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;C-c n I&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="nv">denote-link&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;C-c n b&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="nv">denote-link-backlinks&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;C-c n a&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="nv">denote-add-front-matter&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;C-c n r&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="nv">denote-rename-file&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;C-c n R&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="nv">denote-rename-file-using-front-matter&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="p">)&lt;/span>
&lt;span class="p">)&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="nb">setq&lt;/span> &lt;span class="nv">denote-directory&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">expand-file-name&lt;/span> &lt;span class="s">&amp;#34;~/Org/notes/&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="nv">denote-known-keywords&lt;/span> &lt;span class="o">&amp;#39;&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;dev&amp;#34;&lt;/span> &lt;span class="s">&amp;#34;read&amp;#34;&lt;/span> &lt;span class="s">&amp;#34;report&amp;#34;&lt;/span> &lt;span class="s">&amp;#34;cslp&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="nv">denote-infer-keywords&lt;/span> &lt;span class="no">t&lt;/span>
&lt;span class="nv">denote-sort-keywords&lt;/span> &lt;span class="no">t&lt;/span>
&lt;span class="nv">denote-allow-multi-word-keywords&lt;/span> &lt;span class="no">t&lt;/span>
&lt;span class="nv">denote-date-prompt-use-org-read-date&lt;/span> &lt;span class="no">t&lt;/span>
&lt;span class="nv">denote-link-fontify-backlinks&lt;/span> &lt;span class="no">t&lt;/span>
&lt;span class="nv">denote-front-matter-date-format&lt;/span> &lt;span class="ss">&amp;#39;org-timestamp&lt;/span>
&lt;span class="nv">denote-prompts&lt;/span> &lt;span class="o">&amp;#39;&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">title&lt;/span> &lt;span class="nv">keywords&lt;/span>&lt;span class="p">))&lt;/span>
&lt;span class="c1">;; 在work目录下创建标签为work的笔记&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="nb">defun&lt;/span> &lt;span class="nv">my-work-notes&lt;/span> &lt;span class="p">()&lt;/span>
&lt;span class="s">&amp;#34;Create an entry tagged &amp;#39;journal&amp;#39;, while prompting for a title.&amp;#34;&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="nb">interactive&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="nv">denote&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="nv">denote--title-prompt&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="o">&amp;#39;&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;work&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="ss">&amp;#39;denote-file-type&lt;/span> &lt;span class="o">&amp;#39;&lt;/span>&lt;span class="s">&amp;#34;./work&amp;#34;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>笔记查找使用的是&lt;a href="https://github.com/mclear-tools/consult-notes"target="_blank">mclear-tools/consult-notes: Use consult to search notes&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-emacs-lisp" data-lang="emacs-lisp">&lt;span class="p">(&lt;/span>&lt;span class="nb">setq&lt;/span> &lt;span class="nv">xref-search-program&lt;/span> &lt;span class="ss">&amp;#39;ripgrep&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="nb">use-package&lt;/span> &lt;span class="nv">consult-notes&lt;/span>
&lt;span class="nb">:commands&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">consult-notes&lt;/span>
&lt;span class="nv">consult-notes-search-in-all-notes&lt;/span>
&lt;span class="nv">consult-notes-org-roam-find-node&lt;/span>
&lt;span class="nv">consult-notes-org-roam-find-node-relation&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="nb">:config&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="nb">setq&lt;/span> &lt;span class="nv">consult-notes-sources&lt;/span>
&lt;span class="o">&amp;#39;&lt;/span>&lt;span class="p">(&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;notes&amp;#34;&lt;/span> &lt;span class="sc">?o&lt;/span> &lt;span class="s">&amp;#34;~/Org/notes&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="p">))&lt;/span>
&lt;span class="nb">:bind&lt;/span>
&lt;span class="p">(&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;C-c n F&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="nv">consult-notes&lt;/span>&lt;span class="p">))&lt;/span>
&lt;span class="p">)&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="nb">use-package&lt;/span> &lt;span class="nv">consult-denote&lt;/span>
&lt;span class="nb">:bind&lt;/span>
&lt;span class="p">(&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;C-c n f&amp;#34;&lt;/span> &lt;span class="o">.&lt;/span> &lt;span class="nv">consult-denote&lt;/span>&lt;span class="p">))&lt;/span>
&lt;span class="p">)&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="参考资料">参考资料&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://protesilaos.com/codelog/2022-06-18-denote-demo/"target="_blank">Emacs: demonstration of my Denote package (simple note-taking) | Protesilaos Stavrou&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/bitspook/notes-migrator"target="_blank">bitspook/notes-migrator: Migrate your notes b/w different note-taking software (only org-roam to denote supported for now)&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://takeonrules.com/2022/10/02/migration-plan-for-org-roam-notes-to-denote/"target="_blank">Migration Plan for Org-Roam Notes to Denote // Take on Rules&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://emacs-china.org/t/laos-denote/21787/15"target="_blank">有人尝试过laos大佬的笔记新插件“denote”吗 - Emacs-general - Emacs China&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>利用PowerShell来进行端口连通性测试</title><link>https://wentao.org/post/2022-07-17-powershell-test-netconnection/</link><pubDate>Sun, 17 Jul 2022 22:34:00 +0800</pubDate><guid>https://wentao.org/post/2022-07-17-powershell-test-netconnection/</guid><description>&lt;p>一般情况下在是使用 &lt;code>telnet&lt;/code> 来做网络连通性的测试. &lt;code>PowerShell&lt;/code> 也可以实现类似的功能.而且由于本身和 &lt;code>.Net&lt;/code> 的关系,还可以通过 &lt;code>.Net&lt;/code> 的支持来完成.&lt;/p>
&lt;h2 id="原生的方案-test-connection">原生的方案:Test-Connection&lt;/h2>
&lt;h3 id="连接成功">连接成功&lt;/h3>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="nb">Measure-Command&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="nb">Test-NetConnection&lt;/span> &lt;span class="n">wentao&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">org&lt;/span> &lt;span class="n">-Port&lt;/span> &lt;span class="n">80&lt;/span>&lt;span class="p">}&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="p">%&lt;/span> &lt;span class="n">TotalSeconds&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="连接失败">连接失败&lt;/h3>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="nb">Measure-Command&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="nb">Test-NetConnection&lt;/span> &lt;span class="n">wentao&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">2org&lt;/span> &lt;span class="n">-Port&lt;/span> &lt;span class="n">80&lt;/span>&lt;span class="p">}&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="p">%&lt;/span> &lt;span class="n">TotalSeconds&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="使用system-dot-net-dot-sockets-dot-tcpclient的方案">使用System.Net.Sockets.TcpClient的方案&lt;/h2>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-powershell" data-lang="powershell"> &lt;span class="k">function&lt;/span> &lt;span class="nb">Test-Port&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="p">[&lt;/span>&lt;span class="k">CmdletBinding&lt;/span>&lt;span class="p">()]&lt;/span>
&lt;span class="k">param&lt;/span> &lt;span class="p">(&lt;/span>
&lt;span class="p">[&lt;/span>&lt;span class="k">Parameter&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">ValueFromPipeline&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$true&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">HelpMessage&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s1">&amp;#39;Could be suffixed by :Port&amp;#39;&lt;/span>&lt;span class="p">)]&lt;/span>
&lt;span class="no">[String[]]&lt;/span>&lt;span class="nv">$ComputerName&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="p">[&lt;/span>&lt;span class="k">Parameter&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">HelpMessage&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s1">&amp;#39;Will be ignored if the port is given in the param ComputerName&amp;#39;&lt;/span>&lt;span class="p">)]&lt;/span>
&lt;span class="no">[Int]&lt;/span>&lt;span class="nv">$Port&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">5985&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="p">[&lt;/span>&lt;span class="k">Parameter&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">HelpMessage&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s1">&amp;#39;Timeout in millisecond. Increase the value if you want to test Internet resources.&amp;#39;&lt;/span>&lt;span class="p">)]&lt;/span>
&lt;span class="no">[Int]&lt;/span>&lt;span class="nv">$Timeout&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">1000&lt;/span>
&lt;span class="p">)&lt;/span>
&lt;span class="k">begin&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nv">$result&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="no">[System.Collections.ArrayList]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">new&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="k">process&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="k">foreach&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">$originalComputerName&lt;/span> &lt;span class="k">in&lt;/span> &lt;span class="nv">$ComputerName&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nv">$remoteInfo&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$originalComputerName&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Split&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">$remoteInfo&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">count&lt;/span> &lt;span class="o">-eq&lt;/span> &lt;span class="n">1&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="c"># In case $ComputerName in the form of &amp;#39;host&amp;#39;&lt;/span>
&lt;span class="nv">$remoteHostname&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$originalComputerName&lt;/span>
&lt;span class="nv">$remotePort&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$Port&lt;/span>
&lt;span class="p">}&lt;/span> &lt;span class="k">elseif&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">$remoteInfo&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">count&lt;/span> &lt;span class="o">-eq&lt;/span> &lt;span class="n">2&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="c"># In case $ComputerName in the form of &amp;#39;host:port&amp;#39;,&lt;/span>
&lt;span class="c"># we often get host and port to check in this form.&lt;/span>
&lt;span class="nv">$remoteHostname&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$remoteInfo&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">0&lt;/span>&lt;span class="p">]&lt;/span>
&lt;span class="nv">$remotePort&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$remoteInfo&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">1&lt;/span>&lt;span class="p">]&lt;/span>
&lt;span class="p">}&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nv">$msg&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;Got unknown format for the parameter ComputerName: &amp;#34;&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="p">+&lt;/span> &lt;span class="s2">&amp;#34;[$originalComputerName]. &amp;#34;&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="p">+&lt;/span> &lt;span class="s2">&amp;#34;The allowed formats is [hostname] or [hostname:port].&amp;#34;&lt;/span>
&lt;span class="nb">Write-Error&lt;/span> &lt;span class="nv">$msg&lt;/span>
&lt;span class="k">return&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="nv">$tcpClient&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">New-Object&lt;/span> &lt;span class="n">System&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Net&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Sockets&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">TcpClient&lt;/span>
&lt;span class="nv">$portOpened&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$tcpClient&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ConnectAsync&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$remoteHostname&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nv">$remotePort&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">Wait&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$Timeout&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="nv">$null&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$result&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="no">[PSCustomObject]&lt;/span>&lt;span class="p">@{&lt;/span>
&lt;span class="n">RemoteHostname&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$remoteHostname&lt;/span>
&lt;span class="n">RemotePort&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$remotePort&lt;/span>
&lt;span class="n">PortOpened&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$portOpened&lt;/span>
&lt;span class="n">TimeoutInMillisecond&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$Timeout&lt;/span>
&lt;span class="n">SourceHostname&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$env:COMPUTERNAME&lt;/span>
&lt;span class="n">OriginalComputerName&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$originalComputerName&lt;/span>
&lt;span class="p">})&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="k">end&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="k">return&lt;/span> &lt;span class="nv">$result&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>wezterm的workspace配置</title><link>https://wentao.org/post/2022-07-10-wezterm-with-workspace/</link><pubDate>Wed, 13 Jul 2022 21:19:00 +0800</pubDate><guid>https://wentao.org/post/2022-07-10-wezterm-with-workspace/</guid><description>&lt;p>&lt;a href="https://wezfurlong.org/"target="_blank">wezterm&lt;/a>里个特性是workspace,类似虚拟桌面的概念.可以在不同的workspace之间切换.这段时间工作上除了日常的开发以外,还有一些服务器的维护.这个时候这个workspace就会很方便.&lt;/p>
&lt;p>另外可以根据 &lt;code>lua&lt;/code> 来获取环境变量,来区分个人电脑、办公电脑做到能够一套配置多处使用.在 &lt;code>DUMMY&lt;/code> 的机器上启动一个 &lt;code>Meta&lt;/code> 的配置&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-lua" data-lang="lua">&lt;span class="kr">if&lt;/span> &lt;span class="s2">&amp;#34;DUMMY&amp;#34;&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="n">os.getenv&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;USERDOMAIN&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">tab&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">pane&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">window&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">mux.spawn_window&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="n">workspace&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;Meta&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="n">cwd&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;d:/soft/Meta/&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="n">pane&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">send_text&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;.&lt;/span>&lt;span class="se">\\&lt;/span>&lt;span class="s2">meta.exe -d .&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kr">end&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>官方有如下的一个配置示例.&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-lua" data-lang="lua">&lt;span class="kd">local&lt;/span> &lt;span class="n">wezterm&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">require&lt;/span> &lt;span class="s1">&amp;#39;wezterm&amp;#39;&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">mux&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wezterm.mux&lt;/span>
&lt;span class="n">wezterm.on&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;gui-startup&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="kr">function&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="c1">-- Set a workspace for coding on a current project&lt;/span>
&lt;span class="c1">-- Top pane is for the editor, bottom pane is for the build tool&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">project_dir&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wezterm.home_dir&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34;/wezterm&amp;#34;&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">tab&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">build_pane&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">window&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">mux.spawn_window&lt;/span>&lt;span class="p">{&lt;/span>
&lt;span class="n">workspace&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;coding&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="n">cwd&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">project_dir&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">editor_pane&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">build_pane&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">split&lt;/span>&lt;span class="p">{&lt;/span>
&lt;span class="n">direction&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;Top&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="n">size&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mf">0.6&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="n">cwd&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">project_dir&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="c1">-- may as well kick off a build in that pane&lt;/span>
&lt;span class="n">build_pane&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">send_text&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;cargo build&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1">-- A workspace for interacting with a local machine that&lt;/span>
&lt;span class="c1">-- runs some docker containners for home automation&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">tab&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">pane&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">window&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">mux.spawn_window&lt;/span>&lt;span class="p">{&lt;/span>
&lt;span class="n">workspace&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;automation&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="n">args&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;ssh&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;vault&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="c1">-- We want to startup in the coding workspace&lt;/span>
&lt;span class="n">mux.set_active_workspace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;coding&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kr">end&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kr">return&lt;/span> &lt;span class="p">{}&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="参考资料">参考资料&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://wezfurlong.org/wezterm/config/lua/gui-events/gui-startup.html"target="_blank">gui-startup - Wez&amp;rsquo;s Terminal Emulator&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>PSReadLine最强PowerShell模块</title><link>https://wentao.org/post/2022-07-10-psreadline/</link><pubDate>Sun, 10 Jul 2022 19:51:00 +0800</pubDate><guid>https://wentao.org/post/2022-07-10-psreadline/</guid><description>&lt;p>PowerShell其实从设计理念上来说是一直强于bash的.毕竟不是一个时代的产物.但是bash的好处是经历了足够长的时间发展,有良好的周边支持.&lt;/p>
&lt;p>&lt;a href="https://www.gnu.org/software/bash/manual/html_node/Readline-Interaction.html"target="_blank">Readline&lt;/a> 就是其中一个很棒的功能.主要包含了根据你输入的内容进行搜索历史,提示命令,删除文字之类的功能.能够在日常使用的时候大大的提升便利性.&lt;/p>
&lt;p>&lt;a href="https://github.com/PowerShell/PSReadLine"target="_blank">PSReadLine&lt;/a> 则是 &lt;code>A bash inspired readline implementation for PowerShell&lt;/code>. 提供了增加的Tab 自动补全和命令预测功能.最新的版本&lt;a href="https://github.com/PowerShell/PSReadLine/releases/tag/v2.2.6"target="_blank">v2.2.6&lt;/a>还提供了插件来增强不全功能.&lt;/p>
&lt;p>安装的话只需要&lt;a href="https://docs.microsoft.com/powershell/scripting/gallery/installing-psget"target="_blank">owerShellGet&lt;/a>的版本高于 &lt;code>1.6.0&lt;/code> 就可以通过如下的命令安装或者升级&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="nb">Install-Module&lt;/span> &lt;span class="n">-Name&lt;/span> &lt;span class="n">PowerShellGet&lt;/span> &lt;span class="n">-Force&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>PSReadLine&lt;/code> 的可配置项可以参考&lt;a href="https://github.com/PowerShell/PSReadLine/blob/master/PSReadLine/SamplePSReadLineProfile.ps1"target="_blank">sample profile file&lt;/a>.&lt;/p>
&lt;p>下面是我的配置.&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">UpArrow&lt;/span> &lt;span class="n">-Function&lt;/span> &lt;span class="n">HistorySearchBackward&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">DownArrow&lt;/span> &lt;span class="n">-Function&lt;/span> &lt;span class="n">HistorySearchForward&lt;/span>
&lt;span class="nb">Set-PSReadLineOption&lt;/span> &lt;span class="n">-EditMode&lt;/span> &lt;span class="n">Emacs&lt;/span>
&lt;span class="nb">Set-PSReadLineOption&lt;/span> &lt;span class="n">-PredictionSource&lt;/span> &lt;span class="n">HistoryAndPlugin&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Chord&lt;/span> &lt;span class="s1">&amp;#39;Ctrl+d,Ctrl+c&amp;#39;&lt;/span> &lt;span class="n">-Function&lt;/span> &lt;span class="n">CaptureScreen&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">Alt&lt;/span>&lt;span class="p">+&lt;/span>&lt;span class="n">d&lt;/span> &lt;span class="n">-Function&lt;/span> &lt;span class="n">ShellKillWord&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">Alt&lt;/span>&lt;span class="p">+&lt;/span>&lt;span class="n">Backspace&lt;/span> &lt;span class="n">-Function&lt;/span> &lt;span class="n">ShellBackwardKillWord&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">Alt&lt;/span>&lt;span class="p">+&lt;/span>&lt;span class="n">b&lt;/span> &lt;span class="n">-Function&lt;/span> &lt;span class="n">ShellBackwardWord&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">Alt&lt;/span>&lt;span class="p">+&lt;/span>&lt;span class="n">f&lt;/span> &lt;span class="n">-Function&lt;/span> &lt;span class="n">ShellForwardWord&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">Alt&lt;/span>&lt;span class="p">+&lt;/span>&lt;span class="n">B&lt;/span> &lt;span class="n">-Function&lt;/span> &lt;span class="n">SelectShellBackwardWord&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">Alt&lt;/span>&lt;span class="p">+&lt;/span>&lt;span class="n">F&lt;/span> &lt;span class="n">-Function&lt;/span> &lt;span class="n">SelectShellForwardWord&lt;/span>
&lt;span class="c">#endregion&lt;/span>
&lt;span class="c">#region git&lt;/span>
&lt;span class="c">#git status&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">Alt&lt;/span>&lt;span class="p">+&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="n">-LongDescription&lt;/span> &lt;span class="s2">&amp;#34;git status&amp;#34;&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-ScriptBlock&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">RevertLine&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">Insert&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;git status&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">AcceptLine&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="c"># git pull&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">Alt&lt;/span>&lt;span class="p">+&lt;/span>&lt;span class="n">p&lt;/span> &lt;span class="n">-LongDescription&lt;/span> &lt;span class="s2">&amp;#34;git pull&amp;#34;&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-ScriptBlock&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">RevertLine&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">Insert&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;git pull&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">AcceptLine&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="c"># git push&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">Alt&lt;/span>&lt;span class="p">+&lt;/span>&lt;span class="n">P&lt;/span> &lt;span class="n">-LongDescription&lt;/span> &lt;span class="s2">&amp;#34;git push&amp;#34;&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-ScriptBlock&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">RevertLine&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">Insert&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;git push&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">AcceptLine&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="c">#git show&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">Ctrl&lt;/span>&lt;span class="p">+&lt;/span>&lt;span class="n">Alt&lt;/span>&lt;span class="p">+&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="n">-LongDescription&lt;/span> &lt;span class="s2">&amp;#34;git show&amp;#34;&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-ScriptBlock&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">RevertLine&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">Insert&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;git show&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">AcceptLine&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="c">#endregion&lt;/span>
&lt;span class="c">#region utils&lt;/span>
&lt;span class="c"># 保存当前命令到历史中,但是并不执行&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">Alt&lt;/span>&lt;span class="p">+&lt;/span>&lt;span class="n">w&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-BriefDescription&lt;/span> &lt;span class="n">SaveInHistory&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-LongDescription&lt;/span> &lt;span class="s2">&amp;#34;Save current line in history but do not execute&amp;#34;&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-ScriptBlock&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="k">param&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$key&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nv">$arg&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="nv">$line&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$null&lt;/span>
&lt;span class="nv">$cursor&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$null&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">GetBufferState&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="no">[ref]&lt;/span>&lt;span class="nv">$line&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="no">[ref]&lt;/span>&lt;span class="nv">$cursor&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">AddToHistory&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$line&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">RevertLine&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="c"># Insert text from the clipboard as a here string&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">Ctrl&lt;/span>&lt;span class="p">+&lt;/span>&lt;span class="n">V&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-BriefDescription&lt;/span> &lt;span class="n">PasteAsHereString&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-LongDescription&lt;/span> &lt;span class="s2">&amp;#34;Paste the clipboard text as a here string&amp;#34;&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-ScriptBlock&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="k">param&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$key&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nv">$arg&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="nb">Add-Type&lt;/span> &lt;span class="n">-Assembly&lt;/span> &lt;span class="n">PresentationCore&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="no">[System.Windows.Clipboard]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">ContainsText&lt;/span>&lt;span class="p">())&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="c"># Get clipboard text - remove trailing spaces, convert \r\n to \n, and remove the final \n.&lt;/span>
&lt;span class="nv">$text&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="no">[System.Windows.Clipboard]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">GetText&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">-replace&lt;/span> &lt;span class="s2">&amp;#34;\p{Zs}*&lt;/span>&lt;span class="se">`r&lt;/span>&lt;span class="s2">?&lt;/span>&lt;span class="se">`n&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">`n&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">TrimEnd&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">Insert&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;@&amp;#39;&lt;/span>&lt;span class="se">`n&lt;/span>&lt;span class="s2">$text&lt;/span>&lt;span class="se">`n&lt;/span>&lt;span class="s2">&amp;#39;@&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="k">else&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">Ding&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="c"># F7 弹出一个GUI的历史命令列表&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">F7&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-BriefDescription&lt;/span> &lt;span class="nb">History &lt;/span>&lt;span class="p">`&lt;/span>
&lt;span class="n">-LongDescription&lt;/span> &lt;span class="s1">&amp;#39;Show command history&amp;#39;&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-ScriptBlock&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nv">$pattern&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$null&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">GetBufferState&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="no">[ref]&lt;/span>&lt;span class="nv">$pattern&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="no">[ref]&lt;/span>&lt;span class="nv">$null&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">$pattern&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nv">$pattern&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="no">[regex]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">Escape&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$pattern&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="nv">$history&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="no">[System.Collections.ArrayList]&lt;/span>&lt;span class="p">@(&lt;/span>
&lt;span class="nv">$last&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>
&lt;span class="nv">$lines&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>
&lt;span class="k">foreach&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">$line&lt;/span> &lt;span class="k">in&lt;/span> &lt;span class="no">[System.IO.File]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">ReadLines&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="nb">Get-PSReadLineOption&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">HistorySavePath&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">$line&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">EndsWith&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;`&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nv">$line&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$line&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Substring&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nv">$line&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Length&lt;/span> &lt;span class="p">-&lt;/span> &lt;span class="n">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="nv">$lines&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">$lines&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="s2">&amp;#34;$lines&lt;/span>&lt;span class="se">`n&lt;/span>&lt;span class="s2">$line&amp;#34;&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="k">else&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nv">$line&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="k">continue&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">$lines&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nv">$line&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;$lines&lt;/span>&lt;span class="se">`n&lt;/span>&lt;span class="s2">$line&amp;#34;&lt;/span>
&lt;span class="nv">$lines&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="p">((&lt;/span>&lt;span class="nv">$line&lt;/span> &lt;span class="o">-cne&lt;/span> &lt;span class="nv">$last&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-and&lt;/span> &lt;span class="p">(!&lt;/span>&lt;span class="nv">$pattern&lt;/span> &lt;span class="o">-or&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">$line&lt;/span> &lt;span class="o">-match&lt;/span> &lt;span class="nv">$pattern&lt;/span>&lt;span class="p">)))&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nv">$last&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$line&lt;/span>
&lt;span class="nv">$line&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">)&lt;/span>
&lt;span class="nv">$history&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Reverse&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="nv">$command&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$history&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Out-GridView&lt;/span> &lt;span class="n">-Title&lt;/span> &lt;span class="nb">History &lt;/span>&lt;span class="n">-PassThru&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">$command&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">RevertLine&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">Insert&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="nv">$command&lt;/span> &lt;span class="n">-join&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">`n&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="c">#&lt;/span>
&lt;span class="c"># Ctrl+Shift+j then type a key to mark the current directory.&lt;/span>
&lt;span class="c"># Ctrj+j then the same key will change back to that directory without&lt;/span>
&lt;span class="c"># needing to type cd and won&amp;#39;t change the command line.&lt;/span>
&lt;span class="nv">$global:PSReadLineMarks&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="p">@{}&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">Ctrl&lt;/span>&lt;span class="p">+&lt;/span>&lt;span class="n">J&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-BriefDescription&lt;/span> &lt;span class="n">MarkDirectory&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-LongDescription&lt;/span> &lt;span class="s2">&amp;#34;Mark the current directory&amp;#34;&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-ScriptBlock&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="k">param&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$key&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nv">$arg&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="nv">$key&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="no">[Console]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">ReadKey&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$true&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="nv">$global:PSReadLineMarks&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="nv">$key&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">KeyChar&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$pwd&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">Ctrl&lt;/span>&lt;span class="p">+&lt;/span>&lt;span class="n">j&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-BriefDescription&lt;/span> &lt;span class="n">JumpDirectory&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-LongDescription&lt;/span> &lt;span class="s2">&amp;#34;Goto the marked directory&amp;#34;&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-ScriptBlock&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="k">param&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$key&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nv">$arg&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="nv">$key&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="no">[Console]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">ReadKey&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="nv">$dir&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$global:PSReadLineMarks&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="nv">$key&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">KeyChar&lt;/span>&lt;span class="p">]&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">$dir&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nb">cd &lt;/span>&lt;span class="nv">$dir&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">InvokePrompt&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="nb">Set-PSReadLineKeyHandler&lt;/span> &lt;span class="n">-Key&lt;/span> &lt;span class="n">Alt&lt;/span>&lt;span class="p">+&lt;/span>&lt;span class="n">j&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-BriefDescription&lt;/span> &lt;span class="n">ShowDirectoryMarks&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-LongDescription&lt;/span> &lt;span class="s2">&amp;#34;Show the currently marked directories&amp;#34;&lt;/span> &lt;span class="p">`&lt;/span>
&lt;span class="n">-ScriptBlock&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="k">param&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$key&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nv">$arg&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="nv">$global:PSReadLineMarks&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GetEnumerator&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="p">%&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="no">[PSCustomObject]&lt;/span>&lt;span class="p">@{&lt;/span>&lt;span class="n">Key&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$_&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Key&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nb">Dir &lt;/span>&lt;span class="p">=&lt;/span> &lt;span class="nv">$_&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Value&lt;/span> &lt;span class="p">}&lt;/span> &lt;span class="p">}&lt;/span> &lt;span class="p">|&lt;/span>
&lt;span class="nb">Format-Table&lt;/span> &lt;span class="n">-AutoSize&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Out-Host&lt;/span>
&lt;span class="no">[Microsoft.PowerShell.PSConsoleReadLine]&lt;/span>&lt;span class="p">::&lt;/span>&lt;span class="n">InvokePrompt&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="c">#endregion&lt;/span>
&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>读《万千微尘纷坠心田》</title><link>https://wentao.org/post/2022-05-28-about-read-in-book/</link><pubDate>Sat, 28 May 2022 23:46:00 +0800</pubDate><guid>https://wentao.org/post/2022-05-28-about-read-in-book/</guid><description>&lt;p>《万千微尘纷坠心田》的副标题是-文学阅读的生命化.讲我们应该如何读书、怎么从读书变成读进一本书.可以说是一本怎么讲吃书的一本书了.现在这个时代可能最不缺的就是书了,但是各类统计又在说读书的人少了.一方面获取咨询、知识的渠道多了.阅读不再是唯一的渠道了.&lt;/p>
&lt;p>其中有一篇有如下的内容:&lt;/p>
&lt;blockquote>
&lt;p>小说的创作,意味着我们从日常现实的领域纵身一跳,进入一个想象的生活的领域.想象并不意味着轻盈,一篇能够称之为好的小说,也绝不是任由想象的线索,安排词句和时间进行组合.&lt;/p>
&lt;/blockquote>
&lt;p>小说的阅读其实也是这样,读一些大部头小说的时候,了解当时的时空背景是很重要的.好的文字给人的带入感要远远高于视频的.读《战争与和平》,《飘》这些的时候,了解当时的历史背景对阅读会有很大的帮助.但是在一些科幻小说的时候,就可能不能这么做了.不过好的科幻小说,除了本身一个很重的概念一直支撑这整本小说.作者在构建整个环境的时候也会投入很多的笔墨.整体是自洽的这点很重要.&lt;/p>
&lt;p>其中有篇讲了文本细读.这个其实用到编程中也是一样的.看别人写的代码,其实就跟读小说一样,有好有坏.但是如果真的代入进去,去发现他当时为什么这么写.看到代码之外的内容.和用户讨论需求的时候也是如此,透过讨论真正的看到他们内心想要的内容.&lt;/p>
&lt;p>后面有篇分析石黑一雄的《远山深影》,又从另外一个角度理解了下这篇小说.&lt;/p></description></item><item><title>Emacs添加腾讯会议连接</title><link>https://wentao.org/post/2022-05-26-emacs-with-wemeet/</link><pubDate>Thu, 26 May 2022 17:06:00 +0800</pubDate><guid>https://wentao.org/post/2022-05-26-emacs-with-wemeet/</guid><description>&lt;p>这段时间因为疫情居家办公的时候太多了,各种腾讯会议不断.用了 &lt;code>org-mode&lt;/code> 来做待办的提醒.但是在电脑上怎么快速进入会议呢?想着通过&lt;a href="https://orgmode.org/manual/External-Links.html"target="_blank">External Links (The Org Manual)&lt;/a>的方式来实现快速打开腾讯会议.&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-lisp" data-lang="lisp">
&lt;span class="p">(&lt;/span>&lt;span class="nb">defun&lt;/span> &lt;span class="nv">make-wemeet-link&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">meet_id&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="nv">browse-url&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">concat&lt;/span> &lt;span class="s">&amp;#34;wemeet://page/inmeeting?meeting_code=&amp;#34;&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">s-replace&lt;/span> &lt;span class="s">&amp;#34;-&amp;#34;&lt;/span> &lt;span class="s">&amp;#34;&amp;#34;&lt;/span> &lt;span class="nv">meet_id&lt;/span>&lt;span class="p">))))&lt;/span>
&lt;span class="p">(&lt;/span>&lt;span class="nv">org-add-link-type&lt;/span> &lt;span class="s">&amp;#34;wemeet&amp;#34;&lt;/span> &lt;span class="ss">&amp;#39;make-wemeet-link&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/code>&lt;/pre>&lt;/div>&lt;p>这样之后通过创建一个 &lt;code>[[wemeet:123-345-128]]&lt;/code> 的连接.就能够通过 &lt;code>url scheme&lt;/code> 来快速启动腾讯会议并入会.&lt;/p></description></item><item><title>一个新的终端模拟器WezTerm</title><link>https://wentao.org/post/2022-05-15-wezterm/</link><pubDate>Sun, 15 May 2022 15:27:00 +0800</pubDate><guid>https://wentao.org/post/2022-05-15-wezterm/</guid><description>&lt;p>&lt;a href="https://wezfurlong.org/wezterm/"target="_blank">wezterm&lt;/a> 是&lt;a href="https://github.com/wez/"target="_blank">@wez&lt;/a>利用&lt;a href="https://www.rust-lang.org/"target="_blank">Rust&lt;/a>开发的一款终端模拟器.和&lt;a href="https://github.com/microsoft/terminal"target="_blank">microsoft/terminal&lt;/a>还有 &lt;code>ITerm&lt;/code> 类似.&lt;/p>
&lt;p>支持的&lt;a href="https://wezfurlong.org/wezterm/features.html"target="_blank">特性&lt;/a>也特别多,比较有特色的是可以通过 &lt;code>lua&lt;/code> 来配置或者增加一些特性.比方把 &lt;code>~/.ssh/config&lt;/code> 中的host直插入到 &lt;code>wezterm&lt;/code> 中的 &lt;code>launch_menu&lt;/code> ,在打开 &lt;code>launch_menu&lt;/code> 的时候可以通过 &lt;code>/&lt;/code> 来查找.&lt;/p>
&lt;p>在快捷键支持这块有一个 &lt;code>leader key&lt;/code> 的设定类似 &lt;code>vim&lt;/code> 或者 &lt;code>emacs&lt;/code> 里面的快捷键配置.&lt;/p>
&lt;p>下面是鼓捣出来一个配置,如果有兴趣尝试的话可以试试看.把这个配置放到 &lt;code>~/.config/wezterm/wezterm.lua&lt;/code> 就可以了.&lt;/p>
&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-lua" data-lang="lua">&lt;span class="kd">local&lt;/span> &lt;span class="kr">function&lt;/span> &lt;span class="nf">basename&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">s&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kr">return&lt;/span> &lt;span class="n">string.gsub&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">s&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;(.*[/&lt;/span>&lt;span class="se">\\&lt;/span>&lt;span class="s2">])(.*)&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;%2&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kr">end&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">wezterm&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">require&lt;/span> &lt;span class="s2">&amp;#34;wezterm&amp;#34;&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">SOLID_LEFT_ARROW&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xe0ba&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">SOLID_LEFT_MOST&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0x2588&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">SOLID_RIGHT_ARROW&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xe0bc&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">ADMIN_ICON&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xf49c&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">CMD_ICON&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xe62a&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">NU_ICON&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xe7a8&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">PS_ICON&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xe70f&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">ELV_ICON&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xfc6f&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">WSL_ICON&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xf83c&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">YORI_ICON&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xf1d4&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">NYA_ICON&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xf61a&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">VIM_ICON&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xe62b&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">PAGER_ICON&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xf718&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">FUZZY_ICON&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xf0b0&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">HOURGLASS_ICON&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xf252&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">SUNGLASS_ICON&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xf9df&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">PYTHON_ICON&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xf820&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">NODE_ICON&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xe74e&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">DENO_ICON&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xe628&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">LAMBDA_ICON&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">utf8.char&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mh">0xfb26&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">SUP_IDX&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;¹&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;²&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;³&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;⁴&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;⁵&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;⁶&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;⁷&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;⁸&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;⁹&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;¹⁰&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="s2">&amp;#34;¹¹&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;¹²&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;¹³&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;¹⁴&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;¹⁵&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;¹⁶&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;¹⁷&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;¹⁸&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;¹⁹&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;²⁰&amp;#34;&lt;/span>&lt;span class="p">}&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">SUB_IDX&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;₁&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₂&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₃&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₄&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₅&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₆&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₇&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₈&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₉&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₁₀&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="s2">&amp;#34;₁₁&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₁₂&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₁₃&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₁₄&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₁₅&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₁₆&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₁₇&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₁₈&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₁₉&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s2">&amp;#34;₂₀&amp;#34;&lt;/span>&lt;span class="p">}&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">launch_menu&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{}&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">ssh_cmd&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;ssh&amp;#34;&lt;/span>&lt;span class="p">}&lt;/span>
&lt;span class="kr">if&lt;/span> &lt;span class="n">wezterm.target_triple&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;x86_64-pc-windows-msvc&amp;#34;&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">ssh_cmd&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;powershell.exe&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;ssh&amp;#34;&lt;/span>&lt;span class="p">}&lt;/span>
&lt;span class="n">table.insert&lt;/span>&lt;span class="p">(&lt;/span>
&lt;span class="n">launch_menu&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="n">label&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;PowerShell Core&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="n">args&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;pwsh.exe&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;-NoLogo&amp;#34;&lt;/span>&lt;span class="p">}&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">)&lt;/span>
&lt;span class="n">table.insert&lt;/span>&lt;span class="p">(&lt;/span>
&lt;span class="n">launch_menu&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="n">label&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;NyaGOS&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="n">args&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;nyagos.exe&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;--glob&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">)&lt;/span>
&lt;span class="kr">end&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">ssh_config_file&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wezterm.home_dir&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34;/.ssh/config&amp;#34;&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">f&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">io.open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ssh_config_file&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kr">if&lt;/span> &lt;span class="n">f&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">line&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">read&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;*l&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kr">while&lt;/span> &lt;span class="n">line&lt;/span> &lt;span class="kr">do&lt;/span>
&lt;span class="kr">if&lt;/span> &lt;span class="n">line&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">find&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Host &amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">1&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">host&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">line&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">gsub&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Host &amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">table.insert&lt;/span>&lt;span class="p">(&lt;/span>
&lt;span class="n">launch_menu&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="n">label&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;SSH &amp;#34;&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">host&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="n">args&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;ssh&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">host&lt;/span>&lt;span class="p">}&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">)&lt;/span>
&lt;span class="kr">end&lt;/span>
&lt;span class="n">line&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">read&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;*l&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kr">end&lt;/span>
&lt;span class="n">f&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">close&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="kr">end&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">mouse_bindings&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="n">event&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="n">Down&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="n">streak&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">button&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;Right&amp;#34;&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;NONE&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="n">action&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wezterm.action&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="n">PasteFrom&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;Clipboard&amp;#34;&lt;/span>&lt;span class="p">}&lt;/span>
&lt;span class="p">},&lt;/span>
&lt;span class="c1">-- Change the default click behavior so that it only selects&lt;/span>
&lt;span class="c1">-- text and doesn&amp;#39;t open hyperlinks&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="n">event&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="n">Up&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="n">streak&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">button&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;Left&amp;#34;&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;NONE&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="n">action&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wezterm.action&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="n">CompleteSelection&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;PrimarySelection&amp;#34;&lt;/span>&lt;span class="p">}&lt;/span>
&lt;span class="p">},&lt;/span>
&lt;span class="c1">-- and make CTRL-Click open hyperlinks&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="n">event&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="n">Up&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="n">streak&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">button&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;Left&amp;#34;&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;CTRL&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="n">action&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;OpenLinkAtMouseCursor&amp;#34;&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="n">wezterm.on&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;format-tab-title&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="kr">function&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tab&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">tabs&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">panes&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">config&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">hover&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">max_width&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">edge_background&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;#121212&amp;#34;&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">background&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;#4E4E4E&amp;#34;&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">foreground&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;#1C1B19&amp;#34;&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">dim_foreground&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;#3A3A3A&amp;#34;&lt;/span>
&lt;span class="kr">if&lt;/span> &lt;span class="n">tab.is_active&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">background&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;#FBB829&amp;#34;&lt;/span>
&lt;span class="n">foreground&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;#1C1B19&amp;#34;&lt;/span>
&lt;span class="kr">elseif&lt;/span> &lt;span class="n">hover&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">background&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;#FF8700&amp;#34;&lt;/span>
&lt;span class="n">foreground&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;#1C1B19&amp;#34;&lt;/span>
&lt;span class="kr">end&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">edge_foreground&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">background&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">process_name&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tab.active_pane&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">foreground_process_name&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">pane_title&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tab.active_pane&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">title&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">basename&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">process_name&lt;/span>&lt;span class="p">):&lt;/span>&lt;span class="n">gsub&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;%.exe$&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">title_with_icon&lt;/span>
&lt;span class="kr">if&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;nu&amp;#34;&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">NU_ICON&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34; NuShell&amp;#34;&lt;/span>
&lt;span class="kr">elseif&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;pwsh&amp;#34;&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">PS_ICON&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34; PS&amp;#34;&lt;/span>
&lt;span class="kr">elseif&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;cmd&amp;#34;&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">CMD_ICON&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34; CMD&amp;#34;&lt;/span>
&lt;span class="kr">elseif&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;elvish&amp;#34;&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ELV_ICON&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34; Elvish&amp;#34;&lt;/span>
&lt;span class="kr">elseif&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;wsl&amp;#34;&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;wslhost&amp;#34;&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WSL_ICON&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34; WSL&amp;#34;&lt;/span>
&lt;span class="kr">elseif&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;nyagos&amp;#34;&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">NYA_ICON&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">pane_title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">gsub&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;.*: (.+) %- .+&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;%1&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kr">elseif&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;yori&amp;#34;&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">YORI_ICON&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">pane_title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">gsub&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34; %- Yori&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kr">elseif&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;nvim&amp;#34;&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">VIM_ICON&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">pane_title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">gsub&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;^(%S+)%s+(%d+/%d+) %- nvim&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34; %2 %1&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kr">elseif&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;bat&amp;#34;&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;less&amp;#34;&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;moar&amp;#34;&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">PAGER_ICON&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">exec_name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">upper&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="kr">elseif&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;fzf&amp;#34;&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;hs&amp;#34;&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;peco&amp;#34;&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">FUZZY_ICON&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">exec_name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">upper&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="kr">elseif&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;btm&amp;#34;&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;ntop&amp;#34;&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">SUNGLASS_ICON&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">exec_name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">upper&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="kr">elseif&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;python&amp;#34;&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;hiss&amp;#34;&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">PYTHON_ICON&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">exec_name&lt;/span>
&lt;span class="kr">elseif&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;node&amp;#34;&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">NODE_ICON&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">exec_name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">upper&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="kr">elseif&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;deno&amp;#34;&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">DENO_ICON&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">exec_name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">upper&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="kr">elseif&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;bb&amp;#34;&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;cmd-clj&amp;#34;&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;janet&amp;#34;&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="n">exec_name&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;hy&amp;#34;&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">LAMBDA_ICON&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">exec_name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">gsub&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;bb&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;Babashka&amp;#34;&lt;/span>&lt;span class="p">):&lt;/span>&lt;span class="n">gsub&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;cmd%-clj&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;Clojure&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kr">else&lt;/span>
&lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">HOURGLASS_ICON&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">exec_name&lt;/span>
&lt;span class="kr">end&lt;/span>
&lt;span class="kr">if&lt;/span> &lt;span class="n">pane_title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">match&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;^Administrator: &amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">title_with_icon&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">ADMIN_ICON&lt;/span>
&lt;span class="kr">end&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">left_arrow&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">SOLID_LEFT_ARROW&lt;/span>
&lt;span class="kr">if&lt;/span> &lt;span class="n">tab.tab_index&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="kr">then&lt;/span>
&lt;span class="n">left_arrow&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">SOLID_LEFT_MOST&lt;/span>
&lt;span class="kr">end&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">id&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">SUB_IDX&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">tab.tab_index&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">pid&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">SUP_IDX&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">tab.active_pane&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">pane_index&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">title&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">wezterm.truncate_right&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">title_with_icon&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">max_width&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">6&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;span class="kr">return&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">Attribute&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">Intensity&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;Bold&amp;#34;&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">Background&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">Color&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">edge_background&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">Foreground&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">Color&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">edge_foreground&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">Text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">left_arrow&lt;/span>&lt;span class="p">},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">Background&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">Color&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">background&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">Foreground&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">Color&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">foreground&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">Text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">id&lt;/span>&lt;span class="p">},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">Text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">title&lt;/span>&lt;span class="p">},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">Foreground&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">Color&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">dim_foreground&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">Text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">pid&lt;/span>&lt;span class="p">},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">Background&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">Color&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">edge_background&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">Foreground&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">Color&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">edge_foreground&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">Text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">SOLID_RIGHT_ARROW&lt;/span>&lt;span class="p">},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">Attribute&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">Intensity&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;Normal&amp;#34;&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="kr">end&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">wezterm.on&lt;/span>&lt;span class="p">(&lt;/span>
&lt;span class="s2">&amp;#34;update-right-status&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="kr">function&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">window&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">date&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wezterm.strftime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;%Y-%m-%d %H:%M:%S &amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">window&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">set_right_status&lt;/span>&lt;span class="p">(&lt;/span>
&lt;span class="n">wezterm.format&lt;/span>&lt;span class="p">(&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">Text&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">date&lt;/span>&lt;span class="p">}&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">)&lt;/span>
&lt;span class="p">)&lt;/span>
&lt;span class="kr">end&lt;/span>
&lt;span class="p">)&lt;/span>
&lt;span class="kd">local&lt;/span> &lt;span class="n">default_prog&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;pwsh.exe&amp;#34;&lt;/span>&lt;span class="p">}&lt;/span>
&lt;span class="kr">return&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="n">set_environment_variables&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="n">PATH&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wezterm.executable_dir&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="s2">&amp;#34;;&amp;#34;&lt;/span> &lt;span class="o">..&lt;/span> &lt;span class="n">os.getenv&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;PATH&amp;#34;&lt;/span>&lt;span class="p">),&lt;/span>
&lt;span class="p">},&lt;/span>
&lt;span class="n">window_frame&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">window_frame&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="c1">-- needed only if using fancy tab&lt;/span>
&lt;span class="n">window_background_opacity&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">0.8&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="n">launch_menu&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">launch_menu&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="n">mouse_bindings&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">mouse_bindings&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="n">disable_default_key_bindings&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="n">default_prog&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">default_prog&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="n">font&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wezterm.font&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Fira Code&amp;#34;&lt;/span>&lt;span class="p">),&lt;/span>
&lt;span class="n">colors&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="n">tab_bar&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="n">background&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">TAB_BAR_BG&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="p">},&lt;/span>
&lt;span class="p">},&lt;/span>
&lt;span class="n">text_background_opacity&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">0.95&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="n">leader&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;CTRL&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;span class="n">keys&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;`&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER|CTRL&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">SendString&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;`&amp;#34;&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;v&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;CTRL&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">PasteFrom&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;Clipboard&amp;#34;&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;-&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">SplitVertical&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">domain&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;CurrentPaneDomain&amp;#34;&lt;/span>&lt;span class="p">}}},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\\&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">SplitHorizontal&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">domain&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;CurrentPaneDomain&amp;#34;&lt;/span>&lt;span class="p">}}},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;c&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">SpawnTab&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;CurrentPaneDomain&amp;#34;&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">key&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;h&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">ActivatePaneDirection&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;Left&amp;#34;&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">key&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;j&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">ActivatePaneDirection&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;Up&amp;#34;&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">key&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;k&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">ActivatePaneDirection&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;Down&amp;#34;&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">key&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;l&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">ActivatePaneDirection&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;Right&amp;#34;&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;,&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;ShowLauncher&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;span class="p">{&lt;/span>&lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;b&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;ShowTabNavigator&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;f&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;QuickSelect&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\t&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;ActivateLastTab&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;1&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">ActivateTab&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;2&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">ActivateTab&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;3&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">ActivateTab&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;4&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">ActivateTab&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;5&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">ActivateTab&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;6&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">ActivateTab&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;7&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">ActivateTab&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">6&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;8&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">ActivateTab&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">7&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;9&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">ActivateTab&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">8&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="c1">-- { key = &amp;#34;l&amp;#34;, mods = &amp;#34;LEADER&amp;#34;, action=wezterm.action{EmitEvent=&amp;#34;toggle-ligature&amp;#34;}},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;n&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">ActivateTabRelative&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">ActivateTabRelative&lt;/span>&lt;span class="o">=-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;amp;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER|SHIFT&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">CloseCurrentTab&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">confirm&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="p">}}},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">CloseCurrentPane&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">confirm&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="p">}}},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;w&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;ALT&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">({&lt;/span> &lt;span class="n">CopyTo&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;Clipboard&amp;#34;&lt;/span> &lt;span class="p">})&lt;/span> &lt;span class="p">},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;CTRL&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">({&lt;/span> &lt;span class="n">PasteFrom&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;Clipboard&amp;#34;&lt;/span> &lt;span class="p">})&lt;/span> &lt;span class="p">},&lt;/span>
&lt;span class="p">{&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;Tab&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">mods&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;LEADER&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">wezterm.action&lt;/span>&lt;span class="p">({&lt;/span> &lt;span class="n">ActivateTabRelative&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span> &lt;span class="p">})&lt;/span> &lt;span class="p">},&lt;/span>
&lt;span class="p">},&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;/code>&lt;/pre>&lt;/div></description></item></channel></rss>