### Complete Guide to Readline Keybindings #### What is Readline? Readline is a library that provides command-line editing and history capabilities. It is used by many command-line applications, including Bash, to facilitate user input. #### Common Readline Keybindings ##### Cursor Movement - **`ctrl-a`**: Move to the beginning of the line. - **`ctrl-e`**: Move to the end of the line. - **`ctrl-f`**: Move forward one character. - **`ctrl-b`**: Move backward one character. - **`alt-f`**: Move forward one word. - **`alt-b`**: Move backward one word. ##### Editing - **`ctrl-k`**: Delete from the cursor to the end of the line. - **`ctrl-u`**: Delete from the cursor to the beginning of the line. - **`ctrl-w`**: Delete the word before the cursor. - **`alt-d`**: Delete the word after the cursor. - **`ctrl-d`**: Delete the character under the cursor. - **`ctrl-h`**: Delete the character before the cursor (backspace). ##### Text Insertion and Replacement - **`ctrl-y`**: Yank (paste) the last deleted text. - **`alt-r`**: Undo all changes to the current line. - **`ctrl-t`**: Transpose the character before the cursor with the character under the cursor. ##### Case Conversion - **`alt-u`**: Convert the word after the cursor to uppercase. - **`alt-l`**: Convert the word after the cursor to lowercase. - **`alt-c`**: Capitalize the word after the cursor. ##### Miscellaneous - **`ctrl-l`**: Clear the screen and redraw the current line at the top. - **`ctrl-_` or `ctrl-x ctrl-u`**: Undo the last editing command. - **`ctrl-r`**: Reverse search through command history. - **`ctrl-s`**: Forward search through command history. - **`ctrl-p`**: Previous command in history. - **`ctrl-n`**: Next command in history. ##### Command History - **`ctrl-p`**: Previous command in history. - **`ctrl-n`**: Next command in history. - **`alt-.`**: Use the last argument of the previous command. ##### Process Management - **`ctrl-c`**: Interrupt/Kill the current process. - **`ctrl-z`**: Suspend the current process. - **`ctrl-d`**: Logout from the current session or close the terminal (EOF). ### Viewing and Customizing Readline Keybindings #### On Linux 1. **View Current Keybindings:** ```sh bind -P ``` 2. **Customizing Keybindings:** - Edit the `~/.inputrc` file. If it does not exist, create it. - Add custom keybindings. For example: ```sh "\C-a": beginning-of-line ``` - Apply changes by restarting the terminal or running: ```sh bind -f ~/.inputrc ``` #### On macOS 1. **View Current Keybindings:** ```sh bind -P ``` 2. **Customizing Keybindings:** - Edit or create the `~/.inputrc` file. - Example customization: ```sh "\C-a": beginning-of-line ``` ### Common `.inputrc` Customizations Here are useful customizations you might add to your `~/.inputrc`: ```sh # Enable vi mode set editing-mode vi # Enable case-insensitive completion set completion-ignore-case on # Show all possibilities for completion at once set show-all-if-ambiguous on # Do not add space after autocompletion set completion-suppress-space on # Custom keybindings "\C-a": beginning-of-line "\C-e": end-of-line "\C-k": kill-line "\C-u": unix-line-discard "\C-w": unix-word-rubout "\M-d": kill-word ``` ### Applying Changes After editing your `~/.inputrc`, apply the changes by restarting your terminal or running: ```sh bind -f ~/.inputrc ``` ### Example Workflow Using Keybindings 1. **Move to the beginning of the line:** ```sh ctrl-a ``` 2. **Delete the word before the cursor:** ```sh ctrl-w ``` 3. **Type a new command (e.g., `cat`):** ```sh cat src/pages/index.js ``` This guide provides an overview of common Readline keybindings, how to view and customize them on Linux and macOS, and how to apply these customizations for a more efficient command-line experience.