add readline-keybindings.md
This commit is contained in:
127
tech_docs/readline-keybindings.md
Normal file
127
tech_docs/readline-keybindings.md
Normal file
@@ -0,0 +1,127 @@
|
||||
### 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.
|
||||
Reference in New Issue
Block a user