Natan Felles


Creative Webmaster


SublimeText: O Melhor Editor

Blog · desenvolvimento

SublimeText: O Melhor Editor

Meu primeiro editor de códigos foi o Notepad do Windows, onde comecei copiando e colando scripts da internet. Com o passar do tempo descobri o Notepad++ e aquele código colorido era de encher os olhos.

A possibilidade de fazer algumas customizações no Notepad++ também me agradava, embora não saber, logo de cara, o significado de cada coisa. Ah, e ele era em português! Gostava disso (me perdia no inglês, naquela época).

Com o passar do tempo utilizei alguns editores WYSIWYG como o NVU e o “todo poderoso” Dreamweaver. Realmente, a possibilidade de clicar em um botão ou customizar opções pela interface gráfica ajudaram muito. Ajudaram a entender os códigos gerados, porque, para mim, isso sempre foi o mais importante.

Trabalhar com o Dreamweaver, NetBeans ou as poderosas IDEs da JetBrains é algo sensacional. Facilitam o desenvolvimento e muito.

Porém, já há alguns anos meu editor do dia a dia tem sido o Sublime, gosto do Gedit, mas o Sublime é tão leve e customizável que o identifico como o melhor editor disponível. Falo de editor e não IDE.

Nesse artigo falarei sobre como instalar e realizar algumas configurações "básicas" no SublimeText em um ambiente Debian-based.

Instalação

O arquivo de instalação do SublimeText pode ser baixado diretamente no site.

Algo muito legal que o pessoal da Sublime HQ Pty Ltd fez esse ano foi criar repositórios para diversas distribuições Linux. Para quem não vive mais sem o APT, como eu, isso foi o máximo. Se bem que as versões do Sublime não mudam tão frequentemente, mas poder instalar ou atualizá-lo pela linha de comando facilita o processo.

Indo até essa página você terá as instruções de como adicionar os repositórios em seu Sistema Operacional.

Se nada mudou, no Debian é assim:

wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
sudo apt install apt-transport-https
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list

Depois, basta instalar:

sudo apt update
sudo apt install sublime-text

Package Control

O SublimeText pode ser totalmente customizado e você pode adicionar recursos e tranformá-lo em uma IDE multi-linguagens.

O local mais popular onde podem ser encontrados milhares de pacotes é o Package Control.

O Package Control deve ser instalado para depois você poder utilizar seus recursos.

Aconselha-se que você sempre instale-o conforme as instruções oficiais.

Instalação do Package Control

Vá até o menu View > Show Console, cole o código abaixo e pressione Enter:

import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0ef93d5f746d80ef60'; 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) 

Feito isso você já podera instalar pacotes “automaticamente”.

Basta pressionar Ctrl + Shift + P e selecionar a opção Package Control: Install Package (digite “pci”).

Depois basta pesquisar o pacote que você quer, selecioná-lo e pressionar Enter.

Pacotes Essenciais para mim

Abaixo listo alguns pacotes muito úteis para tunar o SublimeText.

Configurações

Preferences

{
    "always_show_minimap_viewport": true,
    "auto_complete_cycle": true,
    "auto_complete_triggers":
    [
        {
            "characters": "$>:\\",
            "selector": "source.php"
        },
        {
            "characters": ".",
            "selector": "source.js"
        },
        {
            "characters": ".",
            "selector": "source.ts"
        }
    ],
    "auto_find_in_selection": true,
    "binary_file_patterns":
    [
        "*.dds",
        "*.eot",
        "*.gif",
        "*.ico",
        "*.jar",
        "*.jpeg",
        "*.jpg",
        "*.pdf",
        "*.png",
        "*.swf",
        "*.tga",
        "*.ttf",
        "*.zip",
        "*.phar",
        "*.tar",
        "*.tgz",
        "*.gz",
        "*.bz2",
        "*.rar",
        "*.ttf",
        "*.eot",
        "*.deb",
        "*.exe",
        "*.mp3",
        "*.mp4",
        "*.wma",
        "*.3gp",
        "*.eog"
    ],
    "caret_extra_bottom": 1,
    "close_windows_when_empty": false,
    "color_scheme": "Packages/User/Color Highlighter/themes/One Dark (SL).tmTheme",
    "default_line_ending": "unix",
    "dictionary": "Packages/Language - English/en_US.dic",
    "draw_minimap_border": true,
    "figlet_font": "xtimes",
    "folder_exclude_patterns":
    [
        ".svn",
        ".git",
        ".hg",
        "CVS",
        ".idea",
        ".sass-cache",
        "_site",
        "nbproject"
    ],
    "font_size": 11,
    "highlight_line": true,
    "highlight_modified_tabs": true,
    "ignored_packages":
    [
        "All Autocomplete",
        "ApplySyntax",
        "ComposerPackageInfo",
        "Jekyll",
        "LSP",
        "Requester",
        "RestructuredText",
        "SublimeLinter-contrib-htmlhint",
        "SublimeLinter-contrib-markdownlint",
        "Vintage"
    ],
    "line_padding_bottom": 1,
    "line_padding_top": 2,
    "mdpopups.user_css": "Packages/User/mdpopups.css",
    "one_dark_show_scroll_tabs": false,
    "one_dark_show_tabs_dropdown": true,
    "overlay_scroll_bars": "enabled",
    "phpunit.php_executable": "/usr/bin/php7.0",
    "preview_on_click": true,
    "rulers":
    [
        80
    ],
    "show_encoding": true,
    "show_line_endings": true,
    "tab_size": 4,
    "tabs_small": true,
    "theme": "One Dark.sublime-theme",
    "trim_trailing_white_space_on_save": false,
    "word_wrap": true
}

