In this post, I want to share how to use
bindkeys command to solve a few
issues when using Zsh.
Can not use HOME and END keys normally
After using Zsh, I found that some terminals can not understand Home and End keys correctly, i.e., I can not go to the beginning or end of a line by pressing Home or End key.
This is because the key codes that terminal recognizes when you press certain
keys can not be recognized by Zsh. You can manually find which key code is sent
when you press a key. You can use
showkey -a to print the key codes. Here is
what it shows when I press Home and End keys.
After we know the key codes for these two keys, we can bind the codes to the
operation we want to perform, that is
the following settings to your
bindkey '^[[H' beginning-of-line bindkey '^[[F' end-of-line
Bind key to run a custom command
One reader of this post asked a question on how to use shortcut keys to run the following command:
I searched the web and found a solution. Suppose that we want to bind
Ctrl + O to the above command, we can add the following
bindkey -s '^o' 'nvim $(fzf)^M' # you may also use the following one # bindkey -s '^o' 'nvim $(fzf)\n'
In the above setting,
-s option is used to translate the input string to
output string so that when you press the shortcut, it is replaced with the
command you want to run.
\n is used to represent the Enter
key so that the command is run automatically.
- Home and End not recognized
- Bind keys to a command
License CC BY-NC-ND 4.0