小编unp*_*680的帖子

突出显示vim中函数体中的参数

一些可以从IDE借来的东西.因此,我们的想法是在函数体内突出显示函数参数(以及可能的范围变量名).这是某些C的默认行为:

普通的vim突出显示

好吧,如果我把光标放在里面func我希望看到参数foobar突出显示更好地遵循算法逻辑.请注意,类似命名的fooin func2不会变亮.虽然这个奢侈品可以省略......

func hilighted

使用本地范围的变量,我还希望本地初始化变量highlit:

在里面突出显示<code>let</code>,<code>loop</code>,<code>for</code>,<code>doseq</code>绑定实例.</p>

<p>我的vimscript-fu并不那么强大; 我怀疑我们需要</p>

<ul>
<li>从光标下的函数定义中解析(非regexply?)参数.当然,这将是语言特定的.我的首要任务是Clojure.</li>
<li>定义语法区域以仅覆盖给定的函数/范围</li>
<li>提供所需的语法匹配</li>
</ul>

<p>作为一个函数,这可以映射到一个密钥(如果资源非常密集)或者<code>CursorMoved</code>如果不是那么慢.</p>

<p>好的,现在.有没有人写过这样的东西?vimscript大师是否知道如何真正开始编写这样的脚本?</p>

<p>很抱歉有轻微的offtopicness和糟糕的格式.随意编辑/格式化.或投票结束.</p> </div>
        <p>
          <a href=vim clojure

54
推荐指数
2
解决办法
2331
查看次数

什么时候使用`zipmap`和`map vector`?

我问的是zipmap构造的特殊性只是发现我显然做错了.所以我(map vector v u)在这个过程中学到了很多.但在此案例之前,我曾使用过zipmap来完成(map vector ...)工作.它是否有用,因为结果地图足够小,可以整理出来?

而对于实际问题:有什么用途zipmap,以及如何/何时使用它.什么时候使用(map vector ...)

我原来的问题需要原始订单,所以映射任何东西都不是一个好主意.但基本上 - 除了结果对的顺序 - 这两种方法是等价的,因为seq'd map变成了一系列向量.

(for [pair (map vector v (rest v))]
  ( ... )) ;do with (first pair) and (last pair)

(for [pair (zipmap v (rest v))]
 ( ... )) ;do with (first pair) and (last pair)
Run Code Online (Sandbox Code Playgroud)

clojure

23
推荐指数
2
解决办法
1万
查看次数

Python的StringIO与`with`语句不相符

我需要存根tempfile并且StringIO看起来很完美.只有这一切都失败了:

In [1]: from StringIO import StringIO
In [2]: with StringIO("foo") as f: f.read()

--> AttributeError: StringIO instance has no attribute '__exit__'
Run Code Online (Sandbox Code Playgroud)

提供固定信息而不是读取具有不确定内容的文件的常用方法是什么?

python unit-testing stringio stubs

19
推荐指数
1
解决办法
5537
查看次数

在freemarker中切换枚举

我认为切换枚举将是FreeMarker中非常基本的东西,所以我可以编写如下内容:

<!-- Doesn't work -->
Dear
<#switch gender>
    <#case MALE>
        sir
        <#break>
    <#case FEMALE>
        madam
        <#break>
    <#default>
        sir/madam
<#/switch>
Run Code Online (Sandbox Code Playgroud)

但似乎访问枚举是一个丑陋而复杂的问题.是否有一种正确,干净的方式来打开枚举值?我应该在模特中以不同方式存储它吗?

java enums freemarker

14
推荐指数
1
解决办法
5803
查看次数

你能用heredocuments在一个bash脚本中嵌入AWK吗?

编写一个几乎包含Awk脚本的shell脚本.我想在awk部分中使用我的语法着色,所以我觉得必须有更好的方法将awk脚本嵌入bash而不仅仅引用脚本.

或者它是在单独的文件上开发awk并awk -f在bash脚本中使用直到脚本完成的最佳方法?我想一直保持在一个文件中!

#!/bin/bash
awkscript='
BEGIN{
    print "test"
}
{print $3}'
df | awk "$awkscript"
Run Code Online (Sandbox Code Playgroud)

这是引用方式,如果你问我,那很难看.这里有heredocs的机会吗?

bash awk

