问题标签 [zsh-zle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
zsh - 使用带有 zsh vi-mode 的 OS X 剪贴板
我目前正在使用带有 zsh 的 vi 模式。我也使用它来获得视觉模式,因此我可以将其包含在正确的提示中。
我还不能让它与 OS X 剪贴板、pbcopy 和 pbpaste 一起使用。我真的很希望能够从可视模式或使用 yy 从正常模式中拉出并将内容粘贴到电子邮件或谷歌搜索中。
我该怎么做呢?
zsh - zle 后向字符未按预期工作
我正在编写一个简单的 ZLE 小部件来快速创建带有<C-j>
. 这是我所拥有的:
但是,这似乎zle .backward-char
不起作用。更令人困惑的是,如果我将脚本修改为:
我得到像)$(
...的输出
似乎zle_subshell
正在反向评估功能。ZLE 小部件是否有一些我不知道的明显问题?
linux - 创建自定义接受行以测量命令在 zsh 中运行所花费的时间
我想测量一个程序在 zsh 中运行所花费的时间。根据时差,我想打印出所花费的时间。我为此编辑了接受行挂钩函数:
但是,问题是“zle accept-line”似乎在后台运行。因此,我总是将 CMDRUNTIME 设为 0。是否有解决方法?
widget - 小部件只能在 ZLE 处于活动状态时调用
我已经处理这个问题将近一个月了,我感到很沮丧,任何帮助将不胜感激。
我正在尝试为我的takenote
命令编写一个小部件。小部件的目的是将文件~/notes
夹中fzf
的所有降价文件提供给用户,以便用户可以选择其中一个并开始编辑它。在用户键入takenote
并按下后,<tab>
我希望小部件能够运行。
这是_takenote.zsh
小部件定义:
不幸的是,上面的代码不起作用,因为zle reset-prompt
如果我删除它,结果将是这样的:
选择文件后,它会变成:
如您所见,这会破坏提示和命令本身。在我看来,我需要做的是zle reset-prompt
在调用之前做一个,compadd
但这只有在我将函数绑定到一个键时才有效,否则,我将收到以下错误:
小部件只能在 ZLE 处于活动状态时调用
zsh - zsh:运行 zle 小部件后的刷新提示
我定义了以下小部件
按下组合键后 cwd 已更改,但终端提示未更新。例如,在这样做之后 ()
终端保持不变。如果我然后输入ls -ld .
,它会显示
这意味着cwd
当时ll
正在运行的已经是/
.
这是非常混乱的,可能会导致严重的错误。(例如,如果按下后^R
我被打断离开办公桌然后回来,我可能会忘记我做了什么)
按键后如何让终端重绘提示?有这样做的zle
功能吗?
zsh - 如何在 ZSH 中将 xonsh 与编辑命令行一起使用?
我想在 ZSH 中打开一个编辑器缓冲区,edit-command-line
并让 xonsh 执行缓冲区的内容。有可能干净地做到这一点吗?
edit-command-line
ZSH 中的命令允许您使用编辑器编辑命令行,然后可以由 ZSH 解释器执行。它对于复杂的多行命令特别有用。
xonsh是一个使用 Python 作为脚本语言的 Python 驱动的 shell。在编写复杂的命令时,我更喜欢 Python 而不是 ZSH 语言。
额外的功劳:告诉编辑器使用 Python 语法高亮而不是 ZSH 会很好。
谢谢!
注意:我可以通过以下方式调用 xonsh ,但它很难看,语法高亮是错误的:
zsh - 在 vi 覆盖模式下使 zsh zle 恢复退格上的字符
我在 Vi 模式下使用 Zsh。
当$KEYMAP == vicmd
(即command-mode)时,我想按退格键将光标向左移动一个字符,而不删除任何内容。[在职的]
当$KEYMAP == viins && $ZLE_STATE == *insert*
(即insert-mode)时,我想按退格键将光标向左移动一个字符,删除该行上紧接的前一个字符。[在职的]
当$KEYMAP == viins && $ZLE_STATE == *overwrite*
(即覆盖模式/替换模式)时,我想按退格键将光标向左移动一个字符,将行上的前一个字符恢复为进入覆盖模式之前最初存在的字符. [不工作]
这是一个例子:
上面的例子显示了当我在覆盖模式下
按退格键时我想要发生的事情;但是,真正发生的情况如下:
请注意,在第二个示例中按下退格键时,不是恢复刚刚被覆盖的原始 3 个字符(即", w"
),而是删除了替换这些字符的最后 3 个字符(即"uff"
),以及光标右侧的字符被移到了左边。
如何获得我想要的行为?
zsh - ZSH 补全系统是否能够同时补全多个参数?
设想:
假设一个脚本my_online_searcher <query>
打开一个带有搜索的浏览器query
,其中query
可以是多个单词。这个相同的脚本还提供了一个-s <query>
显示搜索引擎建议的实用程序标志。例如:
期望的结果:
用户键入$ my_online_searcher lion rema[TAB]
,ZSH 完成菜单将给出上述选项。
尝试达到预期结果:
创建一个小完成脚本_my_online_searcher
,它几乎调用了my_online_search -s <query>
支持函数来给出选项。就像是:
这允许对空格进行转义,并允许 ZSH 将query
视为单个参数。
但是,逐字完成不允许逐步完成建议。它要么重复前面的单词,要么过滤掉不以第一个参数开头的建议(例如$ my_online searcher lion rema[TAB]
-> $ my_online_searcher lion remake lion king
)。
一个想法是修改LBUFFER
完成脚本的内部。事实证明这是不允许的,因为 ZSH 给出了LBUFFER
只读错误
TL;博士:
是否可以让 ZSH 完成系统将命令后的所有参数视为可修改的参数?换句话说,我可以在 ZSH 中同时提议完成多个参数吗?
zsh - 重置提示后,命令行自动跳转到下一行
①我尝试使用动态时钟,time refresh
设置为~/.zshrc
②我完整修改的主题文件是bullet-train.zsh-theme
我的整个~/.zshrc
文件是.zshrc
我的问题是:当我的终端进入 git 存储库时,
命令行会自动跳到下一行。
当我将 .git 的名称更改为 .git__xx 文件夹时。然后jump behavior
停止
我发誓我没有按Enter
,终端自动跳到下一行。我猜这是由 Anaconda 和其中的time refresh
设置引起的~/.zshrc
现象记录在这里
我是不是Enter
故意逼迫发这个问题来浪费别人的时间?
不,如果我按下Enter
使命令行跳转到下一行,这就是效果
一些不恰当的解决方案:
删除主题文件中的 git 部分bullet-train.zsh-theme
。
然后现象消失,但该git display
功能也被禁用。
你能告诉我如何解决这个错误吗?谢谢你的帮助。