Sublime Text 2 ************** Sublime Text 2 est un éditeur de code écrit en python et qu'on peut trouver sur ce lien http://www.sublimetext.com Il n'est pas gratuit et pas open-source mais il est écrit en python et il possède un gestionnaire de plugin full python. Il est multiplateforme: * windows * portable windows * linux une fois installé il faut déterminer ou ce trouve le gestionnaire de configuration et de plugin. pour cela il faut ouvrir sublime puis lancer le mode console (menu View/ Hide Console) et lancer la commande :: print sublime.installed_packages_path() :: C:\Users\fraoustin\AppData\Roaming\Sublime Text 2\Installed Packages mode vim ======== Un des modes très intéressant est le mode vintage + vintagex. Cela permet d'avoir le comportant de vim dans sublime avec la possibilité de créer soi-même les plugins pour activer le mode vintage il suffit de suivre la doc `http://www.sublimetext.com/docs/2/vintage.html `_ :: Vintage is disabled by default, via the ignored_packages setting. If you remove "Vintage" from the list of ignored packages, you'll be able to edit with vi keys: 1. Select the Preferences/Settings - Default menu item 2. Edit the ignored_packages setting, changing it from: "ignored_packages": ["Vintage"] to: //"ignored_packages": ["Vintage"] "ignored_packages": [] now save the file. 3. Vintage mode is now enabled - you'll see "INSERT MODE" listed in the status bar Vintage starts in insert mode by default. This can be changed by adding: "vintage_start_in_command_mode": true to your User Settings. maintenant vous avez deux mode: * INSERT (pour rentrer dans ce mode faire "i") * COMMAND(pour rentrer dans ce mode faire "Esc") pour installer le plugin vintagex il suffit de suivre la doc sur `http://wbond.net/sublime_packages/package_control/installation `_ Installation is through the Sublime Text 2 console. This is accessed via the ctrl+` shortcut. Once open, paste the following command into the console: :: import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None;rllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print Please restart Sublime Text to finish installation' This command creates the Installed Packages folder for you (if necessary), and then downloads the Package Control.sublime-package into it. puis il faut via le control package installer le package lancer la palette sublime via un Crtl+Shit+p .. figure:: data/sublime_ecran1.png sélectionner vitangex,lancer l'installation et redémarrer sublime .. figure:: data/sublime_ecran2.png maintenant un Esc+: permet d'avoir une ligne de commande vim Modification création d'un theme ================================ les thèmes sont présent dans le dossier Sublime Text 2\Packages\Color Scheme - Default :: print sublime.installed_packages_path().join('..\Packages\Color Scheme - Default') il suffit d'ajouter un fichier `*.tmTheme` dans ce dossier Vous pouvez partir d'un fichier existant pour créer le votre Par exemple on peut copier Monokai.tmTheme en MonokaiFAO.tmTheme puis modifier :: ... background #49483E ... selection #272822 ... name Comment scope comment settings foreground #00FF40 ... uuid D8D5E82E-3D5B-46B5-B38E-8C841C21346D Ajouter des commandes dans le mode vim ====================================== Le plugin VintageEx ce trouve dans le répertoire \Sublime Text 2\Packages\VintageEx et est composé principalement de :: VintageEx |__ ex_commands.py |__ ex_search_cmd.py |__ setup.py |__ test_runner.py |__ vintage_ex.py |__ vex |__ ex_command_parser.py |__ ex_error.py |__ ex_location.py |__ ex_range.py |__ shell.py Pour ajouter des commandes il faut: 1. ajouter modifier EX_COMMANDS dans le fichier ex_command_parser.py: cela permet d'ajouer la définition de la commande 2. ajouter la classe qui sera appeler par la commande dans le fichier ex_commands.py .. note:: il faut noter que dans EX_COMMANDS on utilise la commande ex_yzz ce qui donne comme classe appelé ExYzz( dérivée de sublime_plugin.*) Un exemple de mise en place: on souhaite ajouter la commande build qui permet de lancer la fonction build de Sublime Dans ex_command_parser.py on ajoute: .. code-block:: python #ADD BY FAO EX_COMMANDS[('build', 'build')] = ex_cmd_data( command='ex_build', invocations=(), error_on=() ) #END ADD BY FAO et dans ex_commands.py on ajoute la classe ExBuild .. code-block:: python class ExBuild(sublime_plugin.TextCommand): def run(self, edit, line_range=None): try: w = self.view.window() w.run_command('build') except Exception as e: sublime.status_message("VintageEx: Error while executing command build.") return Il est tout à fait possible de faire passer des paramètres à travers une commande vi. Nous pouvons par exemple créer la commande *echo* qui réalise: * un message comportant les paramètres passés à la commande echo * un messageBox comportant les paramètres passés à la commande echo .. code-block:: python EX_COMMANDS[('echo', 'echo')] = ex_cmd_data( command='ex_echo', invocations=( re.compile(r'(?P.+)$'), ), error_on=() ) et dans ex_commands.py on ajoute la classe ExEcho .. code-block:: python class ExEcho(sublime_plugin.TextCommand): def run(self, edit, line_range=None, params=''): w = self.view.window() sublime.status_message(params) sublime.message_dialog(params) return vous pouvez obtenir la documentation sur l'API en suivant le lien http://www.sublimetext.com/docs/2/api_reference.html les plugins utilent =================== il existe une gestion des plugins sur cette adresse `http://wbond.net/sublime_packages/package_control/installation `_ quelques liens utilent: * http://wbond.net/sublime_packages/package_control * http://wbond.net/sublime_packages * http://wbond.net/sublime_packages/community * https://github.com/sublimetext/vintageex il faut d'abord installer le plugin package control (cf plus haut ou web pour l'installer) * dictionaries * Format SQL * Indent XML * Package Control * Python PEP8 Autoformat * Sublimerge * JsMinifier * JSFormat * ColorPicker * Terminal : il faut placer dans le setting default de l'utilisateur les éléments suivant :: { // The command to execute for the terminal, leave blank for the OS default // On OS X the terminal can be set to iTerm.sh to execute iTerm "terminal": "cmd", // A list of default parameters to pass to the terminal, this can be // overridden by passing the "parameters" key with a list value to the args // dict when calling the "open_terminal" or "open_terminal_project_folder" // commands "parameters": [] } * VintageEx * plainTasks: gestion d'une todo avec la conf suivante :: open_tasks_bullet": "❑" "before_tasks_bullet_margin": 0, "date_format": "",//"(%y-%m-%d %H:%M)", "done_tag": true, // related to @cancelled as well "line_numbers": true, "margin": 0, "tab_size": 4, et modification de PlainTasks.tmlanguage :: on peut aussi modifier le taks.hidden-tmTheme :: background #FFFFFF a tester: * INI Trucs et astuces ================ lancer un fichier bat --------------------- Pour pouvoir lancer, via un crtl+b, un fichier bat il suffit de créer un nouveau paramétrage de build Pour cela il faut créer un nouveau système de build .. figure:: data/20121219_01.png puis dans le fichier ouvert, copier le code suivant :: { "cmd": ["$file"], "working_dir": "$file_path", "selector": "source.dosbatch" } ajouter des raccourcis clavier ------------------------------ il est possible de modifier les fichiers sublime-keymap (depuis le menu préférence par exemple) et d'y ajouter ces propres raccourcis :: { "keys": ["ctrl+shift+a"], "command": "open_terminal" } ou :: { "keys": ["j", "j"], "command": "exit_insert_mode", "context": [ { "key": "setting.command_mode", "operand": false }, { "key": "setting.is_widget", "operand": false } ] } Un dès meilleur exemple est l'ajout du key bing "insert" pour rentrer en mode insertion (commme avec vim). Il suffit de rajouter dans le fichier Sublime Text 2\Packages\Vintage\Default.sublime-keymap l'élément suivant :: { "keys": ["insert"], "command": "enter_insert_mode", "context": [ {"key": "setting.command_mode"}, {"key": "selection_empty"} ] }, créer son plugin ================ Pour créer un plugin on peut regarder ce lien http://net.tutsplus.com/tutorials/python-tutorials/how-to-create-a-sublime-text-2-plugin/ vous pouvez obtenir la documentation sur l'API en suivant le lien http://www.sublimetext.com/docs/2/api_reference.html @TODO filtrer les resultats d'un tableau liens utiles ============ http://blog.goetter.fr/post/24671859680/sublime-text-2-raccourcis-et-plugins http://docs.sublimetext.info/en/latest/ http://sqrhedz.com/blog/2012/03/22/sublime-text-2-best-editor-ever#.UJLjtaDsEVQ http://stackoverflow.com/questions/9620812/how-do-i-remap-escape-when-in-sublime-text-vintage-mode