Configurar Sublime Text para Python ( Setting up Sublime Text 3 for Python Development)
¿Qué elegir para programar en Python? ¿Por qué Sublime y no otro?
He pasado por varios editores y creo que uno de mis editores favoritos es Sublime Text porque es rápido, liviano y recontra configurable. Pero como todo, no es perfecto, y el problema que tiene es, en comparación con Pycharm por ejemplo, no poseer una debugger que permita navegar el codigo con breakpoints adentro de sublime (de todos modos si alguno ha logrado algo al respecto no dude en decirmelo!).
De todas formas, para sacarle el jugo a Sublime Text 3 hay que configurarlo y esto lleva unos diferentes pasos de acuerdo al lenguaje en que uno va a programar. En nuestro caso, vamos a mostrar cómo configura sublime text 3 para un python developer. Así que vamos paso a paso desde su instalación:
- Primer paso - Instalación:
En ubuntu, linux mint, debian:
sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt update
sudo apt install sublime-text-installer
(todo lo que venga de http://www.webupd8.org/ es relativamente confiable)
En windows simplemente hay que bajar el exe de: https://www.sublimetext.com/3
- Segundo paso - Package Control
Para sacarle lo máximo a Sublime hay que instalarle un control de paquetes. Este sirve para poder instalarle a Sublime pluggins de terceros, que nos van agregar nuevas funcionalidades. Algunos pluggins son muy buenos, algunos no y otros son muy especificos para un lenguaje, pero bueno hay que ir probandolos.
Para instalar el Package Control se puede hacer de dos formas:
1) Pegando el código del packagecontrol en la consola de sublime. Para obtener el código ir a: https://packagecontrol.io/installation Y para abrir la consola hay que ir a vista / view --> show console / mostrar consola.
Y en el recuadro pegar las lineas siguientes (para sublime text 3):
import urllib.request,os,hashlib; h = 'df21e130d211cfc94d9b0905775a7c0f' + '1e3d39e33b79698005270310898eea76'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
2) Otra opcion en versiones mas nuevas es directamente desde el menu encontrar la opcion de instalar package control.
- Tercer paso - Instalar pluggins
Cada vez que queramos abrir el manejo de paquetes (package control) debemos teclear Ctrl + shift + p. Con esta combinacion de teclas se abre un menú donde podemos escribir "install" y va a ir autocompletando... así buscamos la opcion que dice "Package Control: Install package", le damos enter y luego escribimos el nombre del paquete a instalar.
-
SideBarEnhancements: este pluggin agrega funcionalidades a la barra del costado que permite desplazarse por el árbol de directorios. Brinda opciones para duplicar archivos, crear nuevos, renombrarlos, copiarlos, moverlos, etc. (https://sublime.wbond.net/packages/SideBarEnhancements
-
GitGutter: este pluggin muestra pequeños iconos al costado del número de linea que indica si la linea fue borrada, agregada, modificada desde el último commit (sublime.wbond.net/packages/GitGutter)
-
Anaconda es EL pluggin para python en Sublime. Ofrece autocompletado, linting (highlights both syntax errors and PEP8 violations), Python documentation, McCabe complexity checker, go to definition, etc. (damnwidget.github.io/anaconda/)
-
BracketHighlighter es sencillo, te marca si un parentesis, llave, comilla esta abierta y o marca el de apertura y cierre al mismo tiempo (packagecontrol.io/packages/BracketHighlighter)
-
Djaneiro para desarrollar con django
-
Después hay una lista enorme para diversas cosas, por ejemplo requirementstxt (para coloreado de lo requirements de python), INI (para coloreado de los .ini), mononkai extended (para darle colores nuevos a sublime), sublimegit (blame, log, diff, etc), sublimeLinter-json, etc.
- Cuarto Paso - Configuración de sintaxis especifica
{
"font_face": "Ubuntu Mono",
"font_options": ["subpixel_antialias", "no_bold"],
"line_padding_bottom": 1,
"line_padding_top": 1,
"caret_style": "solid",
"wide_caret": true,
"highlight_line": true,
"always_show_minimap_viewport": true,
"bold_folder_labels": true,
"draw_minimap_border": true,
"enable_telemetry": false,
"indent_guide_options": [
"draw_active",
"draw_normal"
],
// Editor view look-and-feel
"draw_white_space": "all",
"highlight_line": true,
"show_full_path": true,
"match_selection": true,
// Editor behavior
"scroll_past_end": false,
"highlight_modified_tabs": true,
"find_selected_text": true,
// Word wrapping - follow PEP 8 recommendations
"rulers": [ 72, 79, 100],
"word_wrap": false,
"indent_to_bracket": true,
// Whitespace - no tabs, trimming, end files with \n
"preview_on_click": false,
"shift_tab_unindent": true,
"show_panel_on_build": false,
"tab_size": 4,
"translate_tabs_to_spaces": true,
"trim_trailing_white_space_on_save": true,
"ensure_newline_at_eof_on_save": true,
"auto_complete_delay": 500,
// Sidebar - exclude distracting files and folders
"file_exclude_patterns":
[
".DS_Store",
"*.pid",
"*.pyc"
],
"folder_exclude_patterns":
[
".git",
"__pycache__",
"env",
"env3",
".svn",
".DS_Store",
]
}
Escribi otros posts sobre sublime text 3 y su configuración.
* Algunos plugins copados para js y python
* Configurar atajos
(si encontrás algo mal o algo que le falta al post, avisame!)
Algunos links útiles de ayuda e inspiración:
https://opensourcehacker.com/2012/05/11/sublime-text-2-tips-for-python-and-web-developers/
http://www.gtlambert.com/blog/python-sublime-text-3
https://realpython.com/blog/python/setting-up-sublime-text-3-for-full-stack-python-development/
http://piotr.banaszkiewicz.org/blog/2013/08/24/sublime-text-3-for-python-development/