From 442da6ec8666e10ec9e6e2aa1621556c6cee3111 Mon Sep 17 00:00:00 2001 From: Martin Dvorak Date: Sat, 25 Aug 2018 09:40:01 +0200 Subject: [PATCH] hh2hstr fixing documentation and manual page #309 --- CONFIGURATION.md | 190 ++++++++++++++++----------------- Changelog | 11 +- INSTALLATION.md | 163 +++++++++++++--------------- README.md | 16 +-- doc/DEVELOPER-DOCUMENTATION.md | 2 +- doc/USER-DOCUMENTATION.md | 37 ++++--- man/hstr.1 | 2 +- src/Makefile.am | 4 +- src/hstr.c | 8 +- 9 files changed, 214 insertions(+), 219 deletions(-) diff --git a/CONFIGURATION.md b/CONFIGURATION.md index 36f24230..f40e0171 100644 --- a/CONFIGURATION.md +++ b/CONFIGURATION.md @@ -2,40 +2,32 @@ Get most of HSTR by configuring it with: ```bash -hh --show-configuration >> ~/.bashrc +hstr --show-configuration >> ~/.bashrc ``` -Run `hh --show-configuration` to determine what will be appended to your Bash profile. Don't forget -to source `~/.bashrc` to apply changes. +Run `hstr --show-configuration` to determine what will be appended to your Bash profile. Don't forget to source `~/.bashrc` to apply changes. --- For more configuration options details please refer to: -* Bind `hh` to a [keyboard shortcut](#binding-hh-to-keyboard-shortcut) +* Bind HSTR to a [keyboard shortcut](#binding-hh-to-keyboard-shortcut) + * [Bash Emacs keymap](#bash-emacs-keymap-default) (default) + * [Bash Vim keymap](#bash-vim-keymap-default) + * [zsh Emacs keymap](#zsh-emacs-keymap-default) (default) +* Create `hh` [alias](Alias) for `hstr` * Get more [colors](#colors) * Choose [default history view](#history-view) * Set [filtering preferences](#filtering) * Configure commands [blacklist](#blacklist) * Disable [confirm on delete](#confirm-on-delete) * Tune [verbosity](#verbosity) -* Bash: - * [Bash Emacs keymap](#bash-emacs-keymap-default) (default) - * [Bash Vim keymap](#bash-vim-keymap-default) +* History settings: * [Bash history settings](#bash-history-settings) -* zsh: - * [zsh Emacs keymap](#zsh-emacs-keymap-default) (default) * [zsh history settings](#zsh-history-settings) Check also configuration [examples](#examples). -## Alias -Make running of `hstr` (e.g. if you don't want to bind it to Ctrl+r) -even easier by defining alias in your `~/.bashrc`: - -```bash -alias hh=hstr -``` ## Binding HSTR to Keyboard Shortcut Bash uses *Emacs* style keyboard shortcuts by default. There is also *Vi* mode. Find out how to bind HSTR to a keyboard shortcut @@ -57,49 +49,105 @@ bind -S ``` +### Bash Emacs Keymap (default) +Bind HSTR to a Bash key e.g. to Ctrlr: + +```bash +bind '"\C-r": "\C-ahstr -- \C-j"' +``` + +or CtrlAltr: + +```bash +bind '"\e\C-r":"\C-ahstr -- \C-j"' +``` + +or CtrlF12: + +```bash +bind '"\e[24;5~":"\C-ahstr -- \C-j"' +``` + +Bind HSTR to Ctrlr only if it is interactive shell: + +```bash +if [[ $- =~ .*i.* ]]; then bind '"\C-r": "\C-a hstr -- \C-j"'; fi +``` + +You can bind also other HSTR commands like `-kill-last-command`: + +```bash +if [[ $- =~ .*i.* ]]; then bind '"\C-xk": "\C-a hstr -k \C-j"'; fi +``` + +### Bash Vim Keymap +Bind HSTR to a Bash key e.g. to Ctrlr: + +```bash +bind '"\C-r": "\e0ihstr -- \C-j"' +``` + +### Zsh Emacs Keymap +Bind HSTR to a `zsh` key e.g. to Ctrlr: + +```bash +bindkey -s "\C-r" "\eqhstr --\n" +``` + + +## Alias +If you want to make running of `hstr` from command line even easier, +then define alias in your `~/.bashrc`: + +```bash +alias hh=hstr +``` + +Don't forget to source `~/.bashrc` to be able to to use `hh` command. ## Colors -Get `hh` in more colors: +Let HSTR to use colors: ```bash -export HH_CONFIG=hicolor +export HSTR_CONFIG=hicolor ``` or ensure black and white mode: ```bash -export HH_CONFIG=monochromatic +export HSTR_CONFIG=monochromatic ``` ## Default History View -Show normal history by default (instead of metrics-based view): +To show normal history by default (instead of metrics-based view, which is default) +use: ```bash -export HH_CONFIG=raw-history-view +export HSTR_CONFIG=raw-history-view ``` -Show favorite commands by default (instead of metrics-based view): +To show favorite commands as default view use: ```bash -export HH_CONFIG=favorites-view +export HSTR_CONFIG=favorites-view ``` ## Filtering To use regular expressions based matching: ```bash -export HH_CONFIG=regexp-matching +export HSTR_CONFIG=regexp-matching ``` To use substring based matching: ```bash -export HH_CONFIG=substring-matching +export HSTR_CONFIG=substring-matching ``` To use keywords (substrings whose order doesn't matter) search matching (default): ```bash -export HH_CONFIG=keywords-matching +export HSTR_CONFIG=keywords-matching ``` --- @@ -107,13 +155,13 @@ export HH_CONFIG=keywords-matching Make search case sensitive (insensitive by default): ```bash -export HH_CONFIG=case-sensitive +export HSTR_CONFIG=case-sensitive ``` Keep duplicates in `raw-history-view` (duplicate commands are discarded by default): ```bash -export HH_CONFIG=duplicates +export HSTR_CONFIG=duplicates ``` ## Static favorites @@ -122,24 +170,24 @@ by default. If you want to disable this behavior and make favorite commands list static, then use the following configuration: ```bash -export HH_CONFIG=static-favorites +export HSTR_CONFIG=static-favorites ``` ## Skip favorites comments If you don't want to show lines starting with `#` (comments) among favorites, then use the following configuration: ```bash -export HH_CONFIG=skip-favorites-comments +export HSTR_CONFIG=skip-favorites-comments ``` ## Blacklist Skip commands when processing history i.e. make sure that these commands will *not* be shown in any view: ```bash -export HH_CONFIG=blacklist +export HSTR_CONFIG=blacklist ``` -Commands to be stored in `~/.hh_blacklist` file with trailing empty line. For instance: +Commands to be stored in `~/.hstr_blacklist` file with trailing empty line. For instance: ``` cd @@ -152,87 +200,48 @@ ll Do not prompt for confirmation when deleting history items: ```bash -export HH_CONFIG=no-confirm +export HSTR_CONFIG=no-confirm ``` ## Verbosity Show a message when deleting the last command from history: ```bash -export HH_CONFIG=verbose-kill +export HSTR_CONFIG=verbose-kill ``` Show warnings: ```bash -export HH_CONFIG=warning +export HSTR_CONFIG=warning ``` Show debug messages: ```bash -export HH_CONFIG=debug -``` - -## Bash Emacs Keymap (default) -Bind `hh` to a Bash key e.g. to Ctrlr: - -```bash -bind '"\C-r": "\C-ahh -- \C-j"' -``` - -or CtrlAltr: - -```bash -bind '"\e\C-r":"\C-ahh -- \C-j"' -``` - -or CtrlF12: - -```bash -bind '"\e[24;5~":"\C-ahh -- \C-j"' -``` - -Bind `hh` to Ctrlr only if it is interactive shell: - -```bash -if [[ $- =~ .*i.* ]]; then bind '"\C-r": "\C-a hh -- \C-j"'; fi -``` - -You can bind also other `hh` commands like `-kill-last-command`: - -```bash -if [[ $- =~ .*i.* ]]; then bind '"\C-xk": "\C-a hh -k \C-j"'; fi -``` - -## Bash Vim Keymap -Bind `hh` to a Bash key e.g. to Ctrlr: - -```bash -bind '"\C-r": "\e0ihh -- \C-j"' +export HSTR_CONFIG=debug ``` - ## Bash History Settings -Use the following BASH settings to get most out of `hh`. +Use the following Bash settings to get most out of HSTR. -Increase the size of history maintained by BASH - variables defined below increase the -number of history items and history file size (default value is 500): +Increase the size of history maintained by BASH - variables defined below +increase the number of history items and history file size (default value is 500): ```bash export HISTFILESIZE=10000 export HISTSIZE=${HISTFILESIZE} ``` -Ensure syncing (flushing and reloading) of `.bash_history` with in-memory - history: +Ensure syncing (flushing and reloading) of `.bash_history` with +in-memory history: ```bash export PROMPT_COMMAND="history -a; history -n; ${PROMPT_COMMAND}" ``` -Force appending of in-memory history to `.bash_history` - (instead of overwriting): +Force appending of in-memory history to `.bash_history` (instead +of overwriting): ```bash shopt -s histappend @@ -245,15 +254,6 @@ export HISTCONTROL=ignorespace ``` Suitable for a sensitive information like passwords. - -## Zsh Emacs Keymap (default) -Bind `hh` to a `zsh` key e.g. to Ctrlr: - -```bash -bindkey -s "\C-r" "\eqhh --\n" -``` - - ## Zsh History Settings If you use `zsh`, set `HISTFILE` environment variable in `~/.zshrc`: @@ -266,17 +266,17 @@ export HISTFILE=~/.zsh_history More colors with case sensitive search of history: ```bash -export HH_CONFIG=hicolor,case-sensitive +export HSTR<_CONFIG=hicolor,case-sensitive ``` -Favorite commands view in black and white: +Favorite commands view in black and white with prompt at the bottom of the screen: ```bash -export HH_CONFIG=favorites,monochromatic +export HSTR_CONFIG=favorites-view,prompt-bottom ``` Keywords based search in colors with debug mode verbosity: ```bash -export HH_CONFIG=keywords,hicolor,debug +export HSTR_CONFIG=keywords-matching,hicolor,debug ``` diff --git a/Changelog b/Changelog index a7d5c90e..1eb67fbb 100644 --- a/Changelog +++ b/Changelog @@ -1,11 +1,12 @@ 2018-08-28 Martin Dvorak * Released v2.0.0 - Major release which resolves confusing hstr/hh ambuiguity by choosing - hstr to be the only name used - hh becomes just a shell alias. It also introduces backward - incompatible changes: all HH_ starting environment variables are changed to HSTR_, similarly - configuration files and distributions package names. Also identifiers used in HSTR_CONFIGURATION - were changed (please check man page and update your 1.x.x configuration). - Additional improvements: all memory leaks fixed, Bash autocomplete added. + hstr to be the only name used. hh becomes just a shell alias. Therefore this release + introduces backward incompatible changes: all HH_ starting environment variables are + changed to HSTR_, similarly configuration files and distributions package names. Also + identifiers used in HSTR_CONFIG were changed (please check man page and update + your 1.x.x configuration). Additional improvements: all memory leaks fixed, Bash + autocomplete added. 2018-08-13 Martin Dvorak diff --git a/INSTALLATION.md b/INSTALLATION.md index a1e222f1..2f6e94dc 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -31,10 +31,10 @@ Tarball: Install HSTR using a package. ## Ubuntu -Install `hh` on Ubuntu using one-liner: +Install HSTR on Ubuntu using one-liner: ```bash -sudo add-apt-repository ppa:ultradvorka/ppa && sudo apt-get update && sudo apt-get install hh && hh --show-configuration >> ~/.bashrc +sudo add-apt-repository ppa:ultradvorka/ppa && sudo apt-get update && sudo apt-get install hstr && hstr --show-configuration >> ~/.bashrc && . ~/.bashrc ``` ... or step by step: @@ -42,37 +42,14 @@ sudo add-apt-repository ppa:ultradvorka/ppa && sudo apt-get update && sudo apt-g ```bash sudo add-apt-repository ppa:ultradvorka/ppa sudo apt-get update -sudo apt-get install hh +sudo apt-get install hstr ``` -[Configure](CONFIGURATION.md) `hh` and check its [man page](README.md#documentation). - -## Fedora/RHEL/Centos -Install `hh` on Fedora, RHEL or CentOS: - -```bash -sudo dnf install hstr -y -``` -... or: - -```bash -sudo yum install hstr -y -``` - -[Configure](CONFIGURATION.md) `hh` and check its [man page](README.md#documentation). - ---- - -If you want to make sure you have the latest version, then download `.rpm` archive from -[GitHub releases](https://github.com/dvorka/hstr/releases) and install it: - -```bash -sudo dnf install ./hstr-..-2.x86_64.rpm -y -``` +[Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Debian/Mint -Install `hh` from PPA. Add [my PPA](http://www.mindforger.com/debian), -trust [GPG key](http://www.mindforger.com/gpgpubkey.txt) and install `hh`: +Install HSTR from PPA. Add [my PPA](http://www.mindforger.com/debian), +trust [GPG key](http://www.mindforger.com/gpgpubkey.txt) and install HSTR: ```bash # add PPA to APT sources: @@ -88,7 +65,7 @@ sudo apt update sudo apt install hstr ``` -[Configure](CONFIGURATION.md) `hh` and check its [man page](README.md#documentation). +[Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). --- @@ -100,8 +77,31 @@ dpkg -i hstr_-.._1-amd64.deb ``` +## Fedora/RHEL/Centos +Install HSTR on Fedora, RHEL or CentOS: + +```bash +sudo dnf install hstr -y +``` +... or: + +```bash +sudo yum install hstr -y +``` + +[Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). + +--- + +If you want to make sure you have the latest version, then download `.rpm` archive from +[GitHub releases](https://github.com/dvorka/hstr/releases) and install it: + +```bash +sudo dnf install ./hstr-..-2.x86_64.rpm -y +``` + ## openSUSE -To install `hh` on openSUSE Leap 42.1 run the following commands as root: +To install HSTR on openSUSE Leap 42.1 run the following commands as root: ```bash zypper addrepo http://download.opensuse.org/repositories/home:tuw-e184/openSUSE_Leap_42.1/home:tuw-e184.repo @@ -109,16 +109,16 @@ zypper refresh zypper install hstr ``` -[Configure](CONFIGURATION.md) `hh` and check its [man page](README.md#documentation). +[Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Gentoo -To install `hh` on Gentoo run (HSTR has been added to [Portage](https://bugs.gentoo.org/show_bug.cgi?id=527122)): +To install HSTR on Gentoo run (HSTR has been added to [Portage](https://bugs.gentoo.org/show_bug.cgi?id=527122)): ```bash emerge app-shells/hstr ``` -[Configure](CONFIGURATION.md) `hh` and check its [man page](README.md#documentation). +[Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Arch Linux To install HSTR on Arch Linux download latest distribution from [GitHub releases](https://github.com/dvorka/hstr/releases). @@ -127,18 +127,18 @@ Use [PKGBUILD](https://wiki.archlinux.org/index.php/PKGBUILD) in the root of the https://aur.archlinux.org/packages/hstr-git/ -Install `hh`. +Install HSTR. -[Configure](CONFIGURATION.md) `hh` and check its [man page](README.md#documentation). +[Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## macOS -Install `hh` on macOS using [Homebrew](http://brew.sh/) ([formula](https://formulae.brew.sh/formula/hh)): +Install HSTR on macOS using [Homebrew](http://brew.sh/) ([formula](https://formulae.brew.sh/formula/hh)): ```bash brew install hh ``` -[Configure](CONFIGURATION.md) `hh` and check its [man page](README.md#documentation). +[Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). # Build Build HSTR from source code. @@ -156,22 +156,16 @@ Create build files using: cd ./build/tarball && ./tarball-automake.sh && cd ../.. ``` -Build and install `hh` using: +Build and install HSTR using: ```bash ./configure && make && make install ``` -Run HSTR: - -```bash -hh -``` - -[Configure](CONFIGURATION.md) `hh` and check its [man page](README.md#documentation). +[Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Build snap -To build [snap](https://snapcraft.io/) for 'hh' first clone Git repository: +To build [snap](https://snapcraft.io/) for HSTR first clone Git repository: ```bash git clone https://github.com/dvorka/hstr.git @@ -191,10 +185,10 @@ $ snapcraft ... ``` -Find `hh_0+git..._amd64.snap` in the current directory. +Find `hstr_0+git..._amd64.snap` in the current directory. ## Build on Ubuntu -To build `hh` on Ubuntu clone Git repository: +To build HSTR on Ubuntu clone Git repository: ```bash git clone https://github.com/dvorka/hstr.git @@ -212,22 +206,16 @@ Create build files using: cd ./build/tarball && ./tarball-automake.sh && cd ../.. ``` -Build and install `hh` using: +Build and install HSTR using: ```bash ./configure && make && make install ``` -Run HSTR: - -```bash -hh -``` - -[Configure](CONFIGURATION.md) `hh` and check its [man page](README.md#documentation). +[Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Build on Debian -To build `hh` on Debian clone Git repository: +To build HSTR on Debian clone Git repository: ```bash git clone https://github.com/dvorka/hstr.git @@ -245,22 +233,16 @@ Create build files using: cd ./build/tarball && ./tarball-automake.sh && cd ../.. ``` -Build and install `hh` using: +Build and install HSTR using: ```bash ./configure && make && make install ``` -Run HSTR: - -```bash -hh -``` - -[Configure](CONFIGURATION.md) `hh` and check its [man page](README.md#documentation). +[Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Build on Fedora -To build `hh` on Fedora clone Git repository: +To build HSTR on Fedora clone Git repository: ```bash git clone https://github.com/dvorka/hstr.git @@ -278,22 +260,16 @@ Create build files using: cd ./build/tarball && ./tarball-automake.sh && cd ../.. ``` -Build and install `hh` using: +Build and install HSTR using: ```bash ./configure && make && make install ``` -Run HSTR: - -```bash -hh -``` - -[Configure](CONFIGURATION.md) `hh` and check its [man page](README.md#documentation). +[Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Build on WSL -To build `hstr` on [Windows Subsystem for Linux (WSL)](https://msdn.microsoft.com/en-us/commandline/wsl/about) clone Git repository: +To build HSTR on [Windows Subsystem for Linux (WSL)](https://msdn.microsoft.com/en-us/commandline/wsl/about) clone Git repository: ```bash git clone https://github.com/dvorka/hstr.git @@ -317,7 +293,7 @@ Build and install `hstr` using: ./configure && make && make install ``` -It's **important** to finish installation by configuration of `hstr` binding +It's **important** to finish installation by configuration of HSTR binding which ensures propagation of chosen command to the prompt: ```bash @@ -325,13 +301,12 @@ hstr --show-configuration >> ~/.bashrc . ~/.bashrc ``` -Make sure to **run** `hstr` using Ctrlr - otherwise commands will not appear in prompt. - -[Configure](CONFIGURATION.md) `hh` and check its [man page](README.md#documentation). +Make sure to **run** HSTR using Ctrlr (or `hstrwsl`) - otherwise commands will not appear in prompt. +[Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Build on Cygwin -To build `hh` on [Cygwin](https://www.cygwin.com) clone Git repository: +To build HSTR on [Cygwin](https://www.cygwin.com) clone Git repository: ```bash git clone https://github.com/dvorka/hstr.git @@ -343,19 +318,29 @@ Create build files using: cd ./build/tarball && ./tarball-automake.sh && cd ../.. ``` -Build and install `hh` using: +Build and install HSTR using: ```bash ./configure && make && make install ``` -[Configure](CONFIGURATION.md) `hh` and check its [man page](README.md#documentation). +It's **important** to finish installation by configuration of HSTR binding +which ensures propagation of chosen command to the prompt: + +```bash +hstr --show-configuration >> ~/.bashrc +. ~/.bashrc +``` + +Make sure to **run** HSTR using Ctrlr (or `hstrcygwin`) - otherwise commands will not appear in prompt. + +[Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Build on macOS HSTR can be built on macOS either using [MacPorts](https://www.macports.org/) or [Homebrew](https://brew.sh/). --- -To build `hh` using [MacPorts](https://www.macports.org/) install `readline` and `ncurses`: +To build HSTR using [MacPorts](https://www.macports.org/) install `readline` and `ncurses`: ```bash port install readline @@ -370,11 +355,11 @@ autoreconf -fvi make ``` -[Configure](CONFIGURATION.md) `hh` and check its [man page](README.md#documentation). +[Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). --- -To build `hh` using [Homebrew](https://brew.sh/): +To build HSTR using [Homebrew](https://brew.sh/): ```bash autoreconf -fvi @@ -382,17 +367,17 @@ autoreconf -fvi make ``` -[Configure](CONFIGURATION.md) `hh` and check its [man page](README.md#documentation). +[Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). # Tarball Download and install HSTR tarball. ## Build and Install Tarball Download latest tarball from [GitHub releases](https://github.com/dvorka/hstr/releases) section. -Expand the archive and install `hh` using: +Expand the archive and install HSTR using: ```bash ./configure && make && make install ``` -[Configure](CONFIGURATION.md) `hh` and check its [man page](README.md#documentation). +[Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). diff --git a/README.md b/README.md index a65ff338..f5212684 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,8 @@ from the history. It aims to make completion **easier** and more **efficient** than Ctrlr. HSTR can also **manage** your command history (for instance you can remove -commands that are obsolete or contain a sensitive information) or **bookmark** -your favorite commands. +commands that are obsolete or contain a piece of sensitive information) +or **bookmark** your favorite commands. Check [video](http://www.youtube.com/watch?v=sPF29NyXe2U) tutorial. @@ -53,6 +53,7 @@ Build: * [build on Fedora](INSTALLATION.md#build-on-fedora) * [build on Windows Subsystem for Linux (WSL)](INSTALLATION.md#build-on-wsl) * [build on Cygwin](INSTALLATION.md#build-on-cygwin) +* [build on macOS](INSTALLATION.md#build-on-macos) Tarball: @@ -60,21 +61,22 @@ Tarball: ## Configuration Configure HSTR just by running: + ```bash -hh --show-configuration >> ~/.bashrc +hstr --show-configuration >> ~/.bashrc ``` -For detailed `hh` configuration documentation please refer to [Configuration](CONFIGURATION.md). +For detailed HSTR configuration documentation please refer to [Configuration](CONFIGURATION.md). ## Documentation -Check `hh` man page: +Check man page: ```bash -man hh +man hstr ``` ## In the News -Read about `hh` in [LinuxMagazine](http://www.linux-magazine.com/Issues/2014/164/Bash-History-on-Steroids), [UbuntuGeek](http://www.ubuntugeek.com/tag/hstr-bash-history), [DebianAdmin](http://www.debianadmin.com/hstr-easily-view-navigate-search-and-use-your-command-history-with-shell-history.html), [Tuxdiary](https://tuxdiary.com/2015/02/17/hstr/), [Softpedia](http://linux.softpedia.com/get/Terminals/BASH-Command-History-Completion-103155.shtml) or [OSTechNix](https://www.ostechnix.com/hstr-easily-view-navigate-search-manage-commandline-history/). +Read about HSTR in [LinuxMagazine](http://www.linux-magazine.com/Issues/2014/164/Bash-History-on-Steroids), [UbuntuGeek](http://www.ubuntugeek.com/tag/hstr-bash-history), [DebianAdmin](http://www.debianadmin.com/hstr-easily-view-navigate-search-and-use-your-command-history-with-shell-history.html), [Tuxdiary](https://tuxdiary.com/2015/02/17/hstr/), [Softpedia](http://linux.softpedia.com/get/Terminals/BASH-Command-History-Completion-103155.shtml) and [OSTechNix](https://www.ostechnix.com/hstr-easily-view-navigate-search-manage-commandline-history/). ## Bugs diff --git a/doc/DEVELOPER-DOCUMENTATION.md b/doc/DEVELOPER-DOCUMENTATION.md index 82dc0ed8..a759234f 100644 --- a/doc/DEVELOPER-DOCUMENTATION.md +++ b/doc/DEVELOPER-DOCUMENTATION.md @@ -7,7 +7,7 @@ Developer Documentation # Debugging Remote debug - gdb server (program is running) + Eclipse debug (debugger w/ code) -1. `cd ~/p/hstr/github/hstr/Debug && gdbserver :9999 ./hh` +1. `cd ~/p/hstr/github/hstr/Debug && gdbserver :9999 ./hstr` 1. Eclipse/Debug Configuration/Using GDB Manual Remote Debugger launching|Debugger tab/Connection port: 9999 # Unit tests diff --git a/doc/USER-DOCUMENTATION.md b/doc/USER-DOCUMENTATION.md index b8090b81..982c71b8 100644 --- a/doc/USER-DOCUMENTATION.md +++ b/doc/USER-DOCUMENTATION.md @@ -19,15 +19,21 @@ Table of contents: # Features HSTR is typically started by pressing Ctrlr after -you configure it for this shorcut for your shell. However, +you configure it for this shorcut in your shell. However, you can run it as a normal program just by typing: +```bash +hstr +``` + +... or use simpler command configured using [alias](../CONFIGURATION.md#alias): + ```bash hh ``` It opens a page with a history view (ranking view is default). -Alternatively you can run `hh` in non-interactive mode - +Alternatively you can run HSTR in non-interactive mode - commands are just listed on standard output based on history view: @@ -56,7 +62,7 @@ move around it with `UP` and `DOWN` arrow keys. Selected history items is highlighted. Once you are done with your choice: * press `ENTER` to choose the command and execute it -* or press `TAB` or `RIGHT` arrow key to choose the command and edit it on command line after exiting `hh` +* or press `TAB` or `RIGHT` arrow key to choose the command and edit it on command line after exiting HSTR * or press `LEFT` arrow key to choose the command and open it in editor (Bash `fc` i.e. fix command) @@ -69,7 +75,7 @@ ranking or raw history view by pressing Ctrlf. You can check your favorite commands by choosing favorite view - rotate views using Ctrl/ or start -`hh` by adding `favorites` to `HH_CONFIG` environment +HSTR by adding `favorites-view` to `HSTR_CONFIG` environment property. A favorite command can be choosen just by pressing `ENTER` when on command in favorite view. Last chosen favorite commands appears as the first @@ -78,7 +84,7 @@ You can delete a favorite command with `DEL` key. Tips: -* Favorite commands are stored in `~/.hh_favorites` +* Favorite commands are stored in `~/.hstr_favorites` * Suffix your favorite commands with comments describing their purpose. For example: @@ -107,13 +113,13 @@ pwd cd cd .. ls -hh +hstr mc ``` Tips: -* Blacklist of commands is stored in `~/.hh_blacklist` +* Blacklist of commands is stored in `~/.hstr_blacklist` If the file doesn't exist, you may create it and complete it with your own blacklist. * You can skip any command from history just by @@ -124,11 +130,11 @@ Tips: ## Kill the Last Command -Using `hh` you can easily delete the last command from history +Using HSTR you can easily delete the last command from history e.g. when you make a typo or write something sensitive: ``` -hh --kill-last-command +hstr --kill-last-command ``` See configuration section for how to bind this functionality to @@ -136,14 +142,15 @@ a key - bound to Ctrlx k by default. # Examples -Get more colors when running `hh`: +Get more colors when running HSTR: ```bash -export HH_CONFIG=hicolor +export HSTR_CONFIG=hicolor ``` -Start `hh` in configured view and filter out history items -containing 'git': +Start HSTR in configured view and filter out history items +containing 'git' (make sure `hh` is defined using +[alias](../CONFIGURATION.md#alias)): ```bash hh git @@ -161,8 +168,8 @@ Append default `hh` configuration to your Bash profile: hh --show-configuration >> ~/.bashrc ``` -Check `hh` man page: +Check HSTR man page: ```bash -man hh +man hstr ``` diff --git a/man/hstr.1 b/man/hstr.1 index f867a44b..460e4ccf 100644 --- a/man/hstr.1 +++ b/man/hstr.1 @@ -151,7 +151,7 @@ Configuration options: Show debug information. Example: - \fBexport HSTR_CONFIG=hicolor,regexp,rawhistory\fR + \fBexport HSTR_CONFIG=hicolor,regexp-matching,raw-history-view\fR .TP \fBHSTR_PROMPT\fR diff --git a/src/Makefile.am b/src/Makefile.am index 8f4fca07..7640d215 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -34,7 +34,7 @@ hstr_SOURCES = \ main.c # create hstr > hh hard link on installation -#install-exec-hook: -# ln $(DESTDIR)$(bindir)/hstr$(EXEEXT) $(DESTDIR)$(bindir)/hh$(EXEEXT) +install-exec-hook: + ln $(DESTDIR)$(bindir)/hstr$(EXEEXT) $(DESTDIR)$(bindir)/hh$(EXEEXT) hstr_LDADD = $(NCURSES_LIBS) diff --git a/src/hstr.c b/src/hstr.c index 6ff3a058..d7be9485 100644 --- a/src/hstr.c +++ b/src/hstr.c @@ -179,21 +179,21 @@ static const char* INSTALL_BASH_STRING= // Script hints: // {...} is inline group ~ lambda function whose vars are visible to the other commands // V=$(c) executes commands and stores it to var V - "\nfunction hstr_winwsl {" + "\nfunction hstrwsl {" "\n offset=${READLINE_POINT}" "\n READLINE_POINT=0" "\n { READLINE_LINE=$(&1 1>&$hstrout); } {hstrout}>&1" "\n READLINE_POINT=${#READLINE_LINE}" "\n}" - "\nif [[ $- =~ .*i.* ]]; then bind -x '\"\\C-r\": \"hstr_winwsl\"'; fi" + "\nif [[ $- =~ .*i.* ]]; then bind -x '\"\\C-r\": \"hstrwsl\"'; fi" #elif defined(__CYGWIN__) - "\nfunction hstr_cygwin {" + "\nfunction hstrcygwin {" "\n offset=${READLINE_POINT}" "\n READLINE_POINT=0" "\n { READLINE_LINE=$(&1 1>&$hstrout); } {hstrout}>&1" "\n READLINE_POINT=${#READLINE_LINE}" "\n}" - "\nif [[ $- =~ .*i.* ]]; then bind -x '\"\\C-r\": \"hstr_cygwin\"'; fi" + "\nif [[ $- =~ .*i.* ]]; then bind -x '\"\\C-r\": \"hstrcygwin\"'; fi" #else "\nif [[ $- =~ .*i.* ]]; then bind '\"\\C-r\": \"\\C-a hstr -- \\C-j\"'; fi" "\n# if this is interactive shell, then bind 'kill last command' to Ctrl-x k"