https://github.com/hbin/smart-shift.git
git clone 'git://github.com/hbin/smart-shift.git'
Smart Shift is a minor mode for conveniently shift the line/region to the left/right by the current major mode indentation width or shift line/region backwardly/forwardly by lines.
Once you have setup Melpa you can use package-install
command to install. The package name is smart-shift
.
(add-to-list 'load-path "/path/to/smart-shift")
(require 'smart-shift)
(global-smart-shift-mode 1)
Smart Shift will infer the indentation level of current major mode, if none of major modes listed below match, use the tab-width
as default.
It can also be set to a number explictly.
(setq smart-shift-indentation-level 2)
Or, for some major mode we haven't support, add following snippets to your config file. Test it and send a PR.
lisp
(eval-after-load 'your-major-mode
'(progn
(add-to-list 'smart-shift-mode-alist
'(major-mode-or-derived-mode . customize-base-offset))))
Command | Keybinding | Description
———————|————|——————————————————–
smart-shift-left | C-C <left>
| Shift the line or region ARG times to the left.
smart-shift-right | C-C <right>
| Shift the line or region ARG times to the right.
smart-shift-up | C-C <up>
| Shift the line or region ARG lines backwardly.
smart-shift-down | C-C <down>
| Shift the line or region ARG lines forwardly.
After invoking smart-shift-<arrow>
the first time, you can simply hit the <arrow>
key to continuously shift, respectively.
If you use the key-chord like me. I strongly recommend you add the following snippets:
(key-chord-define-global "<<" 'smart-shift-left)
(key-chord-define-global ">>" 'smart-shift-right)
Forks and pull requests are welcome!