我在Ubuntu 10.04上使用emacs 23.1.1.我希望使用2空格缩进在Python中编程.emacs看起来有python的默认模式(python.el?).
我把以下内容放在我的.emacs中:
;; Only spaces, no tabs
(setq indent-tabs-mode nil)
;; Always end a file with a newline
(setq require-final-newline nil)
;; Don't know which of these might work
(setq-default tab-width 2)
(setq-default python-indent 2)
(setq-default py-indent-offset 2)
Run Code Online (Sandbox Code Playgroud)
当我编辑Python文件时,它使用4空格缩进.当我尝试Ch v python-indent时,它说:
python-indent's value is 4
Local in buffer webpage_cache.py; global value is 2
This variable is safe as a file local variable if its value
satisfies the predicate `integerp'.
Documentation:
Number of columns for a unit of indentation …Run Code Online (Sandbox Code Playgroud) 当我使用emacs python-mode时,如果一行的最后一个字符是一个左括号,它只是从前一行的缩进中缩进下一行.
call_some_function(
some_very_long_argument_that_I_want_to_put_on_its_own_line)
Run Code Online (Sandbox Code Playgroud)
我喜欢.现在在ecmascript模式(我用于动作脚本3),它总是缩进到前一个括号的级别.
call_some_function(
this_is_not_really_saving_me_any_horizontal_space);
Run Code Online (Sandbox Code Playgroud)
在这方面我怎么能像ecthon-mode那样制作ecmascript-mode缩进?
我正在为Vim 使用python-mode,我更喜欢那里有120个字符行而不是PEP8标准中定义的stark 80.
在python模式下,这很容易.我只是将以下内容添加到〜/ .vimrc中:
" Pylint configuration file
let g:pymode_lint_config = '$HOME/.pylint.rc'
let g:pymode_options_max_line_length=120
Run Code Online (Sandbox Code Playgroud)
这很好用,但是,我还想使用精湛的Syntastic插件来检查各种其他类型的语法(例如,foodcritic的Chef配方).
不幸的是,Syntastic也做了Python linting,因此它现在开始抱怨我的120个字符行.有什么类似的东西,我可以做到这一点,以使它停止抱怨我稍长的线?
我最近下载了Python模式.当我打开python脚本时,我的功能被折叠了.我可以很容易地展开(当你在函数定义的顶部时,它是一个移动键).但是,我无法弄清楚如何重新折叠功能.
而且,也许最重要的是,:help pymode返回一个错误('E149:对不起,对pymode没有帮助').所以我甚至无法查阅文档.
任何帮助,将不胜感激.
我正在使用(梦幻般的)Vim插件python-mode,其中包括pep8 linter.该:PyLint命令运行所有链接并在QuickFix窗口中打开错误.
现在,让我们假设我只使用pep8 linter,并且我有一个充满错误的QuickFix窗口.我想逐步解决这些错误并应用自动修复(类似于autopep8).autopep8工具很棒,但它会出错.理想情况下,我希望能够监督Vim中的每个修复(应用修复,检查,转到下一个修复).
我目前的方法是在我的Python文件上运行autopep8,对结果进行差异,然后修复任何不良更改:
$ autopep8 --in-place spam.py
$ git difftool spam.py # check edits in gVim, write to file
$ git commit spam.py -m "Fix bad PEP8 formatting"
Run Code Online (Sandbox Code Playgroud)
然而,这种方法破坏了我的撤消历史,似乎不必要地复杂.有没有更好的办法?
有没有办法自动将pep8修复程序(如果可用)应用于QuickFix窗口中的pep8错误?
我在VIM中安装了python-mode.但我也安装了Syntastic.由于两者都进行语法检查,是否会发生冲突?如何关闭Syntastic for Python文件?
谢谢你的帮助
我已经定义了一个.dir-locals.el文件,其中包含以下内容:
((python-mode . ((cr/virtualenv-name . "saas"))))
Run Code Online (Sandbox Code Playgroud)
在我的.emacs中,我有以下函数来检索此值并提供virtualenv路径:
(defun cr/virtualenv ()
(cond (cr/virtualenv-name (format "%s/%s" virtualenv-base cr/virtualenv-name))
((getenv "EMACS_VIRTUAL_ENV") (getenv "EMACS_VIRTUAL_ENV"))
(t "~/.emacs.d/python")))
Run Code Online (Sandbox Code Playgroud)
最后,在我的python-mode-hook列表中,我有这个钩子函数:
(add-hook 'python-mode-hook 'cr/python-mode-shell-setup)
(defun cr/python-mode-shell-setup ()
(message "virtualenv-name is %s" cr/virtualenv-name)
(let ((python-base (cr/virtualenv)))
(cond ((and (fboundp 'ipython-shell-hook) (file-executable-p (concat python-base "/bin/ipython")))
(setq python-python-command (concat python-base "/bin/ipython"))
(setq py-python-command (concat python-base "/bin/ipython"))
(setq py-python-command-args '( "-colors" "NoColor")))
(t
(setq python-python-command (concat python-base "/bin/python"))
(setq py-python-command (concat python-base "/bin/python"))
(setq py-python-command-args nil)))))
Run Code Online (Sandbox Code Playgroud)
当我打开一个新的python文件时,记录的消息cr/python-mode-shell-setup表明它cr/virtualenv-name是nil …
我刚开始在emacs中使用python-mode而且我注意到虽然主模式有一个注释区域((py-comment-region)绑定 (C-c #))的选项,但是没有选项可以取消注释已经注释的代码块.我在python-mode中检查了所有活动的键绑定,但找不到任何相关的键.我错过了什么吗?
我确实想到了一些工作,比如使用(delete-rectangular)(绑定C-x r d)删除注释.另一种方法是绑定(comment-or-uncomment-region)到某个键并开始使用它.
但默认情况下,python-mode本身是否提供了任何选项?
我刚刚安装python-mode,它有很多很酷的功能,如"语法检查".
我喜欢为我的python代码添加2个缩进空格,但语法检查警告我它应该是4个空格.
我相信应该有一个变量来设置这个偏好.我已经阅读了pymode的文档,我找不到相关的设置.
(另外,我想更改由pymode设置的shiftwidth设置)
我最近使用本教程切换到vim并将其配置为Python编程.之前,我已经确保Vim支持python3使用(VIM --version显示+蟒蛇/ DYN和+ python3/DYN)本文章.
但是当从python-mode执行文件时,仍然会选择python2.7解释器.
如何配置vim(或python-mode)在python3解释器上运行文件?
我的操作系统是Ubuntu 14.04 x64.
提前致谢!
python-mode ×10
vim ×6
emacs ×4
python ×4
syntastic ×2
dot-emacs ×1
indentation ×1
javascript ×1
pep8 ×1
pylint ×1
python-3.4 ×1
ubuntu-14.04 ×1
vim-plugin ×1