我希望有一个命令可以插入到命令管道中,根据vim的语法高亮功能为其输入添加颜色转义.
例如:
cat somefile.js | vim - <???> | less
Run Code Online (Sandbox Code Playgroud)
生成的文本将是somefile.js的文本,但是根据当前vim配置在编辑器中的操作方式进行着色.
我发现这必须是可能的.我同意那里的例子不是一个理智的人可能称之为完全有用的东西,但这并不意味着这个想法永远不会.
我如何告诉ZSH重新加载自己,好像它是一个新调用的shell,但不会丢失历史记录?
这样做的背景是我花了很长时间构建我的ZSH设置,如果我当前的机器出现故障,或者驱动器损坏等,我不想丢失它.为此,我把所有的都放了git存储库中的本地ZSH配置文件.到目前为止没什么新鲜事.
但是现在我想在存储库中添加一个"安装"脚本,以简化在新机器上安装我的设置的过程.一旦文件被安装(在$ {ZDOTDIR-〜}该点到文件存储库中的实际,创建符号链接),我希望脚本重新加载它们,而无需通过EXEC替换当前的进程(并因此失去了历史)并且没有逐个获取文件(冒着我可能以错误的顺序加载它们或者错过ZSH启动过程的其他部分的风险).
是否有一些内置于ZSH的工具,或者其他一些方法告诉它重新加载所有内容,就好像它是一个刚刚启动的实例,同时保留了命令历史记录?
编辑:哈.嗯...当然,我现在已经把我的.zshrc和.zlogin消灭了,虽然后者不是很难(它只是有RVM的设置,很容易恢复).然而,前者会受伤.任何能告诉我如何从源自它的shell中恢复 .zshrc的人都获得了我所有的超级奖励积分.当然,原始问题的答案仍将被标记为已被接受.
我有一个问题.我写了一个shell脚本. 现在我有两个问题 :)
为什么会[].sum
给出未定义的方法错误?
[5, 15, 10].sum
# => NoMethodError: undefined method `sum' for [5, 15, 10]:Array
Run Code Online (Sandbox Code Playgroud)
做ri Array#sum
退货:
Run Code Online (Sandbox Code Playgroud)Array#sum (from gem activesupport-4.2.6) Implementation from Enumerable ------------------------------------------------------------------------------ sum(identity = 0, &block) ------------------------------------------------------------------------------ Calculates a sum from the elements. payments.sum { |p| p.price * p.tax_rate } payments.sum(&:price) The latter is a shortcut for: payments.inject(0) { |sum, p| sum + p.price } It can also calculate the sum without the use of a block. [5, 15, 10].sum # => 30 ## …