问题标签 [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.

0 投票
0 回答
68 浏览

zsh - 如果运行不同的小部件,有没有办法清除命令行下方的消息(zle -M "message")?

我有一个 zsh/zle 小部件,它通常/经常连续运行多次。我想使用显示一条消息,zle -M但如果运行我以外的小部件我想清除该消息。有没有办法做到这一点?

我已经翻阅了文档,但我没有看到一个钩子或其他任何东西来解决这个问题。我唯一想到的是将 bindkey 报告的每个键绑定替换为头部补丁包装器,然后在它被击中时恢复它们,但我认为这会导致查看 , 等的小部件出现$WIDGET问题$LASTWIDGET

0 投票
1 回答
716 浏览

git - zsh 使用 prezto 具有与左侧相同级别的右侧提示

我是新手zsh,也是prezto。现在就像在我的 bash shell 中一样,我想在左边有当前路径,在右边有我当前的分支,正如你在图片中看到的那样,到目前为止很好.....

迅速的

...现在的问题是提示的正确部分在第二行,而不是在路径所在的那一行!

(完整的源代码:这里

如何在我的自定义 prezto 提示中同时实现路径和分支?

0 投票
1 回答
248 浏览

zsh - 如何正确绑定`` zsh 5.0.8 中的 zle vi 可视模式

<ESC>zle vi-mode 在可视模式下的标准行为是什么都不做。但我希望<esc>在 vi-mode 可视模式下按下的操作会将键盘映射切换到 vi-normal 模式(vicmd)。就像在标准 vi 中一样。

我试过这个:

bindkey -M visual '\e' vi-cmd-mode

但它没有用。

是我正在使用的 vi 模式配置文件

我怎样才能达到预期的行为?

0 投票
1 回答
69 浏览

zsh - 用于大小写操作的小部件:普通模式下的“gU”和可视模式下的“U”

我认为已经有一个小部件g~操作的小部件。所以g~iw会反转一个单词的大小写。

我阅读了 zshzle 手册,但没有找到可以给我行为的小部件gU在 vim 中为我提供(大写操作)行为的小部件。

例如:对于单词“path_variable”,将光标放在v,gUiW 会将世界更改为“PATH_VARIABLE”,依此类推。

小部件capitalize-word似乎不是答案。我已经测试过了。

我还发现了关键U视觉模式下的键不会大写视觉选择的文本/区域。我也没有在手册中找到可以为我提供所需行为的小部件。

这是编写自定义小部件的问题,还是必须在上游提交带有 c 代码更改的补丁?如何gU在正常模式和U可视模式下绑定以在 zle vi 模式下实现所需的行为?

0 投票
0 回答
110 浏览

shell - 异步 zle(zsh 行编辑器)

我已经修改了我的 zsh 以始终猜测/自动建议我尝试输入的内容,方法是通过修改self-insert运行一个在运行 default 后guess解释和修改的函数。$BUFFERzle .self-insert

问题是这个guess函数可能需要一段时间才能执行,这意味着粘贴一行输入需要一些时间(因为字符一个接一个地出现,每个字符之间可能有长达 1 秒的延迟),并且在慢速机器上延迟会即使在我输入命令时也会很明显。

我想做的是guess在用户键入另一个键后立即终止此功能,因为guess基于前一个键的原始键$BUFFER无论如何都不再相关。这样,键盘输入不会被guess函数阻止,并且只有在输入另一个键之前成功完成时,guess函数才会更新。$BUFFER

关于如何做到这一点的任何建议都会非常有帮助。谢谢。

0 投票
1 回答
334 浏览

zsh - RPROMPT 未在初始提示中显示

尝试使用 RPROMPT 配置我的 zsh 提示时,我看到了一个奇怪的问题。我没有使用 oh-my-zsh 或任何其他插件管理器。这是我的.zshrc文件:

但是,在第一个提示符下(打开新的 shell 或新的 tmux 窗口/窗格时),foo不会显示。(然后我按回车键,RPROMPT 显示新提示。)

为什么第一个不显示?

0 投票
1 回答
660 浏览

intellij-idea - 如何在 IntelliJ 终端中支持特殊/重音字符

0 投票
2 回答
212 浏览

zsh - 在 zsh 中恢复中断的命令

在 zsh 中,如果一个人不小心中断了一个命令 (^C),有没有一种快速的方法来恢复完全中断的命令行?

例如,

我想在光标位置恢复“这是一个长命令”。

0 投票
0 回答
279 浏览

zsh - zsh 清除上一行提示

我在 zsh 中有一个多行提示。我发现有时当我CTRL-C退出自动完成时,提示的前一行会意外删除。这是一个 gif 显示这种情况发生在ls,vimfzf: http://imgur.com/1jTrrzA

以下是发生的事件的概要:

  1. ls所有文件
  2. ls然后制表符完成并CTRL-C退出第一个完成(前一行提示被删除)
  3. ls然后 tab 完成并CTRL-C退出第二个完成。提示的上一行不会被删除
  4. 与第 2 步相同,但vim改为
  5. 与第 3 步相同,但我点击Enter而不是CTRL-C,这是我的错误。但是,如果我CTRL-C退出此示例(非第一次完成),则不会删除前一行
  6. 展示如何fzf多次遭受相同的问题

我发现在第 2 步和第 4 步中显示的问题在单行提示下仍然存在。但是fzf,不会因单行提示而中断。

我的整个提示可以在http://pastebin.com/JwufRy6m找到,它是https://github.com/sorin-ionescu/prezto/blob/master/modules/prompt/functions/prompt_sorin_setup的修改版本我公司的 mercurial 存储库。我的提示文件中感兴趣的行(我认为)是 166 和 167(第 167 行 == 第 166 行减号$prompt_newline)。

我尝试创建多行提示而不使用以下操作$prompt_newline

但这对我来说没有任何帮助,因为单行提示仍然存在部分问题。

0 投票
2 回答
1193 浏览

command-prompt - 绘制 ZSH 提示时获取当前光标位置

我正在尝试从绘制 ZSH shell 提示符的函数中将当前光标位置(当前行号和列)读入变量中。我的目标是在提示下方显示内容,前提是有足够的空行不会导致额外的滚动。

在交互式 shell 中,我可以使用以下命令:

但是,如果我启动 cleanzsh -f并将其放入呈现提示时执行的函数中,它将停止工作:

终端返回的 ANSI 转义序列被附加到当前命令(就像我在键盘上键入它一样),但不会被read -t 1 -s -d 'R' line上面的命令吞噬。我怀疑 ZSH 在绘制提示时禁用了对 STDIN 的访问,但我不知道如何临时重新获得对它的访问(在绘制提示之前键入的正常键盘击键,或者在绘制提示的十分之一秒内不应该是截获),或如何使用 ZLE 访问该信息。

编辑:如果用户在显示提示之前已经键入了命令的开头,则不应丢弃该输入。到目前为止,我找到的解决方案(请参阅下面我自己的答案)不幸地读取并删除了这些字符。这令人沮丧,因为当我打开一个新的终端窗口并立即开始输入时,在提示出现之前输入的字符将被丢弃。