我面前有 emacs。
我运行了 find-grep,它有很多命中,这些命中显示在一个窗口中。文件名以绿色显示为超链接。
我将其设为唯一的窗口,Cx 1。
如果我单击文件名,窗口会垂直分割,并且包含找到的文本的文件将显示在另一个窗口中。
如果我单击更多文件名,则新文件将替换旧文件,这就是我想要发生的情况。
到目前为止,一切都很好...
但是,如果我调整窗口大小,则 emacs 会定期(当我单击时)再次分割两个窗口之一,从而使显示难以阅读。然后它将在两个新窗口之间循环打开新文件。有时它会打开更多的窗户,使情况变得更糟。如果我关闭任何这些新窗口,它们就会再次重新打开。
事实上,有时即使我不调整任何东西的大小,这种不正常的行为也会发生。如果我这样做的话,这种情况似乎会更频繁地发生。
我希望 emacs 停止胡闹,只有一个 find-grep 窗口和一个“显示”窗口,并且始终用新文件替换显示窗口。我还希望能够将这些窗口设置为看起来最方便的尺寸。
有什么办法可以实现这一点吗?
或者任何人都可以向我指出一篇关于整个事情(替换此窗口的内容/替换不同窗口的内容/通过拆分创建另一个窗口)的工作原理的文章,这样我就可以理智地破解它。
我想做一些叫做ds的东西
(let [a 2]
(ds a))
Run Code Online (Sandbox Code Playgroud)
- >
"a->2"
Run Code Online (Sandbox Code Playgroud)
和
(let [a 1 b 2 c 3]
(ds a b c))
Run Code Online (Sandbox Code Playgroud)
- >
"a->1, b->2, c->3"
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经达到了:
(defmacro ds3 [a b c]
`(clojure.string/join ", "
[(str '~a "->" ~a)
(str '~b "->" ~b)
(str '~c "->" ~c)]))
Run Code Online (Sandbox Code Playgroud)
这似乎工作:
(let [ a 1 b 2 c 3]
(ds3 a b c)) ; "1->1, 2->2, 3->3"
Run Code Online (Sandbox Code Playgroud)
显然我可以定义ds1 ds2 ds3等...但是我想知道如何使它成为可变参数?
我正在尝试让一段 MATLAB 代码在 Octave 中运行,并且遇到了以下行:
xsm = smooth(x,0.03,'loess')
Run Code Online (Sandbox Code Playgroud)
这似乎没有对应的八度音程。x 只是一个由几千个实数组成的数组。
是否有任何 Octave 代码可以为我完成此操作,如果没有,我在哪里可以找到算法以便我可以编写自己的算法?如果我这样做,我如何将其贡献给 Octave?
所以,我有这个代码:
uint8_t* pbytes = pkt->iov[0].iov_base;
Run Code Online (Sandbox Code Playgroud)
这会创建一个指向结构中以太网数据包开头的指针.
我要求我的朋友查看代码,他说:"你不是在修改它,如果你这样做会很混乱,所以把它变成const".
这似乎是一个好主意,所以:
const uint8_t* pbytes = pkt->iov[0].iov_base;
Run Code Online (Sandbox Code Playgroud)
甚至:
const uint8_t * const pbytes = pkt->iov[0].iov_base;
Run Code Online (Sandbox Code Playgroud)
而现在我在思考,我打赌有很多其他地方我可以做到这一点,我敢打赌,编译器会比找我更好.
我是怎么问这个问题的?(gcc首选,但使用不同的编译器或linting工具没问题,只要它们可以在unix上运行).
如果我创建一个新克隆并检出当前版本,如何将我的工作目录返回到它所处的状态?
对于颠覆我会这样做:
$ svn status --no-ignore | awk '$1 == "?" { print $2 }' | xargs rm -r
Run Code Online (Sandbox Code Playgroud)
对于mercurial:
$ hg status --ignored --unknown | awk ' ( $1 == "?" ) || ( $1 == "I") { print $2 }' | xargs rm -r
Run Code Online (Sandbox Code Playgroud)
所以同一行的答案都很好.但是类似的东西git checkout --clean -r b4a23会更好.
我经常在emacs中编写python.
我经常想重新评估我的文件,我可以使用Ctrl-C Ctrl-C,这会导致解释器重新加载整个文件然后我可以继续播放.
所以,如果我正在编写一个需要输入的程序,我通常会发现自己有两行:
lines = open("/home/jla/inputfile").readlines()
#lines = fileinput.input()
Run Code Online (Sandbox Code Playgroud)
第一行是"开发时要做什么"(从已知的示例输入文件中读取),第二行是"从命令行运行时要做什么"(从stdin读取,或提供的文件名)
显然这很糟糕,所以我在想:
if in_emacs():
lines = open("/home/jla/inputfile").readlines()
if run_from_shell():
lines = fileinput.input()
else:
oops()
Run Code Online (Sandbox Code Playgroud)
我知道怎么写oops()的,但我有点坚持了in_emacs()和run_from_shell(),我想知道,如果你睿智的人们能有所帮助.
我想在makefile中运行diff并捕获输出,
test:
diff a b > tmp
Run Code Online (Sandbox Code Playgroud)
但是diff如果发现任何差异,则返回非零值。
Make将非零返回码解释为错误,即使我使用-diff忽略该错误,它仍然会打印警告。
makefile:7: recipe for target 'test' failed
make: [test] Error 1 (ignored)
Run Code Online (Sandbox Code Playgroud)
我可以闭嘴吗?
几乎总是,我想像这样运行find-grep:
ack --no-heading --no-color"SOMETHING"〜/ myco/firmwaresrc
其中SOMETHING是唯一的变量.实际上有很多令人惊讶的按键和思维需要才能实现这一点.
我将如何进行"罐装",以便Mx fgf使用该命令运行find-grep并使用当前区域代替SOMETHING?
其实我已经弄清楚如何做到这一点(见下面的答案).如果没有选定的地区,有人可以告诉我如何让emacs要求SOMETHING吗?
在编写bash脚本时,我一直对引用和评估的规则感到困惑.我知道一些基础知识,比如''和'"与``之间的区别,但我似乎仍然经常出错,并且试图尝试各种不同的方式来说同样的事情.
我通常可以通过蛮力解决任何个别问题,但我认为我的工作原理的概念模型必须以一种未知的方式无可救药地打破.
我对lisp的引用,评估,阅读,打印,语法报价系统没有任何问题.事实上,我写了一个小卡塔,以帮助人们了解发生了什么:http://www.learningclojure.com/2010/11/syntax-quote-kata-for-confused.html
我想我正在为bash寻找类似的东西(这看起来要复杂得多).一个好的模型或一组练习将帮助我形成这样一个模型,这将使我能够看到一个复杂的shell脚本,其中变量被转换和评估,打印出来并读取,并找出将要发生的事情无需尝试.
如果做不到这一点,调试过程的好方法,以及在评估的每个阶段观察正在发生的事情都会非常有帮助.
如何将工作目录状态恢复到存储库的新克隆(显然我可以克隆我的存储库,但这看起来有点野蛮.)
用git我会这样做:
git clean -xdn (dry-run, to see what I'm about to destroy)
git clean -xdf (force, to actually do it)
Run Code Online (Sandbox Code Playgroud)
我假设可能有一个微妙的不同的mercurial等价物,但我找不到它.