From c3362aefa2e762211409923cfff065541bebf9e7 Mon Sep 17 00:00:00 2001 From: Saumit Dinesan Date: Sun, 22 May 2022 00:37:40 +0530 Subject: ble.sh & z4h addition --- .local/src/blesh/doc/README.md | 538 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 538 insertions(+) create mode 100644 .local/src/blesh/doc/README.md (limited to '.local/src/blesh/doc/README.md') diff --git a/.local/src/blesh/doc/README.md b/.local/src/blesh/doc/README.md new file mode 100644 index 0000000..1a6001f --- /dev/null +++ b/.local/src/blesh/doc/README.md @@ -0,0 +1,538 @@ +[ Languages: **English** | [日本語](README-ja_JP.md) (Japanese) ] + +

ble.sh (/blɛʃ/) ―Bash Line Editor―

+

+[ README | Manual | +Q&A | +contrib | +Recipes ] +

+ +*Bash Line Editor* (`ble.sh`) is a command line editor written in pure Bash which replaces the default GNU Readline. + +Current devel version is 0.4. +This script supports Bash 3.0 or higher although we recommend to use `ble.sh` with release versions of Bash 4.0 or higher. +Currently, only `UTF-8` encoding is supported for non-ASCII characters. +This script is provided under the [**BSD License**](LICENSE.md) (3-clause BSD license). + +Disclaimer: The core part of the line editor is written in **pure Bash**, but +`ble.sh` relies on POSIX `stty` to set up TTY states before and after the execution of user commands. +It also uses other POSIX utilities for acceleration +in some part of initialization and cleanup code, +processing of large data in completions, paste of large data, etc. + +Pronunciation: The easiest pronunciation of `ble.sh` that users use is /blɛʃ/, but you can actually pronounce it as you like. +I do not specify the canonical way of pronoucing `ble.sh`. +In fact, I personally read it verbosely as /biːɛliː dɑt ɛseɪtʃ/ in my head. + +## Quick instructions + +Installation requires the commands `git`, `make` (GNU make), and `gawk` (in addition to `bash` and POSIX standard utilities). +For detailed descriptions, see [Sec 1.1](#get-from-source) and [Sec 1.2](#get-from-tarball) for trial/installation, +[Sec 1.3](#set-up-bashrc) for the setup of your `~/.bashrc`. +Please replace `make` with `gmake` if your system provides GNU make as `gmake` (such as in BSD). + +```bash +# TRIAL without installation + +git clone --recursive https://github.com/akinomyoga/ble.sh.git +make -C ble.sh +source ble.sh/out/ble.sh + +# Quick INSTALL to BASHRC (If this doesn't work, please follow Sec 1.3) + +git clone --recursive https://github.com/akinomyoga/ble.sh.git +make -C ble.sh install PREFIX=~/.local +echo 'source ~/.local/share/blesh/ble.sh' >> ~/.bashrc + +# UPDATE (in a ble.sh session) + +ble-update + +# UPDATE (outside ble.sh sessions) + +bash /path/to/ble.sh --update + +# PACKAGE (for package maintainers) + +git clone --recursive https://github.com/akinomyoga/ble.sh.git +make -C ble.sh install DESTDIR=/tmp/blesh-package PREFIX=/usr/local +``` + +You may also install `ble.sh` through package-management systems (currently only AUR): + +- [AUR (Arch Linux)](https://github.com/akinomyoga/ble.sh/wiki/Manual-A1-Installation#user-content-AUR) `blesh-git` (devel), `blesh` (stable 0.3.3) + +## Features + +- **Syntax highlighting**: Highlight command lines input by users as in `fish` and `zsh-syntax-highlighting`. + Unlike the simple highlighting in `zsh-syntax-highlighting`, `ble.sh` performs syntactic analysis + to enable the correct highlighting of complex structures such as nested command substitutions, multiple here documents, etc. + Highlighting colors and styles are [fully configurable](https://github.com/akinomyoga/ble.sh/wiki/Manual-%C2%A72-Graphics). +- **Enhanced completion**: + Extend [completion](https://github.com/akinomyoga/ble.sh/wiki/Manual-%C2%A77-Completion) + by **syntax-aware completion**, completion with quotes and parameter expansions in prefix texts, **ambiguous candidate generation**, etc. + Also, [**menu-complete**](https://github.com/akinomyoga/ble.sh/wiki/Manual-%C2%A77-Completion#user-content-sec-menu-complete) + supports selection of candidates in menu (candidate list) by cursor keys, TAB and S-TAB. + The feature [**auto-complete**](https://github.com/akinomyoga/ble.sh/wiki/Manual-%C2%A77-Completion#user-content-sec-auto-complete) + supports the automatic suggestion of completed texts as in `fish` and `zsh-autosuggestions` (with Bash 4.0+). + The feature [**menu-filter**](https://github.com/akinomyoga/ble.sh/wiki/Manual-%C2%A77-Completion#user-content-sec-menu-filter) + integrates automatic filtering of candidates into menu completion (with Bash 4.0+). + There are other functionalities such as + [**dabbrev**](https://github.com/akinomyoga/ble.sh/wiki/Manual-%C2%A77-Completion#user-content-sec-dabbrev) and + [**sabbrev**](https://github.com/akinomyoga/ble.sh/wiki/Manual-%C2%A77-Completion#user-content-sec-sabbrev) like + [*zsh abbreviations*](https://unix.stackexchange.com/questions/6152/zsh-alias-expansion) or [`zsh-abbr`](https://github.com/olets/zsh-abbr). +- **Vim editing mode**: Enhance `readline`'s vi editing mode available with `set -o vi`. + Vim editing mode supports various vim modes such as char/line/block visual/select mode, replace mode, + command mode, operator pending mode as well as insert mode and normal mode. + Vim editing mode supports various operators, text objects, registers, keyboard macros, marks, etc. + It also provides `vim-surround` as an option. +- Other interesting features include + [**status line**](https://github.com/akinomyoga/ble.sh/wiki/Manual-%C2%A74-Editing#user-content-bleopt-prompt_status_line), + [**history share**](https://github.com/akinomyoga/ble.sh/wiki/Manual-%C2%A74-Editing#user-content-bleopt-history_share), + [**right prompt**](https://github.com/akinomyoga/ble.sh/wiki/Manual-%C2%A74-Editing#user-content-bleopt-prompt_rps1), + [**transient prompt**](https://github.com/akinomyoga/ble.sh/wiki/Manual-%C2%A74-Editing#user-content-bleopt-prompt_ps1_transient), + [**xterm title**](https://github.com/akinomyoga/ble.sh/wiki/Manual-%C2%A74-Editing#user-content-bleopt-prompt_xterm_title), etc. + +Note: ble.sh does not provide specific settings of the prompt, aliases, functions, etc. +ble.sh provides a more fundamental infrastructure so that users can set up their own prompt, aliases, functions, etc. +Of course ble.sh can be used in combination with other Bash configurations such as [`bash-it`](https://github.com/Bash-it/bash-it) and [`oh-my-bash`](https://github.com/ohmybash/oh-my-bash). + +> Demo (version 0.2) +> +> ![ble.sh demo gif](https://github.com/akinomyoga/ble.sh/wiki/images/trial1.gif) + +## History and roadmap + +My little experiment has took place in one corner of my `bashrc` in the end of May, 2013 after I enjoyed some article on `zsh-syntax-highlighting`. +I initially thought something can be achieved by writing a few hundred of lines of codes +but soon realized that everything needs to be re-implemented for the authentic support of syntax highlighting in Bash. +I decided to make it as an independent script `ble.sh`. +The name stemmed from that of Zsh's line editor, *ZLE* (*Zsh Line Editor*), but suffixed with `.sh` for the implication of being written in shell script. +I'm occasinally asked about the pronunciation of `ble.sh`, but you can actually pronounce it as you like. +After the two-week experiment, I was satisfied with my conclusion that it is *possible* to implement a full-featured line editor in Bash that satisfies the actual daily uses. +The real efforts of improving the prototype implementation for the real uses was started in Feburuary, 2015. +I released the initial version in the next December. Until then, the basic part of the line editor was completed. +The implementation of vim mode has been started in September, 2017 and completed in the next March. +I started working on the enhancement of the completion in August, 2018 and released it in the next February. + +- 2013-06 v0.0 -- prototype +- 2015-12 v0.1 -- Syntax highlighting [[v0.1.14](https://github.com/akinomyoga/ble.sh/releases/tag/v0.1.14)] +- 2018-03 v0.2 -- Vim mode [[v0.2.6](https://github.com/akinomyoga/ble.sh/releases/tag/v0.2.6)] +- 2019-02 v0.3 -- Enhanced completion [[v0.3.3](https://github.com/akinomyoga/ble.sh/releases/tag/v0.3.3)] +- 20xx-xx v0.4 (plan) -- programmable highlighting [`master`] +- 20xx-xx v0.5 (plan) -- TUI configuration +- 20xx-xx v0.6 (plan) -- error diagnostics? + +# 1 Usage + +## 1.1 Try `ble.sh` generated from source (version ble-0.4 devel) + +### Generate + +To generate `ble.sh`, `gawk` (GNU awk) and `gmake` (GNU make) (in addition to Bash and POSIX standard utilities) is required. +The file `ble.sh` can be generated using the following commands. +If you have GNU make installed on `gmake`, please use `gmake` instead of `make`. +```bash +git clone --recursive https://github.com/akinomyoga/ble.sh.git +cd ble.sh +make +``` + +A script file `ble.sh` will be generated in the directory `ble.sh/out`. + +### Try + +Then, you can load `ble.sh` in the Bash session using the `source` command: +```bash +source out/ble.sh +``` + +### Install + +To install `ble.sh` in a specified directory, use `make install`. + +```bash +# INSTALL to ~/.local/share/blesh +make install + +# INSTALL to a specified directory +make install INSDIR=/path/to/blesh + +# PACKAGE (for package maintainers) +make install DESTDIR=/tmp/blesh-package PREFIX=/usr/local +``` + +If either the make variables `DESTDIR` or `PREFIX` is supplied, `ble.sh` will be copied to `$DESTDIR/$PREFIX/share/blesh`. +Otherwise, if the make variables `INSDIR` is specified, it will be installed directly on `$INSDIR`. +Otherwise, if the environment variable `$XDG_DATA_HOME` is defined, the install location will be `$XDG_DATA_HOME/blesh`. +If none of these variables are specified, the default install location is `~/.local/share/blesh`. + +To set up `.bashrc` see [Sec. 1.3](#set-up-bashrc). + +## 1.2 Or, use a tar ball of `ble.sh` obtained from GitHub releases + +For download, trial and install, see the description at each release page. +The stable versions are significantly old compared to the devel version, so many features are unavailable. + +- Devel [v0.4.0-devel2](https://github.com/akinomyoga/ble.sh/releases/tag/v0.4.0-devel2) (2020-12) +- Stable [v0.3.3](https://github.com/akinomyoga/ble.sh/releases/tag/v0.3.3) (2019-02 fork) Enhanced completions +- Stable [v0.2.6](https://github.com/akinomyoga/ble.sh/releases/tag/v0.2.6) (2018-03 fork) Vim mode +- Stable [v0.1.14](https://github.com/akinomyoga/ble.sh/releases/tag/v0.1.14) (2015-12 fork) Syntax highlighting + +## 1.3 Set up `.bashrc` + +If you want to load `ble.sh` by default in interactive sessions of `bash`, usually one can just source `ble.sh` in `~/.bashrc`, +but more reliable way is to add the following codes to your `.bashrc` file: +```bash +# bashrc + +# Add this lines at the top of .bashrc: +[[ $- == *i* ]] && source /path/to/blesh/ble.sh --noattach + +# your bashrc settings come here... + +# Add this line at the end of .bashrc: +[[ ${BLE_VERSION-} ]] && ble-attach +``` + +## 1.4 User settings `~/.blerc` + +User settings can be placed in the init script `~/.blerc` (or `${XDG_CONFIG_HOME:-$HOME/.config}/blesh/init.sh` if `~/.blerc` is not available) +whose template is available as the file [`blerc`](https://github.com/akinomyoga/ble.sh/blob/master/blerc) in the repository. +The init script is a Bash script which will be sourced during the load of `ble.sh`, so any shell commands can be used in `~/.blerc`. +If you want to change the default path of the init script, you can add the option `--rcfile INITFILE` to `source ble.sh` as the following example: + +```bash +# in bashrc + +# Example 1: ~/.blerc will be used by default +[[ $- == *i* ]] && source /path/to/blesh/ble.sh --noattach + +# Example 2: /path/to/your/blerc will be used +[[ $- == *i* ]] && source /path/to/blesh/ble.sh --noattach --rcfile /path/to/your/blerc +``` + +## 1.5 Update + +You need Git (`git`), GNU awk (`gawk`) and GNU make (`make`). +For `ble-0.3+`, you can run `ble-update` in the session with `ble.sh` loaded: + +```bash +$ ble-update +``` + +For `ble.0.4+`, you can also update it outside the `ble.sh` session using + +```bash +$ bash /path/to/ble.sh --update +``` + +You can instead download the latest version by `git pull` and install it: + +```bash +cd ble.sh # <-- enter the git repository you already have +git pull +git submodule update --recursive --remote +make +make INSDIR="$HOME/.local/share/blesh" install +``` + +## 1.6 Uninstall + +Basically you can simply delete the installed directory and the settings that user added. + +- Close all the `ble.sh` sessions (the Bash interactive sessions with `ble.sh`) +- Remove the added lines in `.bashrc`. +- Remove `blerc` files (`~/.blerc` or `~/.config/blesh/init.sh`) if any. +- Remove the installed directory. +- Remove the cache directory `~/.cache/blesh` if any. +- Remove the temporary directory `/tmp/blesh` if any [ Only needed when your system does not automatically clears `/tmp` ]. + +# 2 Basic settings + +Here some of the settings for `~/.blerc` are picked up. +You can find useful settings also in [Q\&A](https://github.com/akinomyoga/ble.sh/wiki/Q&A), +[Recipes](https://github.com/akinomyoga/ble.sh/wiki/Recipes) +and [`contrib` repository](https://github.com/akinomyoga/blesh-contrib). +The complete list of setting items can be found in the template [`blerc`](https://github.com/akinomyoga/ble.sh/blob/master/blerc). +For detailed explanations please refer to [Manual](https://github.com/akinomyoga/ble.sh/wiki). + +## 2.1 Vim mode + +For the vi/vim mode, check [the wiki page](https://github.com/akinomyoga/ble.sh/wiki/Vi-(Vim)-editing-mode). + +## 2.2 Disable features + +One of frequently asked questions is the way to disable a specific feature that `ble.sh` adds. +Here the settings for disabling features are summarized. + +```bash +# Disable syntax highlighting +bleopt highlight_syntax= + +# Disable highlighting based on filenames +bleopt highlight_filename= + +# Disable highlighting based on variable types +bleopt highlight_variable= + +# Disable auto-complete (Note: auto-complete is enabled by default in bash-4.0+) +bleopt complete_auto_complete= +# Tip: you may instead specify the delay of auto-complete in millisecond +bleopt complete_auto_delay=300 + +# Disable auto-complete based on the command history +bleopt complete_auto_history= + +# Disable ambiguous completion +bleopt complete_ambiguous= + +# Disable menu-complete by TAB +bleopt complete_menu_complete= + +# Disable menu filtering (Note: auto-complete is enabled by default in bash-4.0+) +bleopt complete_menu_filter= + +# Disable EOF marker like "[ble: EOF]" +bleopt prompt_eol_mark='' +# Tip: you may instead specify another string: +bleopt prompt_eol_mark='⏎' + +# Disable error exit marker like "[ble: exit %d]" +bleopt exec_errexit_mark= +# Tip: you may instead specify another string: +bleopt exec_errexit_mark=$'\e[91m[error %d]\e[m' + +# Disable elapsed-time marker like "[ble: elapsed 1.203s (CPU 0.4%)]" +bleopt exec_elapsed_mark= +# Tip: you may instead specify another string +bleopt exec_elapsed_mark=$'\e[94m[%ss (%s %%)]\e[m' +# Tip: you may instead change the threshold of showing the mark +bleopt exec_elapsed_enabled='sys+usr>=10*60*1000' # e.g. ten minutes for total CPU usage +``` + +## 2.3 CJK Width + +The option `char_width_mode` controls the width of the Unicode characters with `East_Asian_Width=A` (Ambiguous characters). +Currently four values `emacs`, `west`, `east`, and `auto` are supported. With the value `emacs`, the default width in emacs is used. +With `west` all the ambiguous characters have width 1 (Hankaku). With `east` all the ambiguous characters have width 2 (Zenkaku). +With `auto` the width mode `west` or `east` is automatically chosen based on the terminal behavior. +The default value is `auto`. Appropriate value should be chosen in accordance with your terminal behavior. +For example, the value can be changed to `west` as: + +```bash +bleopt char_width_mode='west' +``` + +## 2.4 Input Encoding + +The option `input_encoding` controls the encoding scheme used in the decode of input. Currently `UTF-8` and `C` are available. With the value `C`, byte values are directly interpreted as character codes. The default value is `UTF-8`. For example, the value can be changed to `C` as: + +```bash +bleopt input_encoding='C' +``` + +## 2.5 Bell + +The options `edit_abell` and `edit_vbell` control the behavior of the edit function `bell`. If `edit_abell` is a non-empty string, audible bell is enabled, i.e. ASCII Control Character `BEL` (0x07) will be written to `stderr`. If `edit_vbell` is a non-empty string, visual bell is enabled. By default, the audible bell is enabled while the visual bell is disabled. + +The option `vbell_default_message` specifies the message shown as the visual bell. The default value is `' Wuff, -- Wuff!! '`. The option `vbell_duration` specifies the display duration of the visual-bell message. The unit is millisecond. The default value is `2000`. + +For example, the visual bell can be enabled as: +``` +bleopt edit_vbell=1 vbell_default_message=' BEL ' vbell_duration=3000 +``` + +For another instance, the audible bell is disabled as: +``` +bleopt edit_abell= +``` + +## 2.6 Highlight Colors + +The colors and attributes used in the syntax highlighting are controlled by `ble-face` function. The following code reproduces the default configuration: +```bash +# highlighting related to editing +ble-face -s region bg=60,fg=white +ble-face -s region_target bg=153,fg=black +ble-face -s region_match bg=55,fg=white +ble-face -s region_insert fg=12,bg=252 +ble-face -s disabled fg=242 +ble-face -s overwrite_mode fg=black,bg=51 +ble-face -s auto_complete fg=238,bg=254 +ble-face -s menu_filter_fixed bold +ble-face -s menu_filter_input fg=16,bg=229 +ble-face -s vbell reverse +ble-face -s vbell_erase bg=252 +ble-face -s vbell_flash fg=green,reverse +ble-face -s prompt_status_line fg=231,bg=240 + +# syntax highlighting +ble-face -s syntax_default none +ble-face -s syntax_command fg=brown +ble-face -s syntax_quoted fg=green +ble-face -s syntax_quotation fg=green,bold +ble-face -s syntax_escape fg=magenta +ble-face -s syntax_expr fg=26 +ble-face -s syntax_error bg=203,fg=231 +ble-face -s syntax_varname fg=202 +ble-face -s syntax_delimiter bold +ble-face -s syntax_param_expansion fg=purple +ble-face -s syntax_history_expansion bg=94,fg=231 +ble-face -s syntax_function_name fg=92,bold +ble-face -s syntax_comment fg=242 +ble-face -s syntax_glob fg=198,bold +ble-face -s syntax_brace fg=37,bold +ble-face -s syntax_tilde fg=navy,bold +ble-face -s syntax_document fg=94 +ble-face -s syntax_document_begin fg=94,bold +ble-face -s command_builtin_dot fg=red,bold +ble-face -s command_builtin fg=red +ble-face -s command_alias fg=teal +ble-face -s command_function fg=92 +ble-face -s command_file fg=green +ble-face -s command_keyword fg=blue +ble-face -s command_jobs fg=red +ble-face -s command_directory fg=26,underline +ble-face -s filename_directory underline,fg=26 +ble-face -s filename_directory_sticky underline,fg=white,bg=26 +ble-face -s filename_link underline,fg=teal +ble-face -s filename_orphan underline,fg=teal,bg=224 +ble-face -s filename_executable underline,fg=green +ble-face -s filename_setuid underline,fg=black,bg=220 +ble-face -s filename_setgid underline,fg=black,bg=191 +ble-face -s filename_other underline +ble-face -s filename_socket underline,fg=cyan,bg=black +ble-face -s filename_pipe underline,fg=lime,bg=black +ble-face -s filename_character underline,fg=white,bg=black +ble-face -s filename_block underline,fg=yellow,bg=black +ble-face -s filename_warning underline,fg=red +ble-face -s filename_url underline,fg=blue +ble-face -s filename_ls_colors underline +ble-face -s varname_array fg=orange,bold +ble-face -s varname_empty fg=31 +ble-face -s varname_export fg=200,bold +ble-face -s varname_expr fg=92,bold +ble-face -s varname_hash fg=70,bold +ble-face -s varname_number fg=64 +ble-face -s varname_readonly fg=200 +ble-face -s varname_transform fg=29,bold +ble-face -s varname_unset fg=124 +ble-face -s argument_option fg=teal +ble-face -s argument_error fg=black,bg=225 + +``` + +The current list of faces can be obtained by the following command (`ble-face` without arguments): +```console +$ ble-face +``` + +The color codes can be checked in output of the function `ble-color-show` (defined in `ble.sh`): +```console +$ ble-color-show +``` + +## 2.7 Key Bindings + +Key bindings can be controlled with the shell function, `ble-bind`. +For example, with the following setting, "Hello, world!" will be inserted on typing C-x h +```bash +ble-bind -f 'C-x h' 'insert-string "Hello, world!"' +``` + +For another example, if you want to invoke a command on typing M-c, you can write as follows: + +```bash +ble-bind -c 'M-c' 'my-command' +``` + +Or, if you want to invoke a edit function (designed for Bash `bind -x`) on typing C-r, you can write as follows: + +```bash +ble-bind -x 'C-r' 'my-edit-function' +``` + +The existing key bindings are shown by the following command: +```console +$ ble-bind -P +``` + +The list of widgets is shown by the following command: +```console +$ ble-bind -L +``` + +If you want to run multiple widgets with a key, you can define your own widget by creating a function of the name `ble/widget/YOUR_WIDGET_NAME` +as illustrated in the following example. +It is highly recommended to prefix the widget name with `YOUR_NAME/`, `my/`, `blerc/`, `dotfiles/`, etc. +in order not to conflict with the names of the existing standard widgets. + +```bash +# Example of calling multiple widgets with the key C-t +function ble/widget/my/example1 { + ble/widget/beginning-of-logical-line + ble/widget/insert-string 'echo $(' + ble/widget/end-of-logical-line + ble/widget/insert-string ')' +} +ble-bind -f C-t my/example1 +``` + +# 3 Tips + +## 3.1 Use multiline mode + +When the command line string contains a newline character, `ble.sh` enters the MULTILINE mode. + +By typing C-v C-j or C-q C-j, you can insert a newline character in the command line string. +In the MULTILINE mode, RET (C-m) causes insertion of a new newline character. +In the MULTILINE mode, the command can be executed by typing C-j. + +When the shell option `shopt -s cmdhist` is set (which is the default), +RET (C-m) inserts a newline if the current command line string is syntactically incomplete. + +## 3.2 Use vim editing mode + +If `set -o vi` is specified in `.bashrc` or `set editing-mode vi` is specified in `.inputrc`, the vim mode is enabled. +For details, please check [the wiki page](https://github.com/akinomyoga/ble.sh/wiki/Vi-(Vim)-editing-mode). + +## 3.3 Use `auto-complete` + +The feature `auto-complete` is available in Bash 4.0 or later. `auto-complete` automatically suggests a possible completion on user input. +The suggested contents can be inserted by typing S-RET +(when the cursor is at the end of the command line, you can also use right, C-f or end to insert the suggestion). +If you want to insert only first word of the suggested contents, you can use M-right or M-f. +If you want to accept the suggestion and immediately run the command, you can use C-RET (if your terminal supports this special key combination). + +## 3.4 Use `sabbrev` (static abbrev expansions) + +By registering words to `sabbrev`, the words can be expanded to predefined strings. +When the cursor is just after a registered word, typing SP causes `sabbrev` expansion. +For example, with the following settings, when you type SP after the string `command L`, the command line will be expanded to `command | less`. + +```bash +# blerc +ble-sabbrev L='| less' +``` + +The sabbrev names that starts from `\` are also recommended since it is unlikely to conflict with the real words that is a part of the executed command. + +```bash +# blerc +ble-sabbrev '\L'='| less' +``` + + +# 4 Contributors + +I received many feedbacks from many people in GitHub Issues/PRs. +I thank all such people for supporting the project. +Among them, the following people have made particularly significant contributions. + +- [`@cmplstofB`](https://github.com/cmplstofB) helped me implementing vim-mode by testing it and giving me a lot of suggestions. +- [`@dylankb`](https://github.com/dylankb) reported many issues for fzf-integration, initialization, etc. +- [`@rux616`](https://github.com/rux616) reported several issues and created a PR for fixing the default path of `.blerc` +- [`@timjrd`](https://github.com/timjrd) suggested and contributed to performance improvements in completion. +- [`@3ximus`](https://github.com/3ximus) reported many issues for a wide variety of problems. -- cgit v1.2.3