├── README.md ├── file_rename.py └── file_rename.sublime-commands /README.md: -------------------------------------------------------------------------------- 1 | File Rename 2 | =========== 3 | 4 | Rename files from the SublimeText3 command palette. No mouse required. 5 | 6 | To run 7 | ------ 8 | 9 | `Ctrl-Shift-P` or `Command-Shift-P` then type `File:Rename` or `fr` 10 | 11 | 12 | To install 13 | ---------- 14 | 15 | With [Package Control](http://wbond.net/sublime_packages/package_control): 16 | 17 | - Ctrl-Shift-P or Command-Shift-P 18 | - Package Control: Install Package 19 | - File Rename 20 | 21 | Manually with git: 22 | 23 | - Sublime -> Preferences -> Browse Packages... 24 | - git clone https://github.com/brianlow/FileRename 25 | 26 | Manually: 27 | 28 | - Sublime -> Preferences -> Browse Packages... 29 | - go into User\ 30 | - copy file_rename.py and file_rename.sublime-commands here 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /file_rename.py: -------------------------------------------------------------------------------- 1 | import sublime 2 | import sublime_plugin 3 | import os 4 | import functools 5 | 6 | 7 | class FileRenameCommand(sublime_plugin.TextCommand): 8 | def run(self, edit): 9 | filename = self.view.file_name() 10 | branch, leaf = os.path.split(filename) 11 | 12 | if not os.access(filename, os.W_OK): 13 | sublime.error_message(leaf + " is read-only") 14 | 15 | panel = self.view.window().show_input_panel("New Name:", leaf, functools.partial(self.on_done, filename, branch), None, None) 16 | 17 | name, ext = os.path.splitext(leaf) 18 | panel.sel().clear() 19 | panel.sel().add(sublime.Region(0, len(name))) 20 | 21 | def on_done(self, old, branch, leaf): 22 | new = os.path.join(branch, leaf) 23 | 24 | try: 25 | if len(leaf) is 0: 26 | sublime.error_message("No filename given") 27 | return; 28 | 29 | if os.path.exists(new) and old.lower() != new.lower(): 30 | sublime.error_message(new + " already exists") 31 | return; 32 | 33 | os.rename(old, new) 34 | 35 | v = self.view.window().find_open_file(old) 36 | if v: 37 | v.retarget(new) 38 | except Exception as e : 39 | sublime.status_message("Unable to rename: " + str(e)) 40 | 41 | -------------------------------------------------------------------------------- /file_rename.sublime-commands: -------------------------------------------------------------------------------- 1 | [ 2 | { "caption": "File: Rename", "command": "file_rename" }, 3 | ] --------------------------------------------------------------------------------