Key Bindings

[
    { "keys": ["ctrl+\\"], "command": "toggle_side_bar" },
    { "keys": ["f12"], "command": "toggle_side_bar" },
    { "keys": ["ctrl+m"], "command": "toggle_minimap" },
    { "keys": ["ctrl+space"], "command": "code_intel_auto_complete" },
    { "keys": ["ctrl+d"], "command": "duplicate_line" },
    { "keys": ["ctrl+alt+l"], "command": "htmlprettify" },
    { "keys": ["ctrl+alt+l"], "command": "pep8_autoformat", "context": [{ "key": "selector", "operator": "equal", "operand": "source.python" }] },
    { "keys": ["ctrl+alt+l"], "command": "php_cbf", "context": [{ "key": "selector", "operator": "equal", "operand": "source.php" }] },
    { "keys": ["ctrl+shift+u"], "command": "phpunit_test_file", "context": [{ "key": "selector", "operator": "equal", "operand": "source.php" }] },
    { "keys": ["ctrl+alt+t"], "command": "toggle_trailing_spaces" },
    { "keys": ["shift+delete"], "command": "delete_trailing_spaces" },
    { "keys": ["ctrl+alt+b"], "command": "beautify" },
    { "keys": ["ctrl+alt+m"], "command": "minify" },
    { "keys": ["ctrl+shift+c"], "command": "color_highlighter_pick_color" },
    { "keys": ["ctrl+alt+n"], "command": "sublime_tmpl" },
    { "keys": ["ctrl+alt+m"], "command": "markdown_preview_select", "args": { "target": "browser" }},
    { "keys": ["ctrl+alt+c"], "command": "show_panel", "args": {"panel": "console", "toggle": true} },
    { "keys": ["f5"], "command": "load_file_to_repl", "args": { "clear": true, "save_focus": false }},
    { "keys": ["ctrl+down"],  "command": "toggle_fold_comments" },
    { "keys": ["f2"],  "command": "side_bar_rename" },
    { "keys": ["f5"],  "command": "refresh_folder_list" },
    { "keys": ["alt+d"],  "command": "side_bar_duplicate" },
    { "keys": ["f10"],  "command": "lsp_symbol_definition" },
    { "keys": ["f1"], "command": "extended_switcher", "args": {"list_mode": "window"} },
]

SublimeCodeIntel.sublime-settings

{
    "codeintel_tooltips": "popup",
    // This empty enable completion of classes in phpdocs
    "codeintel_exclude_scopes_from_complete_triggers": [],
    "codeintel_database_dir": "~/.config/sublime-text-3/codeintel",
    "codeintel_scan_exclude_dir":[
        ".svn",
        ".git",
        ".hg",
        "CVS",
        ".idea",
        ".sass-cache",
        "_site",
        "nbproject",
        "tests/coverage",
        "var/cache",
        "var/page_cache",
    ],
    "codeintel_language_settings": {
        "Python3": {
            "python3": "/usr/bin/python3.6",
            "codeintel_scan_extra_dir": [
               "/home/natanfelles/.config/sublime-text-3/Packages/SublimeCodeIntel/arch",
                "/home/natanfelles/.config/sublime-text-3/Packages/SublimeCodeIntel/libs",
                "/usr/share/python",
                "/usr/local/lib/python3.6",
            ],
            "codeintel_scan_files_in_project": true,
            "codeintel_max_recursive_dir_depth": 25,
            "codeintel_selected_catalogs": []
        },
        "JavaScript": {
            "codeintel_scan_extra_dir": [],
            "codeintel_scan_exclude_dir":[],
            "codeintel_scan_files_in_project": true,
            "codeintel_max_recursive_dir_depth": 25,
            "codeintel_selected_catalogs": ["jQuery","HTML5"],
            "javascriptExtraPaths": []
        },
        "PHP": {
            "php": "/usr/bin/php",
            "codeintel_scan_extra_dir": [
                //"/home/natanfelles/.config/composer/vendor/phalcon/ide-stubs/src/Phalcon",
                "/home/natanfelles/.config/composer/vendor/jetbrains/phpstorm-stubs"
            ],
            "codeintel_scan_files_in_project": true,
            "codeintel_max_recursive_dir_depth": 25,
            "codeintel_scan_exclude_dir":["/usr/bin/php"],
            "phpConfigFile": "/etc/php/7.1/fpm/php.ini",
        }
    }
}

Auto-Completar, Docs, Templates, Plugins e Ajustes Finos

Quer transformar o SublimeText na mais poderosa, leve e rápida IDE para desenvolver em qualquer linguagem de programação?

Faça download do meu Sublime Text User Backup, com cerca de 40 templates para o SublimeTmpl, por apenas U$ 5 dólares.

Solicitar Acesso

Uhm, tá. Certo. Ultimamente eu tenho andado muito sonolento.
O que acha de me comprar um café? Comprar um café