我想用python和c模式自动打开linum模式(Mx linum-mode).我在.emacs中添加以下代码,但它似乎不起作用.
(defun my-c-mode-common-hook ()
(line-number-mode 1))
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
(defun my-python-mode-common-hook ()
(line-number-mode 1))
(add-hook 'python-mode-common-hook 'my-python-mode-common-hook)
Run Code Online (Sandbox Code Playgroud)
可能有什么问题?
我正在尝试使用python-mode.el-6.0.7软件包配置Emacs23.2以使用python2.7.3
在我的.emacs文件中添加这些LISP行后,如INSTALL说明中所示,......
(add-to-list 'load-path "PATH/TO/PYTHON-MODE/")
(setq py-install-directory "PATH/TO/PYTHON-MODE/")
(require 'python-mode)
Run Code Online (Sandbox Code Playgroud)
...我打开一个文件foo.py,直到这里一切正常:python被识别,语法突出显示,emacs运行良好.
但是我怀疑我错过了什么或做错了什么......主要是因为在python-mode包中有更多的东西要用于python和emacs,比如pycomplete,pymacs等...看起来像是当我打开emacs和python时不能一起操作.
有没有人知道如何以适当的方式配置这个包,让一切工作正常?
任何(个人)建议都是受欢迎的,因为我不是emacs的专业人士......!
我正在使用Emacs python-mode.我用它来调用它.emacs
(add-to-list 'load-path "~/emacs/python-mode.el-6.0.3/")
(autoload 'python-mode "python-mode" "Python Mode." t)
(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
(add-to-list 'interpreter-mode-alist '("python" . python-mode))
(require 'python-mode)
(add-hook 'python-mode-hook
(lambda ()
(set-variable 'py-indent-offset 4)
;(set-variable 'py-smart-indentation nil)
(set-variable 'indent-tabs-mode nil)
(define-key py-mode-map (kbd "RET") 'newline-and-indent)
;(define-key py-mode-map [tab] 'yas/expand)
;(setq yas/after-exit-snippet-hook 'indent-according-to-mode)
))
Run Code Online (Sandbox Code Playgroud)
它通常缩进没关系,因为如果我写道:
if condition:
Run Code Online (Sandbox Code Playgroud)
然后按Return键,它会正确地将光标放在缩进的换行符中.问题是它没有正确退出缩进.在其他系统中,当我在缩进子句的主体(如if语句体)中创建一个新行并按Backspace时,它会在缩进中跳出一个级别,而不是退格.例如,如果我有:
if condition:
statement1
statement2
Run Code Online (Sandbox Code Playgroud)
然后我按下返回,退格键statement2,它会将光标放在这里:
if condition:
statement1
statement2
<-- cursor position
Run Code Online (Sandbox Code Playgroud)
如果你有许多想法的级别而且它没有这样做,编辑Python变得不可能,因为你必须手动退格,直到你达到正确的缩进级别......它容易出错并且很烦人,例如,如果你有:
for something:
for other:
if hello:
while …Run Code Online (Sandbox Code Playgroud) 我已经创建了一个自定义键绑定宏,如下所示:
(global-set-key (kbd "C-C C-c") "\C-a\C- \C-n\M-w\C-y")
问题是,C-c C-c被定义为python-send-buffer在python-mode.所以我的宏适用于除python-mode之外的所有模式.我假设python-mode在我的init文件之后进行评估,因此它会覆盖该键绑定.
我尝试C-c C-c使用(eval-after-load "python-mode")和使用取消设置,global-unset-key但这不起作用.C-c C-c在python中始终映射到python-send-buffer.
我怎样才能完全禁用Python C-c C-c,而是使用我的宏?
我正在使用Emacs 24.2.1.
如下面的屏幕截图所示,我演示了 Vim 在向 Python 代码添加注释时的奇怪行为。在演示 1 和演示 2 之间,我只是在不同的缩进级别(在类定义内)开始注释行。
正如截屏结束时所演示的,只有:在插入模式下键入才能获得正确的缩进。
当开始一行注释时,请保持正确的缩进级别;
我想知道是否有办法联系:
n RET (下一个)p RET (以前)c RET (继续)C-x SPC RET (set/clear breakpoint)使用功能键F1- F12或其他键盘快捷键.这个想法是模拟其他IDE用于调试的键盘快捷键(例如Visual Studio,MATLAB等).
这是否已经支持python-mode?是否有任何Emacs模式可用于补充python-mode调试目的?
我已经使用Vim和病原体一段时间了,事情进展顺利,但最近我开始使用我的ftplugin配置加载订单问题.
我现在遇到的具体问题是python-mode覆盖了我的ftplugin设置.我有一个~/.vim/ftplugin/python.vim包含以下行:
setlocal textwidth=119
Run Code Online (Sandbox Code Playgroud)
python-mode附带了自己的ftplugin文件,该文件也设置textwidth了~/.vim/bundle/python-mode/ftplugin/python/pymode.vim.
问题是Vim现在正在我的ftplugin文件之后加载python-mode的ftplugin文件,所以我最终得到了它textwidth=79.我最近不得不重新安装MacPorts,我认为库存配置必须改变.
我尝试了各种技巧,包括在调用病原体之前关闭文件类型/插件检测,根据其他各种 答案,但没有一个能帮助.
通过使用verbose set textwidth?和一些echomsg调试,我知道两个ftplugin文件都被调用,并且它们被错误地调用(根据我的需要).
有没有办法迫使Vim/pathogen在插件之后调用我的ftplugin文件?
我甚至尝试将我的设置放入~/.vim/after/plugin/pymode.vim,但是在病原体设置插件后立即加载,所以它仍然在ftplugin文件之前运行,只有在我编辑Python文件后才会加载.
我在OS X lion上使用Aquamacs并尝试使用最新的python-mode.el来编辑和运行我的python代码.我可以通过键入C-来打开ipython shell,但如果我运行Cc Cc或Cc | python代码在没有ipython 的新Python缓冲区中运行.我尝试过一些修复方法.以下是我的.emacs文件的python特定部分:
(when (featurep 'python) (unload-feature 'python t))
;; add custom libs
(add-to-list 'load-path "~/tools/emacs")
;; Set up pylab
(setq py-install-directory "/Users/stringham/tools/emacs/")
(require 'python-mode)
(setq py-shell-name "/usr/local/bin/ipython")
(setq py-python-command "/usr/local/bin/ipython")
Run Code Online (Sandbox Code Playgroud)
有没有人成功使用ipython和Aquamacs?
我的目标是使用Emacs 24作为我的python编辑器(也有一个Matlab和R编辑器,但这不是我的问题).
(如果我遗漏了任何信息或者我没有说明清楚的话,请告诉我.)
我已经能够以这样的方式设置我的包和我的init.el文件,以便我能够获得标签完成,正确的突出显示和python的片段.我正在使用python-mode.el作为我的python模式. 问题都围绕着这个问题:我想使用ipython作为我的python shell,以便在调试脚本时使用它的选项卡完成功能.
我的问题是:我的init.el文件中的包版本和lisp代码的哪些组合应该允许我使用带有tab完成的ipython作为我在Emacs中的默认shell?如果有必要,我愿意降级一些软件包.
额外信息:
从我在Python-mode.el的Project页面上看到的内容,我了解到IPython仍然存在一些关于此软件包的最新版本的错误,因此可能需要使用旧版本.我一直在谷歌搜索寻找解决方案,我找不到一个适合我的解决方案.
我在跑
我的init.el看起来像(python的东西在底部):
;; Requisites: Emacs >= 24
(require 'package)
(package-initialize)
(add-to-list 'package-archives
'("melpa" . "http://melpa.milkbox.net/packages/"))
(add-to-list 'package-archives
'("marmalade" . "http://marmalade-repo.org/packages/") t)
(package-refresh-contents)
(defun install-if-needed (package)
(unless (package-installed-p package)
(package-install package)))
;; make more packages available with the package installer -->
;; removed …Run Code Online (Sandbox Code Playgroud) 有没有办法强制python-shell运行Emacs时的新实例?使用单独的工作目录(和不同的模块集)处理多个项目时会很方便.
任何调用尝试python-shell都只会拉出当前实例.