128 lines
3.8 KiB
Markdown
128 lines
3.8 KiB
Markdown
### 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.
|