10
推荐指数
3
解决办法
7024
查看次数

编译正则表达式时会发生什么?

我们都知道你可以将你常用的正则表达式编译成性能非常好的东西.但是这幕巫术背后发生了什么呢?

我想那里有一个有限状态自动机,但你必须比我更清楚.

regex language-agnostic

8
推荐指数
1
解决办法
401
查看次数

从文件中创建zsh完整参数

zsh很棒,但它的完成系统非常多样化.文档缺乏很好的例子.是否有用于完成特定应用程序的模板.完成将从文件中获取其匹配数据,由换行符分隔?

我尝试修改我的旧示例,将匹配数据"生效":

~ % cat .zsh/completers/_jazzup 
#compdef jazz_up
_arguments "2: :(`mpc lsplaylists|sed -e 's# #\\\\ #g'`)"
Run Code Online (Sandbox Code Playgroud)

我可以cat my_file在那里提供而不是mpc调用等等但是有没有更优雅的方式来完成这个简单的任务?并且该完成具有特定于位置:您是否可以提供一个示例,其中zsh将在识别程序名称后的任何时刻尝试完成?

匹配数据将具有空格等等,完成应该逃避WS.例子:

Foo bar
Barbaric
Get it (42)
Run Code Online (Sandbox Code Playgroud)

现在,如果为命令配置完成Say,我们应该从以下方面获得这种行为zsh:

$ Say Fo<TAB>
$ Say Foo\ bar
$ Say Ge<TAB>
$ Say Get\ it\ \(42\)
Run Code Online (Sandbox Code Playgroud)

zsh zsh-completion

8
推荐指数
1
解决办法
1834
查看次数

在功能上按空格分割字符串,按引号分组!

在Clojure [1]中编写惯用的函数代码,如何编写一个用空格分割字符串但保持引用短语完整的函数?快速解决方案当然是使用正则表达式,但如果没有它们,这应该是可能的.快速浏览一下似乎很难!我在命令式语言中写了类似的东西,但我想看看功能性的递归方法是如何工作的.

快速检查我们的功能应该做什么:

"Hello there!"  -> ["Hello", "there!"]
"'A quoted phrase'" -> ["A quoted phrase"]
"'a' 'b' c d" -> ["a", "b", "c", "d"]
"'a b' 'c d'" -> ["a b", "c d"]
"Mid'dle 'quotes do not concern me'" -> ["Mid'dle", "quotes do not concern me"]
Run Code Online (Sandbox Code Playgroud)

我不介意引号之间的间距是否变化(因此可以先使用空格分割简单).

"'lots    of   spacing' there" -> ["lots of spacing", "there"] ;is ok to me
Run Code Online (Sandbox Code Playgroud)

[1]这个问题可以在一般水平上回答,但我想Clojure中的一种功能方法可以轻松地转换为Haskell,ML等.

recursion functional-programming clojure

7
推荐指数
2
解决办法
1353
查看次数

Scheme中引用的符号

我不是计划专家所以不确定我是否在这里使用正确的术语.让代码说明一切:

CSI> (define tree '(1 2 3 'Symb 4 5 6))
#<unspecified>
CSI> tree
(1 2 3 (quote Symb) 4 5 6)
CSI> (symbol? 'Symb)
#t
CSI> (map symbol? tree)
(#f #f #f #f #f #f #f)
Run Code Online (Sandbox Code Playgroud)

来自Clojure背景,我认为在Scheme中使用符号就像Clojure中的关键字一样.我应该通过嵌套列表结构并用函数调用替换符号.这是我的维度解决方案,它确实有效:

(define (print-track track attrs)
    (apply fmt #t
        (map (lambda (attr)
               (cond 
                     ((symbol? attr) (get-attr attr track))
                     (else           attr)))
             attrs)))
Run Code Online (Sandbox Code Playgroud)

(symbol?)线上方的空白区域是(list?)有条件的,但这可能是错误的方法.

我正在使用Chicken Scheme.

scheme clojure

7
推荐指数
1
解决办法
436
查看次数

vi编辑没有回复

vi编辑器没有响应ksh中的任何命令.

我试过q,ctrl + c,q !,没有回复.我必须在secureCrt上关闭连接并重新登录.

有谁知道原因和解决方案?

vi

7
推荐指数
1
解决办法
4119
查看次数