我的问题是午夜指挥官.我没有设置内部编辑器的使用(在选项 - >配置中)并输入.bashrc:
export EDITOR='emacsclient -n'
Run Code Online (Sandbox Code Playgroud)
仍然 - 按F4不给任何东西,按F3 - 打开vi.有没有办法emacsclient成为默认的文本编辑器mc?
最近我找到了命令
git ls-files
Run Code Online (Sandbox Code Playgroud)
我发现它非常有用(请参阅-h选项).如果我输入git然后再按,为什么不显示Tab?
我的意思是 - "其他"命令的列表在哪里git?
例如,我想在括号,(),UPCASE中创建所有文本.以交互方式执行以下操作非常简单:
M-x query-replace-regexp
replace: "(\(.+?\))"
with : "(\,(upcase \1))"
Run Code Online (Sandbox Code Playgroud)
相反,我想写一个defun会这样做:
(defun upcs ()
(interactive)
(goto-char 1)
(while (search-forward "(\\(.+?\\))" nil t) (replace-match "(\\,(upcase \\1))" t nil)))
Run Code Online (Sandbox Code Playgroud)
但它不起作用!虽然下面的工作(其追加foo并bar以括号文本):
(defun HOOK ()
(interactive)
(goto-char 1)
(while (search-forward-regexp "(\\(.+?\\))" nil t) (replace-match "(foo \\1 bar)" t nil)))
Run Code Online (Sandbox Code Playgroud) 在Emacs中 - 如何杀死匹配regexp的缓冲区?
编辑:
我如何y自动回答(kill-matching-buffers询问我是否应该杀死修改后的缓冲区)?
像这样的东西?
(defun bk-kill-buffers (bfrRgxp)
(interactive)
(kill-matching-buffers bfrRgxp)
[return])
Run Code Online (Sandbox Code Playgroud) 我想按列列出带有pygments的CSV文件,如下所示:

看到同一列用相同的颜色着色.
目前pygments不包括CSV解析器,因为CSV被认为是模糊的格式.所以我试着自己写一个最小的.这是我试过的:
tokens = {
'root': [
(r'^[^,\n]+', Name.Function), # first column
(',', Comment), # separator
(r'[^,\n]+', Name.Decorator), # second column
(',', Comment), # separator
(r'[^,\n]+', Name.Constant), # third column
(',', Comment), # separator
],
}
Run Code Online (Sandbox Code Playgroud)
但它没有为任何列着色,但首先:

据我所知,pygments的工作原理是尝试逐个匹配正则表达式:当前正则表达式不匹配时 - 它会转到下一个,然后再重复一次.如果没有匹配则发出错误并前进一个字符(并将其放在红色框中).对于像嵌套注释这样的高级情况,有些状态,但我认为对于CSV,一个状态可能就足够了.
然后我尝试了:
tokens = {
'root': [
(',', Comment), # separator
(r'^[^,\n]+', Name.Function), # first column
(r'(?:^[^,\n]+)[^,\n]+', Name.Decorator), # second column
],
}
Run Code Online (Sandbox Code Playgroud)
但它将所有列作为第二列着色:

这是一个示例数据:
account_id,parent_account_id,name,status
,A001,English,active
A001,,Humanities,active
A003,A001,,active
A004,A002,Spanish,
Run Code Online (Sandbox Code Playgroud)
在Emacs中,我设法得到了我想要的东西:
(add-hook 'csv-mode-hook
(lambda ()
"colors first 8 …Run Code Online (Sandbox Code Playgroud) 我想从脚本里面找出 - 我用来启动它的确切命令.我尝试了以下方法:
#!/usr/bin/env python
import sys, os
print os.path.basename(sys.argv[0]), sys.argv[1:]
Run Code Online (Sandbox Code Playgroud)
但它失去了信息:
$ 1.py -1 dfd 'gf g' "df df"
1.py ['-1', 'dfd', 'gf g', 'df df']
Run Code Online (Sandbox Code Playgroud)
你看 - 它已经丢失了关于我使用双引号,单引号或根本没有引号的信息 - 在命令中.
编辑:
这就是我正在使用的.我脚本中的所有args都有默认值,并在使用以下方法解析args之后argparse:
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)
我记录它们或者如果有日志 - 覆盖它们:
logName = "." + (os.path.splitext(os.path.basename(sys.argv[0])))[0] + ".json"
if os.path.exists(logName):
print "!!! I've found log", logName
Args = bk_loads_json(logName)
for arg in Args:
exec('args.{0} = Args["{0}"]'.format(arg))
else:
print "!!! the log of args is saved to", logName
bk_saves_json(args.__dict__, …Run Code Online (Sandbox Code Playgroud) 我写了一个简单的emacs模式.如何明确指定例如方括号中的所有内容都应该是彩色的.必须像那样:
( (if thing is in square brackets) . font-lock-string-face)
Run Code Online (Sandbox Code Playgroud) 假设我打开一个文件然后找到它
Ïåñíÿ àëüïèíèñòîâ
Run Code Online (Sandbox Code Playgroud)
等等.我可以让emacs找到正确的编码吗?例如,AkelPad具有这样的功能 - 在大多数情况下,它将打开具有正确编码的文件.
我在emacs中安装了ECB并自动启动:
(require 'semantic/analyze)
(provide 'semantic-analyze)
(provide 'semantic-ctxt)
(provide 'semanticdb)
(provide 'semanticdb-find)
(provide 'semanticdb-mode)
(provide 'semantic-load)
(semantic-mode 1)
(setq stack-trace-on-error t)
(require 'ecb)
(require 'ecb-autoloads)
(setq ecb-auto-activate 1)
(ecb-winman-winring-enable-support)
Run Code Online (Sandbox Code Playgroud)
ECB每次都会显示"首次激活ECB后的第一步"信息节点.我怎么阻止它这样做?
编辑:
当然蛮力解决了它:
(run-with-idle-timer 0.05 nil '(lambda () (kill-buffer "*info*")))
Run Code Online (Sandbox Code Playgroud)
但我想 - 可能有一个ECB变量知道它是否第一次激活ECB.
编辑:
所以必须举例说:
(setq ecb-source-path (quote (("/home/boris/its/plts" "plts"))))
Run Code Online (Sandbox Code Playgroud)
这告诉ECB该项目是/home/boris/its/plts,并且应该被称为plts.
从optparse切换到argparse后 - 我遇到了奇怪的错误.Argparse仅在不留空间时解析args:
myScript.py -oOpt
Run Code Online (Sandbox Code Playgroud)
或者给出一个等号:
myScript.py -o=Opt
Run Code Online (Sandbox Code Playgroud)
并且它不能正常工作:
myScript.py -o Opt
Run Code Online (Sandbox Code Playgroud)
这是我的argparse初始化:
#!/usr/bin/env python
# to get description use the -h flag
import argparse, os, sys
# ======================
# Python2.7 is expected:
if sys.version_info[0] != 2 or sys.version_info[1] < 7:
sys.exit('This program needs Python2.7+')
# ==========
# preambule:
desc = """Enter dirs in the current dir and makes gro out of state.cpt there."""
# parser = argparse.ArgumentParser()
parser = argparse.ArgumentParser(description=desc, version='2.3', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('-w', '--workWith',
help = 'to specify a …Run Code Online (Sandbox Code Playgroud)