diff --git a/TODO.org b/TODO.org index e041f05..59e21fd 100644 --- a/TODO.org +++ b/TODO.org @@ -25,8 +25,6 @@ https://sw.kovidgoyal.net/kitty/actions/#action-toggle-layout ** Easier shortcuts to resize panes ctrl+shift+arrows * Xonsh -** Fix Ctrl-y -** Make ctrl-w delete path components ** Make interpolation cheatsheet * Nix ** Replace dotfiles deploy script with home-manager on Nix systems diff --git a/xonsh/bindings.xsh b/xonsh/bindings.xsh new file mode 100644 index 0000000..1b23553 --- /dev/null +++ b/xonsh/bindings.xsh @@ -0,0 +1,16 @@ +from prompt_toolkit.key_binding.bindings.named_commands import get_by_name +from prompt_toolkit.keys import Keys + +@events.on_ptk_create +def custom_keybindings(bindings, **kw): + @bindings.add(Keys.ControlW) + def delete_word(event): + get_by_name("backward-kill-word").call(event) + + @bindings.add(Keys.ControlX, Keys.ControlA) + def select_all(event): + buffer = event.current_buffer + buffer.cursor_position = 0 + buffer.start_selection() + buffer.selection_state.enter_shift_mode() + buffer.cursor_position = len(buffer.text) diff --git a/xonsh/rc.xsh b/xonsh/rc.xsh index f346f44..d1da5dd 100644 --- a/xonsh/rc.xsh +++ b/xonsh/rc.xsh @@ -16,6 +16,7 @@ $XONSH_HISTORY_BACKEND = "sqlite" $HISTCONTROL = "ignoredups" $MULTILINE_PROMPT = " " $UPDATE_PROMPT_ON_KEYPRESS = False +$XONSH_COPY_ON_DELETE = True $AUTO_CD = True @@ -27,7 +28,7 @@ $ALTERNATE_EDITOR = "vim" $TERMINAL = "kitty" config_dir = p"~/.dotfiles/xonsh" -xsh_modules = ["prompt", "path", "alias", "java", "linux", "python", "local", "docker", "kitty", "nix"] +xsh_modules = ["prompt", "bindings", "path", "alias", "java", "linux", "python", "local", "docker", "kitty", "nix"] for module in xsh_modules: _p = config_dir / f"{module}.xsh"