diff --git a/README.md b/README.md
index 055e488..e149ebd 100644
--- a/README.md
+++ b/README.md
@@ -49,6 +49,7 @@ Navigate your [Kitty](https://sw.kovidgoyal.net/kitty/) scrollback buffer to qui
- 🫡 [Commands](#-commands)
- ⌨️ [Keymaps](#%EF%B8%8F-keymaps)
- 🪛 [Optional Setup](#-optional-setup)
+ - [command-line editing](#command-line-editing)
- [tmux (🧪 experimental )](#tmux--experimental-)
- 👏 [Recommendations](#-recommendations)
- 🤝 [Acknowledgements](#-acknowledgements)
@@ -168,11 +169,29 @@ Navigate your [Kitty](https://sw.kovidgoyal.net/kitty/) scrollback buffer to qui
- `kitty-scrollback.nvim` automatically closes and executes the content of the paste window
+
+😹 Edit the current command line (bash, fish, or zsh)
+
+
+> [!NOTE]
+> This requires extra steps to setup. See optional [command-line editing setup](#command-line-editing).
+
+
+- Start typing a command in your shell
+- Open the current command line in kitty-scrollback.nvim with the following keybind
+ - bash: ``
+ - fish: `` or `` (where `M` is the alt key)
+ - zsh: ``
+- Modify the command and do any additional operations that you typically would perform in kitty-scrollback.nvim
+
😾 tmux support (🧪 experimental )
+> [!NOTE]
+> This requires extra steps to setup. See optional [tmux setup](#tmux--experimental-).
+
- Open a tmux pane's scrollback history (default mapping `[`)
- That's it! You are in Neovim, navigate the scrollback buffer.
@@ -787,7 +806,10 @@ action_alias kitty_scrollback_nvim kitten /path/to/your/install/kitty-scrollback
```
## 🧬 Environment Variables
-The environment variable `KITTY_SCROLLBACK_NVIM` is set to `true` while kitty-scrollback.nvim is active.
+The environment variable `KITTY_SCROLLBACK_NVIM` is set to `'true'` while kitty-scrollback.nvim is active.
+> [!NOTE]
+> `'true'` is a string because `KITTY_SCROLLBACK_NVIM` is an environment variable. Make sure to use a string `'true'` in Lua
+> instead of accidentally using a boolean `true`. Otherwise, the conditional checks will not operate as expected.
This can be used to in your Neovim configuration to provide kitty-scrollback.nvim specific behavior that may differ from a regular Neovim instance.
```lua
@@ -860,9 +882,163 @@ The API is available via the `kitty-scrollback.api` module. e.g., `require('kitt
### command-line editing
-- Supports `bash`, `fish`, and `zsh`
-- Run `:KittyScrollbackGenerateCommandLineEditing bash|fish|zsh`
-- `$KITTY_SCROLLBACK_NVIM_EDIT_ARGS` can be used to pass arguments to kitty-scrollback.nvim in command-line editing mode
+> [!NOTE]
+> Command-line editing is only supported for `bash`, `fish`, and `zsh`
+
+Generate the shell configuration and add them to the appropriate location. The comments in the shell configuration will provide
+additional setup instructions. `KittyScrollbackGenerateCommandLineEditing` requires one parameter, either `bash`, `fish`, or `zsh`.
+ ```sh
+ nvim --headless +'KittyScrollbackGenerateCommandLineEditing ' # replace with bash, fish, or zsh
+ ```
+
+The generated configuration will mention the environment variable `KITTY_SCROLLBACK_NVIM_EDIT_ARGS`. This can be used to pass arguments to kitty-scrollback.nvim in command-line editing mode.
+This allows [Kitten Arguments](#kitten-arguments) setup specific to opening kitty-scrollback.nvim in command-line editing mode
+that you may want to configure differently your standard kitty-scrollback.nvim setup.
+
+### Example setups
+
+bash
+
+- Run `nvim --headless +'KittyScrollbackGenerateCommandLineEditing bash'`. You should see similar output to the following:
+
+```bash
+
+# add the following environment variables to your bash config (e.g., ~/.bashrc)
+# the editor defined in KITTY_SCROLLBACK_VISUAL will be used in place of VISUAL
+# for other scenarios that are not editing the command-line. For example, C-xC-e
+# will edit the current command-line in kitty-scrollback.nvim and pressing v in
+# less will open the file in $KITTY_SCROLLBACK_VISUAL (defaults to nvim if not
+# defined)
+export KITTY_SCROLLBACK_VISUAL='nvim'
+export VISUAL='~/.local/share/nvim/lazy/kitty-scrollback.nvim/scripts/edit_command_line.bash'
+
+# [optional] pass arguments to kitty-scrollback.nvim in command-line editing mode
+# by using the environment variable KITTY_SCROLLBACK_NVIM_EDIT_ARGS
+# export KITTY_SCROLLBACK_NVIM_EDIT_ARGS=''
+
+# [optional] customize your readline config (e.g., ~/.inputrc)
+# default mapping in vi mode
+set keymap vi-command
+"v": vi-edit-and-execute-command
+
+# default mapping in emacs mode
+set keymap emacs
+"\C-x\C-e": edit-and-execute-command
+```
+- In this case, I will use the default mappings and not make any changes to `~/.inputrc`. Open,
+`~/.bashrc` and add the following:
+```bash
+# ~/.bashrc
+export VISUAL='~/.local/share/nvim/lazy/kitty-scrollback.nvim/scripts/edit_command_line.bash'
+```
+- Close and reopen your `bash` shell
+- Enter a command and press ``, you should now be editing your command line with kitty-scrollback.nvim!
+
+> [!NOTE]
+> Since this configuration is making use of the `VISUAL` environment variable. The environment variable `KITTY_SCROLLBACK_VISUAL`
+> can be used for cases where programs open `VISUAL` that do not involve command-line editing. By default, if `KITTY_SCROLLBACK_VISUAL`
+> is not set, it will default to `nvim`. For example, if you open a file with `less` and press `v` to open the file with the `VISUAL`
+> editor, it will open in the command defined in `KITTY_SCROLLBACK_VISUAL`. So, in this case open in `nvim` as you typically would expect.
+
+
+
+fish
+
+- Run `nvim --headless +'KittyScrollbackGenerateCommandLineEditing fish'`. You should see similar output to the following:
+
+```fish
+# add the following function and bindings to your fish config
+# e.g., ~/.config/fish/conf.d/kitty_scrollback_nvim.fish or ~/.config/fish/config.fish
+
+function kitty_scrollback_edit_command_buffer
+ set --local --export VISUAL '~/.local/share/nvim/lazy/kitty-scrollback.nvim/scripts/edit_command_line.sh'
+ edit_command_buffer
+ commandline ''
+end
+
+bind --mode default \ee kitty_scrollback_edit_command_buffer
+bind --mode default \ev kitty_scrollback_edit_command_buffer
+
+bind --mode visual \ee kitty_scrollback_edit_command_buffer
+bind --mode visual \ev kitty_scrollback_edit_command_buffer
+
+bind --mode insert \ee kitty_scrollback_edit_command_buffer
+bind --mode insert \ev kitty_scrollback_edit_command_buffer
+
+# [optional] pass arguments to kitty-scrollback.nvim in command-line editing mode
+# by using the environment variable KITTY_SCROLLBACK_NVIM_EDIT_ARGS
+# set --global --export KITTY_SCROLLBACK_NVIM_EDIT_ARGS ''
+```
+
+- In this case, I will map `` to use kitty-scrollback.nvim and keep `` with the default mappings. Open
+`~/.config/fish/conf.d/kitty_scrollback_nvim.fish` and add the following:
+
+```fish
+# ~/.config/fish/conf.d/kitty_scrollback_nvim.fish
+function kitty_scrollback_edit_command_buffer
+ set --local --export VISUAL '~/.local/share/nvim/lazy/kitty-scrollback.nvim/scripts/edit_command_line.sh'
+ edit_command_buffer
+ commandline ''
+end
+
+bind --mode default \ee kitty_scrollback_edit_command_buffer
+bind --mode visual \ee kitty_scrollback_edit_command_buffer
+bind --mode insert \ee kitty_scrollback_edit_command_buffer
+```
+- Close and reopen your `fish` shell
+- Enter a command and press `` (where `M` is the alt key), you should now be editing your command line with kitty-scrollback.nvim!
+
+> [!NOTE]
+> Since this example configuration is not rebinding `\ev`. You can still press `` (where `M` is the alt key), to open then
+> command-line buffer in the editor defined in the `VISUAL` environment variable. This gives you some extra flexibility in the fish shell!
+
+
+
+zsh
+
+- Run `nvim --headless +'KittyScrollbackGenerateCommandLineEditing zsh'`. You should see similar output to the following:
+
+```zsh
+# add the following environment variables to your zsh config (e.g., ~/.zshrc)
+
+autoload -Uz edit-command-line
+zle -N edit-command-line
+
+function kitty_scrollback_edit_command_line() {
+ local VISUAL='~/.local/share/nvim/lazy/kitty-scrollback.nvim/scripts/edit_command_line.sh'
+ zle edit-command-line
+ zle kill-whole-line
+}
+zle -N kitty_scrollback_edit_command_line
+
+bindkey '^x^e' kitty_scrollback_edit_command_line
+
+# [optional] pass arguments to kitty-scrollback.nvim in command-line editing mode
+# by using the environment variable KITTY_SCROLLBACK_NVIM_EDIT_ARGS
+# export KITTY_SCROLLBACK_NVIM_EDIT_ARGS=''
+```
+- Open `~/.zshrc` and add the following:
+```zsh
+# ~/.zshrc
+autoload -Uz edit-command-line
+zle -N edit-command-line
+
+function kitty_scrollback_edit_command_line() {
+ local VISUAL='~/.local/share/nvim/lazy/kitty-scrollback.nvim/scripts/edit_command_line.sh'
+ zle edit-command-line
+ zle kill-whole-line
+}
+zle -N kitty_scrollback_edit_command_line
+
+bindkey '^x^e' kitty_scrollback_edit_command_line
+```
+
+
+
+- Close and reopen your `zsh` shell
+- Enter a command and press ``, you should now be editing your command line with kitty-scrollback.nvim!
+
+
### tmux (🧪 experimental )