You know how cursor behaves in practically any text field / text area / command line, where arrow keys move cursor by single character, but holding down Ctrl while pressing arrow keys moves cursor by whole word.

What kind of wizardry would one do in order to switch this around?
As in, make the move-by-word the default behaviour, but make holding down Ctrl move cursor by just a single character? Some keyboard input binding, where ⬅ is an alias for Ctrl+⬅ ? But no idea how to make the opposite of this. Make Ctrl+⬅ an keyboard shortcut for xdotool key Left or something?
Does a setting like this already exist?

Also not sure if /c/linux is the most appropriate community for this question. Feel free to suggest more appropriate one or even cross-post to there.
Thank you

  • tetra@feddit.de
    link
    fedilink
    English
    arrow-up
    5
    ·
    1 year ago

    For shells (and other programs) using GNU readline for interactions and line-edits (like bash), some of this can be achieved with an ~/.inputrc configuration file, e.g., mapping the correct key sequence for your terminal emulator to the backward-word move command. You can look up these sequences using infocmp -L1 or interactively using sed -n l.

    Most other shells use their own command line handling routines and configuration though, so this won’t work for e.g., zsh or fish.

    • Gamma@programming.dev
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      1 year ago

      For Zsh, this might work:

      bindkey '^[[1;2C' forward-word
      bindkey '^[[1;2D' backward-word
      

      If these don’t work for you, try this:

      read -rsk1 s
      while read -rsk1 -t 0.1; do s+=$REPLY; done
      printf '%s\n' ${s//$'\e'/'^['}
      

      And type the chord/key you want to check.