/
python-mode.html
190 lines (165 loc) · 13.8 KB
/
python-mode.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<!DOCTYPE html>
<html lang="en">
<!-- head -->
<head>
<meta charset="utf-8" />
<meta name="author" content="Kirill Klenov" />
<meta name="keywords" content="vim,python," />
<meta name="description" content="VIM плагин для комфортной работы с python" />
<meta name="application-name" content="klen.github.io" />
<meta name="application-url" content="." />
<meta name="og:image" content="http://klen.github.io/theme/images/logo.png" />
<meta name="og:title" content="VIM плагин для комфортной работы с python" />
<title>VIM плагин для комфортной работы с python — klen.github.io</title>
<link href="/theme/build_main.css" rel="stylesheet" type="text/css" media="screen" />
<link rel="alternate" type="application/atom+xml" title="klen.github.io - all posts" href="http://feeds.feedburner.com/klengihubcom">
<link rel="openid.server" href="http://www.myopenid.com/server">
<link rel="openid.delegate" href="http://horneds.myopenid.com/">
<link rel="openid2.local_id" href="http://horneds.myopenid.com/">
<link rel="openid2.provider" href="http://www.myopenid.com/server">
<meta http-equiv="X-XRDS-Location" content="http://www.myopenid.com/xrds?username=horneds.myopenid.com"> </head>
<body class="cloud zeta">
<h1 class="header">
<a class="header_title" href=.><i class="fa fa-beer"></i>klen.github.io</a>
</h1>
<nav class="menu"> <a class="menu_item menu_link" href="./pages/about-en.html">About me</a> <a class="menu_item menu_link" href="./category/blog.html">Blog</a> <a class="menu_item menu_link" href="./category/notes.html">Notes</a> </nav>
<div class="content">
<article class="article">
<header class="article_header">
<time class="article_header_time" datetime="2011-10-10 00:00:00">10.10.2011</time>
<span>in <a href="./category/Blog.html">Blog</a></span>
<h1 class="article_header_title">VIM плагин для комфортной работы с python</h1><span class="article_meta">tags: <span><a href="./tag/vim.html">vim</a> , </span> <span><a href="./tag/python.html">python</a> </span> </span></header>
<div class="article_paginator zeta"> <div class="article_paginator_right">
<a href="aws.html" class="article_paginator_right_link">Год облачного хостинга от Amazon — бесплатно</a> Ctrl→
</div> <div class="article_paginator_left">
←Ctrl <a href="urbanairship.html" class="article_paginator_left_link">Urbanairship, push-уведомления для мобильных приложений</a>
</div></div>
<div class="article_content">
<hr class="docutils" />
<div class="contents topic" id="id1">
<p class="topic-title first">Содержание:</p>
<ul class="simple">
<li><a class="reference internal" href="#python-mode-screencast" id="id2">Python-mode screencast</a></li>
</ul>
</div>
<hr class="docutils" />
<p>В своей работе я использую редактор <a class="reference external" href="http://www.vim.org">VIM</a>. Я довольно долго шел к этому выбору,
перепробовав множество решений. Мне сразу не понравились большие <a class="reference external" href="http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8">IDE</a>, вроде
<a class="reference external" href="http://ru.wikipedia.org/wiki/Eclipse_(%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8)">Eclipse</a> (и основанных на нем систем) или <a class="reference external" href="http://www.jetbrains.com/idea/">IDEA</a>. Во-первых это <a class="reference external" href="http://www.java.org">JAVA</a> и медлительность,
хотя в последнее время ситуация улучшается. Во-вторых сложность самостоятельного
расширения функциональности. Меня почти устраивали <a class="reference external" href="http://macromates.com/">Textmate</a> (osx) и его аналог
<a class="reference external" href="http://e-texteditor.com/">E-texteditor</a> (windows) с которыми я проработал продолжительное время, но так
случилось, что судьба свела меня с <a class="reference external" href="http://www.vim.org">VIM</a> :)</p>
<p>Не буду разводить холивар и расписывать все его достоинства, опишу лишь основные
преимущества сыгравшие для меня важнейшую роль.</p>
<ul class="simple">
<li>Легкая расширяемость. Расширения кроме несложного встроенного vimlang, можно
писать практически на чем угодно: python, ruby, tcl, shell.</li>
<li>Независимость от настроенной рабочей системы. Дайте мне терминал и я в пару команд
получу на нем работающий <a class="reference external" href="http://www.vim.org">VIM</a> с моими настройками и плагинами. Именно поэтому
VIM-еры работают на удаленных терминалах также комфортно как и на локальной
машине.</li>
<li>Мощность. При казалось бы простоте и аскетизме <a class="reference external" href="http://www.vim.org">VIM</a> очень гибко настраивается.
Я еще не встречал функциональности в <a class="reference external" href="http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8">IDE</a> которой бы не мог при желании
получить в <a class="reference external" href="http://www.vim.org">VIM</a>.</li>
<li><strong>VIM-modes</strong>. Да именно инопланетный режим работы <a class="reference external" href="http://www.vim.org">VIM</a> стал для меня наибольшим
плюсом. У меня нет мышки, ни дома, ни на работе. Пальцы всегда на буквенном
блоке клавиатуры. Это сложно объяснить, но когда к этому привыкаешь
становится трудно работать по другому.</li>
</ul>
<p>Ну, а самый большой минус <a class="reference external" href="http://www.vim.org">VIM</a> конечно же — кривая вхождения. С этим редактором
надо съесть пуд соли, но если вы подружитесь он оправдает все ожидания.</p>
<div class="section" id="python-mode-screencast">
<h2><a class="toc-backref" href="#id2">Python-mode screencast</a></h2>
<p>Для работы с python я написал отдельный плагин. Его главное достоинство в том,
что он не требует установки в систему используемых python библиотек (<a class="reference external" href="http://pypi.python.org/pypi/pylint">Pylint</a>,
<a class="reference external" href="http://pypi.python.org/pypi/pyflakes">Pyflakes</a> и <a class="reference external" href="http://rope.sourceforge.net/">Rope</a>). Вот его основные возможности:</p>
<ul class="simple">
<li>Вывод python-документации в отдельном окне;</li>
<li>Запуск текущего кода и вывод результата в отдельное окно;</li>
<li>Проверка кода библиотекой <a class="reference external" href="http://pypi.python.org/pypi/pylint">Pylint</a> или <a class="reference external" href="http://pypi.python.org/pypi/pyflakes">Pyflakes</a> (автоматически или вручную);</li>
<li>Умное автодополнение, переход к определениям объектов, рефакторинг и множество
других фич библиотеки <a class="reference external" href="http://rope.sourceforge.net/">Rope</a>.</li>
<li>Автоматическая поддержка <a class="reference external" href="http://pypi.python.org/pypi/virtualenv">Virtualenv</a>.</li>
<li>И еще несколько полезных мелочей для python.</li>
</ul>
<p>Чтобы продемонстрировать работу плагина я снял небольшой скринкаст (извиняюсь за
качество, это мой первый опыт). Итак <strong>Python-mode</strong>:</p>
<div class="youtube" align="center"><iframe width="420" height="315" src="https://www.youtube.com/embed/67OZNp9Z0CQ" frameborder="0" allowfullscreen></iframe></div><p>Скачать плагин можно с Github: <a class="reference external" href="https://github.com/klen/python-mode">https://github.com/klen/python-mode</a></p>
<p>Также там можно посмотреть мою конфигурацию этого замечательного редактора:
<a class="reference external" href="https://github.com/klen/.vim">https://github.com/klen/.vim</a></p>
<p>Если вы заинтересовались <a class="reference external" href="http://www.vim.org">VIM</a> и хотите узнать о нем побольше, советую посмотреть
к примеру эти скринкасты:</p>
<p><a class="reference external" href="http://www.derekwyatt.org/vim/vim-tutorial-videos/vim-novice-tutorial-videos/">http://www.derekwyatt.org/vim/vim-tutorial-videos/vim-novice-tutorial-videos/</a></p>
</div>
</div>
<g:plusone></g:plusone>
<script>(function(d, t) {
var g = d.createElement(t),
s = d.getElementsByTagName(t)[0];
g.async = true;
g.src = 'https://apis.google.com/js/plusone.js';
g.text = '{lang:"nl"}';
s.parentNode.insertBefore(g, s);
}(document, 'script'));
</script>
<div class="article_paginator zeta"> <div class="article_paginator_right">
<a href="aws.html" class="article_paginator_right_link">Год облачного хостинга от Amazon — бесплатно</a> Ctrl→
</div> <div class="article_paginator_left">
←Ctrl <a href="urbanairship.html" class="article_paginator_left_link">Urbanairship, push-уведомления для мобильных приложений</a>
</div></div>
</article>
<div id="disqus_thread"></div>
<script type="text/javascript">
var disqus_shortname = 'klengithubcom';
var disqus_identifier = 'python-mode';
var disqus_url = 'http://klen.github.io/python-mode.html';
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<div class="share">
<div class="addthis_toolbox addthis_default_style ">
<a class="addthis_button_preferred_1"></a>
<a class="addthis_button_preferred_2"></a>
<a class="addthis_button_preferred_3"></a>
<a class="addthis_button_preferred_4"></a>
<a class="addthis_button_compact"></a>
<a class="addthis_counter addthis_bubble_style"></a>
</div>
<script type="text/javascript">var addthis_config = {"data_track_clickback":true};</script>
<script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4e108f9f24976375"></script>
</div> </div>
<a class="github" href="http://github.com/klen"><img src="./static/ForkMe_Wht.png" alt="alt"/></a> <footer class="footer">
© 2011–2015 Kirill Klenov
| <a href="./pages/about-en.html">About me</a>
<div class='pos1'></div>
<div class='pos2'></div>
</footer>
<script language="javascript" type="text/javascript" src="./theme/build_main.js"></script><div style="display:none;"><script type="text/javascript">
(function(w, c) {
(w[c] = w[c] || []).push(function() {
try {
w.yaCounter7784947 = new Ya.Metrika({
id:7784947,
enableAll:true, webvisor:true});
} catch(e) {}
});
})(window, 'yandex_metrika_callbacks');
</script></div>
<script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript" defer="defer"></script>
<noscript><div><img src="//mc.yandex.ru/watch/7784947" style="position:absolute; left:-9999px;" alt="" /></div></noscript><script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-30512655-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</body>
</html>