小编And*_*art的帖子

什么是Windows命令shell相当于Bash的`true`命令?

我编写了一个Vim插件,用于运行外部命令.我运行的两个命令是diff,grep在"正常"操作期间,每个命令都可以使用非零退出代码退出.

(diff当它找到差异时grep退出退出代码1,当找不到匹配时退出退出代码1.)

出于我的Vimscript的目的,我需要从这些命令返回退出代码0.到目前为止,我正在构建这样的命令:

diff a b || true
Run Code Online (Sandbox Code Playgroud)

和:

grep foo bar || true
Run Code Online (Sandbox Code Playgroud)

这适用于OS X,它显然适用于一些Windows用户.但是,当我通过VirtualBox在OS X上运行Windows 7时,使用Git安装程序安装的Bash,我收到错误消息:

'true'不被识别为内部或外部命令,可操作程序或批处理文件.

在Windows上使用的正确的successful-no-op命令是什么?

git bash shell cmd

13
推荐指数
4
解决办法
5921
查看次数

拆分窗口时如何防止Vim滚动?

当我水平分割窗口时,我想阻止Vim滚动(如果这是正确的词).

假设我在Vim中编辑了10行文件.我在缓冲区有一个窗口,窗口高40行.两个窗户有足够的空间,一个在另一个的顶部,两个都显示整个缓冲区.让我们说scrolloff设置为4.

当我水平分割窗口时,滚动原始窗口,以便scrolloff在窗口顶部和光标所在的行之间显示精确的线条 - 如果scrolloff窗口顶部和光标线之间有多条线 - - 即使没有必要滚动.

换句话说,如果当我分割窗口时光标位于第1,2,3,4或5行,则原始窗口不会"移动"(好).但是如果光标位于第6行,则窗口会滚动,使第2行成为最顶部的可见行...确保scrolloff第(4)行在光标线上方可见(烦人).类似地,如果当我分割窗口时光标在第7行,则原始窗口滚动到该行3成为最顶部的可见行.等等.

有没有办法配置Vim从不在水平分割时滚动原始窗口?

我想可以映射<C-W>s到一个能够满足我想要的功能,但是如果可能的话,我更愿意通过配置来解决这个问题.

vim

10
推荐指数
2
解决办法
1596
查看次数

是否可以针对标准输入git-diff文件?

假设我正在编辑文件.如果我保存文件,git-diff将给我相对于索引的更改.我想在不保存文件的情况下获得相对于索引的更改 - 对于"实时"差异.

一种解决方案是将未保存的更改写入临时文件(即将文件保存在其他位置),git show :file > tempfile2然后将暂存文件写入另一个临时文件()git-diff tempfile tempfile2.然而,这看起来不够优雅.

有没有更好的办法?

git

8
推荐指数
2
解决办法
2569
查看次数

如何编写HAML自定义过滤器?

在HAML中编写了一个简单的自定义过滤器,但我找不到我的Rails应用程序.

过滤器如下所示:

# lib/haml/filters/gfmarkdown.rb
module Haml::Filters::Gfmarkdown
  include Haml::Filters::Base

  # copied from Haml::Filters::Markdown
  lazy_require 'rdiscount', 'peg_markdown', 'maruku', 'bluecloth'

  def render(text)
    # copied from Haml::Filters::Markdown
    engine = case @required
             when 'rdiscount'
               ::RDiscount
             when 'peg_markdown'
               ::PEGMarkdown
             when 'maruku'
               ::Maruku
             when 'bluecloth'
               ::BlueCloth
             end
    engine.new(gfm text).to_html  # gfm method defined elsewhere
  end
end
Run Code Online (Sandbox Code Playgroud)

在我看来,我尝试使用这样的过滤器:

:gfmarkdown
  #{comment.body}
Run Code Online (Sandbox Code Playgroud)

但我收到此错误消息: Filter "gfmarkdown" is not defined.

任何想法如何让我的Rails应用程序拿起我的过滤器?

版本:Rails 2.3.4,Haml 2.2.15.

haml

6
推荐指数
1
解决办法
2207
查看次数

为什么 Rails 数值验证器不使用标准化值?

我的模型有一个小数金额属性。

create_table :foos do |t|
  t.decimal :amount
end

class Foo < ApplicationRecord
end
Run Code Online (Sandbox Code Playgroud)

我总是希望金额为负数,所以我添加了标准化:

class Foo < ApplicationRecord
  normalizes :amount, with: -> amount { - amount.abs }
end
Run Code Online (Sandbox Code Playgroud)

这似乎工作得很好。

现在,为了安全起见,我添加了一个验证:

class Foo < ApplicationRecord
  normalizes :amount, with: -> amount { - amount.abs }
  validates :amount, numericality: {less_than: 0}
end
Run Code Online (Sandbox Code Playgroud)

现在,当我将金额设置为正值时,尽管标准化将其转换为负值,但验证器似乎认为该值仍然是正值并添加了验证错误。

foo = Foo.new amount: 4
foo.amount  # => -4
foo.valid?  # => false
foo.errors  # => #<ActiveModel::Error attribute=amount, type=less_than, options={:value=>4, :count=>0}>
Run Code Online (Sandbox Code Playgroud)

根据测试normalizes标准化发生在验证之前

我怎样才能让它发挥作用?

activerecord ruby-on-rails

4
推荐指数
1
解决办法
115
查看次数

标签 统计

git ×2

activerecord ×1

bash ×1

cmd ×1

haml ×1

ruby-on-rails ×1

shell ×1

vim ×1