{"id":2278,"date":"2017-05-27T21:56:55","date_gmt":"2017-05-27T13:56:55","guid":{"rendered":"http:\/\/cn.hostease.com\/xueyuan\/?p=2278"},"modified":"2017-05-27T21:56:55","modified_gmt":"2017-05-27T13:56:55","slug":"python-mode%ef%bc%9a%e5%9c%a8-vim-%e7%bc%96%e8%be%91%e5%99%a8%e4%b8%ad%e5%bc%80%e5%8f%91-python-%e5%ba%94%e7%94%a8%e7%9a%84-vim-%e6%8f%92%e4%bb%b6","status":"publish","type":"post","link":"https:\/\/cn.hostease.com\/xueyuan\/jishu\/linux\/python-mode%ef%bc%9a%e5%9c%a8-vim-%e7%bc%96%e8%be%91%e5%99%a8%e4%b8%ad%e5%bc%80%e5%8f%91-python-%e5%ba%94%e7%94%a8%e7%9a%84-vim-%e6%8f%92%e4%bb%b6\/","title":{"rendered":"Python-mode\uff1a\u5728 Vim \u7f16\u8f91\u5668\u4e2d\u5f00\u53d1 Python \u5e94\u7528\u7684 Vim \u63d2\u4ef6"},"content":{"rendered":"<p>Python-mode \u662f\u4e00\u4e2a Vim \u63d2\u4ef6\uff0c\u5b83\u4f7f\u4f60\u80fd\u591f\u5728 Vim \u7f16\u8f91\u5668\u4e2d\u66f4\u5feb\u7684\u5229\u7528\u5305\u62ec pylint\u3001rope\u3001pydoc\u3001pyflakes\u3001pep8\u3001autopep8\u3001pep257\u3000\u548c mccable \u5728\u5185\u7684\u5404\u79cd\u5e93\u6765\u5199 Python \u4ee3\u7801\uff0c\u8fd9\u4e9b\u5e93\u63d0\u4f9b\u4e86\u4e00\u4e9b\u7f16\u7801\u529f\u80fd\uff0c\u6bd4\u5982\u9759\u6001\u5206\u6790\u3001\u7279\u5f81\u91cd\u6784\u3001\u6298\u53e0\u3001\u8865\u5168\u548c\u6587\u6863\u7b49\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>\u8fd9\u4e2a\u63d2\u4ef6\u5305\u542b\u4e86\u6240\u6709\u4f60\u5728 Vim \u7f16\u8f91\u5668\u4e2d\u53ef\u4ee5\u7528\u6765\u5f00\u53d1 Python \u5e94\u7528\u7684\u7279\u6027\u3002<\/p>\n<h3 id=\"toc_1\">Python-mode \u7684\u7279\u6027<\/h3>\n<p>\u5b83\u5305\u542b\u4e0b\u9762\u8fd9\u4e9b\u503c\u5f97\u4e00\u63d0\u7684\u7279\u6027\uff1a<\/p>\n<ul>\n<li>\u652f\u6301 Python 2.6+ \u81f3 Python 3.2 \u7248\u672c<\/li>\n<li>\u8bed\u6cd5\u9ad8\u4eae<\/li>\n<li>\u63d0\u4f9b virtualenv \u652f\u6301<\/li>\n<li>\u652f\u6301 Python \u5f0f\u6298\u53e0<\/li>\n<li>\u63d0\u4f9b\u589e\u5f3a\u7684 Python \u7f29\u8fdb<\/li>\n<li>\u80fd\u591f\u5728 Vim \u4e2d\u8fd0\u884c Python \u4ee3\u7801<\/li>\n<li>\u80fd\u591f\u6dfb\u52a0\/\u5220\u9664\u65ad\u70b9<\/li>\n<li>\u652f\u6301 Python \u4ee3\u7801\u7684\u5feb\u6377\u79fb\u52a8\u548c\u64cd\u4f5c<\/li>\n<li>\u80fd\u591f\u5728\u8fd0\u884c\u7684\u540c\u65f6\u68c0\u67e5\u4ee3\u7801\uff08pylint\u3001pyflakes\u3001pylama \u2026\u2026\uff09<\/li>\n<li>\u652f\u6301\u81ea\u52a8\u4fee\u590d PEP8 \u9519\u8bef<\/li>\n<li>\u5141\u8bb8\u5728 Python \u6587\u6863\u4e2d\u8fdb\u884c\u641c\u7d22<\/li>\n<li>\u652f\u6301\u4ee3\u7801\u91cd\u6784<\/li>\n<li>\u652f\u6301\u5f3a\u4ee3\u7801\u8865\u5168<\/li>\n<li>\u652f\u6301\u5b9a\u4e49\u8df3\u8f6c<\/li>\n<\/ul>\n<p>\u5728\u8fd9\u7bc7\u6559\u7a0b\u4e2d\uff0c\u6211\u5c06\u9610\u8ff0\u5982\u4f55\u5728 Linux \u4e2d\u4e3a Vim \u5b89\u88c5\u8bbe\u7f6e Python-mode\uff0c\u4ece\u800c\u5728 Vim \u7f16\u8f91\u5668\u4e2d\u5f00\u53d1 Python \u5e94\u7528\u3002<\/p>\n<h3 id=\"toc_2\">\u5982\u4f55\u5728 Linux \u7cfb\u7edf\u4e2d\u4e3a Vim \u5b89\u88c5 Python-mode<\/h3>\n<p>\u9996\u5148\u5b89\u88c5 Pathogen \uff08\u5b83\u4f7f\u5f97\u5b89\u88c5\u63d2\u4ef6\u8d85\u7ea7\u7b80\u5355\uff0c\u5e76\u4e14\u8fd0\u884c\u6587\u4ef6\u4f4d\u4e8e\u79c1\u6709\u76ee\u5f55\u4e2d\uff09\uff0c\u4ece\u800c\u66f4\u52a0\u5bb9\u6613\u7684\u5b89\u88c5 Python-mode<\/p>\n<p>\u8fd0\u884c\u4e0b\u9762\u7684\u547d\u4ee4\u6765\u83b7\u53d6 <code>pathogen.vim<\/code> \u6587\u4ef6\u548c\u5b83\u9700\u8981\u7684\u76ee\u5f55\uff1a<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><code><span class=\"com\">#<\/span> <span class=\"kwd\">mkdir<\/span> <span class=\"pun\">-<\/span><span class=\"pln\">p <\/span><span class=\"pun\">~<\/span><span class=\"str\">\/.vim\/<\/span><span class=\"pln\">autoload <\/span><span class=\"pun\">~<\/span><span class=\"str\">\/.vim\/<\/span><span class=\"pln\">bundle <\/span><span class=\"pun\">&amp;&amp;<\/span><span class=\"pln\"> \\<\/span><\/code><\/li>\n<li class=\"L1\"><code><span class=\"com\">#<\/span><span class=\"pln\"> curl <\/span><span class=\"pun\">-<\/span><span class=\"typ\">LSso<\/span> <span class=\"pun\">~<\/span><span class=\"str\">\/.vim\/<\/span><span class=\"pln\">autoload<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">pathogen<\/span><span class=\"pun\">.<\/span><span class=\"kwd\">vim<\/span><span class=\"pln\"> https<\/span><span class=\"pun\">:<\/span><span class=\"com\">\/\/tpo.pe\/pathogen.vim<\/span><\/code><\/li>\n<\/ol>\n<p>\u7136\u540e\u628a\u4e0b\u9762\u8fd9\u4e9b\u5185\u5bb9\u52a0\u5165 <code>~\/.vimrc<\/code> \u6587\u4ef6\u4e2d\uff1a<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><code><span class=\"pln\">execute pathogen<\/span><span class=\"com\">#<\/span><span class=\"pln\">infect<\/span><span class=\"pun\">()<\/span><\/code><\/li>\n<li class=\"L1\"><code><span class=\"pln\">syntax on<\/span><\/code><\/li>\n<li class=\"L2\"><code><span class=\"pln\">filetype plugin indent on<\/span><\/code><\/li>\n<\/ol>\n<p>\u5b89\u88c5\u597d pathogen \u4ee5\u540e\uff0c\u4f60\u53ef\u4ee5\u50cf\u4e0b\u9762\u8fd9\u6837\u628a Python-mode \u63d2\u4ef6\u653e\u5165 <code>~\/.vim\/bunble<\/code> \u76ee\u5f55\u4e2d\uff1a<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><code><span class=\"com\">#<\/span> <span class=\"kwd\">cd<\/span> <span class=\"pun\">~<\/span><span class=\"str\">\/.vim\/<\/span><span class=\"pln\">bundle <\/span><\/code><\/li>\n<li class=\"L1\"><code><span class=\"com\">#<\/span> <span class=\"kwd\">git<\/span> <span class=\"kwd\">clone<\/span><span class=\"pln\"> https<\/span><span class=\"pun\">:<\/span><span class=\"com\">\/\/github.com\/klen\/python-mode.git<\/span><\/code><\/li>\n<\/ol>\n<p>\u7136\u540e\u50cf\u4e0b\u9762\u8fd9\u6837\u5728 Vim \u4e2d\u91cd\u5efa <code>helptags<\/code> \uff1a<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><code><span class=\"pun\">:<\/span><span class=\"pln\">helptags<\/span><\/code><\/li>\n<\/ol>\n<p>\u4f60\u9700\u8981\u542f\u7528 <code>filetype-plugin<\/code> \uff08<code>:help filetype-plugin-on<\/code>\uff09\u548c <code>filetype-indent<\/code> \uff08<code>:help filetype-indent-on<\/code>\uff09\u6765\u4f7f\u7528 Python-mode \u3002<\/p>\n<h3 id=\"toc_3\">\u5728 Debian \u548c Ubuntu \u4e2d\u5b89\u88c5 Python-mode<\/h3>\n<p>\u53e6\u4e00\u79cd\u5728 Debian \u548c Ubuntu \u4e2d\u5b89\u88c5 Python-mode \u7684\u65b9\u6cd5\u662f\u4f7f\u7528 PPA\uff0c\u5c31\u50cf\u4e0b\u9762\u8fd9\u6837<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><code><span class=\"pln\">$ <\/span><span class=\"kwd\">sudo<\/span><span class=\"pln\"> add<\/span><span class=\"pun\">-<\/span><span class=\"pln\">apt<\/span><span class=\"pun\">-<\/span><span class=\"pln\">repository https<\/span><span class=\"pun\">:<\/span><span class=\"com\">\/\/klen.github.io\/python-mode\/deb main<\/span><\/code><\/li>\n<li class=\"L1\"><code><span class=\"pln\">$ <\/span><span class=\"kwd\">sudo<\/span> <span class=\"kwd\">apt-get<\/span><span class=\"pln\"> update<\/span><\/code><\/li>\n<li class=\"L2\"><code><span class=\"pln\">$ <\/span><span class=\"kwd\">sudo<\/span> <span class=\"kwd\">apt-get<\/span><span class=\"pln\"> install <\/span><span class=\"kwd\">vim<\/span><span class=\"pun\">-<\/span><span class=\"pln\">python<\/span><span class=\"pun\">-<\/span><span class=\"pln\">mode<\/span><\/code><\/li>\n<\/ol>\n<p>\u5982\u679c\u4f60\u9047\u5230\u6d88\u606f\uff1a\u201cThe following signatures couldn\u2019t be verified because the public key is not available\u201d\uff0c\u8bf7\u8fd0\u884c\u4e0b\u9762\u7684\u547d\u4ee4\uff1a<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><code><span class=\"pln\">$ <\/span><span class=\"kwd\">sudo<\/span><span class=\"pln\"> apt<\/span><span class=\"pun\">-<\/span><span class=\"pln\">key adv <\/span><span class=\"pun\">--<\/span><span class=\"pln\">keyserver keyserver<\/span><span class=\"pun\">.<\/span><span class=\"pln\">ubuntu<\/span><span class=\"pun\">.<\/span><span class=\"pln\">com <\/span><span class=\"pun\">--<\/span><span class=\"pln\">recv<\/span><span class=\"pun\">-<\/span><span class=\"pln\">keys B5DF65307000E266<\/span><\/code><\/li>\n<\/ol>\n<p>\u73b0\u5728\uff0c\u4f7f\u7528 <code>vim-addon-manager<\/code> \u542f\u7528 Python-mode\uff1a<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><code><span class=\"pln\">$ <\/span><span class=\"kwd\">sudo<\/span><span class=\"pln\"> apt install <\/span><span class=\"kwd\">vim<\/span><span class=\"pun\">-<\/span><span class=\"pln\">addon<\/span><span class=\"pun\">-<\/span><span class=\"pln\">manager<\/span><\/code><\/li>\n<li class=\"L1\"><code><span class=\"pln\">$ <\/span><span class=\"kwd\">vim<\/span><span class=\"pun\">-<\/span><span class=\"pln\">addons install python<\/span><span class=\"pun\">-<\/span><span class=\"pln\">mode<\/span><\/code><\/li>\n<\/ol>\n<h3 id=\"toc_4\">\u5728 Linux \u4e2d\u5b9a\u5236 Python-mode<\/h3>\n<p>\u5982\u679c\u60f3\u8986\u76d6\u9ed8\u8ba4\u952e\u4f4d\u7ed1\u5b9a\uff0c\u53ef\u4ee5\u5728 <code>.vimrc<\/code> \u6587\u4ef6\u4e2d\u91cd\u5b9a\u4e49\u5b83\u4eec\uff0c\u6bd4\u5982\uff1a<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><code><span class=\"str\">\" Override go-to.definition key shortcut to Ctrl-]<\/span><\/code><\/li>\n<li class=\"L1\"><code><span class=\"str\">let g:pymode_rope_goto_definition_bind = \"<\/span><span class=\"pun\">&lt;<\/span><span class=\"pln\">C<\/span><span class=\"pun\">-]&gt;<\/span><span class=\"str\">\"<\/span><\/code><\/li>\n<li class=\"L2\"><code><span class=\"str\">\"<\/span> <span class=\"typ\">Override<\/span><span class=\"pln\"> run current python <\/span><span class=\"kwd\">file<\/span><span class=\"pln\"> key shortcut to <\/span><span class=\"typ\">Ctrl<\/span><span class=\"pun\">-<\/span><span class=\"typ\">Shift<\/span><span class=\"pun\">-<\/span><span class=\"pln\">e<\/span><\/code><\/li>\n<li class=\"L3\"><code><span class=\"pln\">let g<\/span><span class=\"pun\">:<\/span><span class=\"pln\">pymode_run_bind <\/span><span class=\"pun\">=<\/span> <span class=\"str\">\"&lt;C-S-e&gt;\"<\/span><\/code><\/li>\n<li class=\"L4\"><code><span class=\"str\">\" Override view python doc key shortcut to Ctrl-Shift-d<\/span><\/code><\/li>\n<li class=\"L5\"><code><span class=\"str\">let g:pymode_doc_bind = \"<\/span><span class=\"pun\">&lt;<\/span><span class=\"pln\">C<\/span><span class=\"pun\">-<\/span><span class=\"pln\">S<\/span><span class=\"pun\">-<\/span><span class=\"pln\">d<\/span><span class=\"pun\">&gt;<\/span><span class=\"str\">\"<\/span><\/code><\/li>\n<\/ol>\n<p>\u6ce8\u610f\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c Python-mode \u4f7f\u7528 Python 2 \u8fdb\u884c\u8bed\u6cd5\u68c0\u67e5\u3002\u4f60\u53ef\u4ee5\u5728 <code>.vimrc<\/code> \u6587\u4ef6\u4e2d\u52a0\u5165\u4e0b\u9762\u8fd9\u884c\u5185\u5bb9\u4ece\u800c\u542f\u52a8 Python 3 \u8bed\u6cd5\u68c0\u67e5\u3002<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><code><span class=\"pln\">let g<\/span><span class=\"pun\">:<\/span><span class=\"pln\">pymode_python <\/span><span class=\"pun\">=<\/span> <span class=\"str\">'python3'<\/span><\/code><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Python-mode \u662f\u4e00\u4e2a Vim \u63d2\u4ef6\uff0c\u5b83\u4f7f\u4f60\u80fd\u591f\u5728 Vim \u7f16\u8f91\u5668\u4e2d\u66f4\u5feb\u7684\u5229\u7528\u5305\u62ec pylint\u3001ro &#8230; <a title=\"Python-mode\uff1a\u5728 Vim \u7f16\u8f91\u5668\u4e2d\u5f00\u53d1 Python \u5e94\u7528\u7684 Vim \u63d2\u4ef6\" class=\"read-more\" href=\"https:\/\/cn.hostease.com\/xueyuan\/jishu\/linux\/python-mode%ef%bc%9a%e5%9c%a8-vim-%e7%bc%96%e8%be%91%e5%99%a8%e4%b8%ad%e5%bc%80%e5%8f%91-python-%e5%ba%94%e7%94%a8%e7%9a%84-vim-%e6%8f%92%e4%bb%b6\/\" aria-label=\"\u9605\u8bfb Python-mode\uff1a\u5728 Vim \u7f16\u8f91\u5668\u4e2d\u5f00\u53d1 Python \u5e94\u7528\u7684 Vim \u63d2\u4ef6\">\u9605\u8bfb\u66f4\u591a<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[49],"tags":[38,380],"class_list":["post-2278","post","type-post","status-publish","format-standard","hentry","category-linux","tag-linux","tag-python"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/posts\/2278","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/comments?post=2278"}],"version-history":[{"count":1,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/posts\/2278\/revisions"}],"predecessor-version":[{"id":2279,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/posts\/2278\/revisions\/2279"}],"wp:attachment":[{"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/media?parent=2278"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/categories?post=2278"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cn.hostease.com\/xueyuan\/wp-json\/wp\/v2\/tags?post=2278"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}