小编Ado*_*obe的帖子

Emacs:如何让它成为午夜指挥官的编辑?

我的问题是午夜指挥官.我没有设置内部编辑器的使用(在选项 - >配置中)并输入.bashrc:

export EDITOR='emacsclient -n'
Run Code Online (Sandbox Code Playgroud)

仍然 - 按F4不给任何东西,按F3 - 打开vi.有没有办法emacsclient成为默认的文本编辑器mc

emacs mc

10
推荐指数
1
解决办法
8285
查看次数

为什么'git ls-files'没有显示在选项卡完成上?

最近我找到了命令

git ls-files
Run Code Online (Sandbox Code Playgroud)

我发现它非常有用(请参阅-h选项).如果我输入git然后再按,为什么不显示Tab

我的意思是 - "其他"命令的列表在哪里git

git bash

9
推荐指数
2
解决办法
873
查看次数

Emacs:如何在defun中用lisp函数替换-regexp?

例如,我想在括号,(),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)

但它不起作用!虽然下面的工作(其追加foobar以括号文本):

(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)

lisp emacs

8
推荐指数
3
解决办法
4018
查看次数

我如何自动回答y(kill-matching-buffers询问我是否应该杀死修改后的缓冲区)?

在Emacs中 - 如何杀死匹配regexp的缓冲区?

编辑:

我如何y自动回答(kill-matching-buffers询问我是否应该杀死修改后的缓冲区)?

像这样的东西?

(defun bk-kill-buffers (bfrRgxp)
  (interactive)
  (kill-matching-buffers bfrRgxp)
  [return])
Run Code Online (Sandbox Code Playgroud)

emacs buffer

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

简单的CSV词法分析器

我想按列列出带有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)

python regex csv pygments

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

如何找到给Python的确切CLI命令?

我想从脚本里面找出 - 我用来启动它的确切命令.我尝试了以下方法:

#!/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)

python unix shell command-line-arguments

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

Emacs模式:如何指定方括号中的东西应该是彩色的

我写了一个简单的emacs模式.如何明确指定例如方括号中的所有内容都应该是彩色的.必须像那样:

( (if thing is in square brackets) . font-lock-string-face)
Run Code Online (Sandbox Code Playgroud)

emacs elisp mode

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

Emacs:有没有办法确定文件的编码系统?

假设我打开一个文件然后找到它

Ïåñíÿ àëüïèíèñòîâ
Run Code Online (Sandbox Code Playgroud)

等等.我可以让emacs找到正确的编码吗?例如,AkelPad具有这样的功能 - 在大多数情况下,它将打开具有正确编码的文件.

emacs encoding

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

首次激活ECB后的第一步

我在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.

emacs emacs-ecb

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

Python:从optparse切换到argparse

从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)

python shell optparse command-line-arguments argparse

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