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
sélectionner vitangex,lancer l’installation et redémarrer sublime
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 2PackagesColor 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
...
<key>background</key>
<string>#49483E</string>
...
<key>selection</key>
<string>#272822</string>
...
<dict>
<key>name</key>
<string>Comment</string>
<key>scope</key>
<string>comment</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#00FF40</string>
</dict>
</dict>
...
<key>uuid</key>
<string>D8D5E82E-3D5B-46B5-B38E-8C841C21346D</string>
Ajouter des commandes dans le mode vim¶
Le plugin VintageEx ce trouve dans le répertoire Sublime Text 2PackagesVintageEx 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:
- ajouter modifier EX_COMMANDS dans le fichier ex_command_parser.py: cela permet d’ajouer la définition de la commande
- 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:
#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
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
EX_COMMANDS[('echo', 'echo')] = ex_cmd_data(
command='ex_echo',
invocations=(
re.compile(r'(?P<params>.+)$'),
),
error_on=()
)
et dans ex_commands.py on ajoute la classe ExEcho
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
<!--<dict>
<key>match</key>
<string>^\s*((?!-|\+|✓|✔|❍|❑|■|□|☐|▪|▫|–|—|_|✘)\S).*((?!:\s*).\s*)$</string>
<key>name</key>
<string>notes.todo</string>
</dict>-->
on peut aussi modifier le taks.hidden-tmTheme
<dict>
<key>background</key>
<string>#FFFFFF</string>
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
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 2PackagesVintageDefault.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