Add doas config stuff

This commit is contained in:
Tobias Reisinger 2021-01-31 14:42:35 +01:00
parent b44c41f339
commit 3d17d60bc9
5 changed files with 97 additions and 6 deletions
.config/zsh/custom/plugins/doas

View file

@ -0,0 +1,47 @@
# doas-zsh-plugin
Easily prefix your current or previous commands with `doas` by pressing <kbd>esc</kbd> twice
To use it, add the following to your zshrc:
```console
plugins=(doas)
```
## Usage
### Current typed commands
Say you have typed a long command and forgot to add `doas` in front:
```console
$ apt-get install build-essential
```
By pressing the <kbd>esc</kbd> key twice, you will have the same command with `doas` prefixed without typing:
```console
$ doas apt-get install build-essential
```
### Previous executed commands
Say you want to delete a system file and denied:
```console
$ rm some-system-file.txt
-su: some-system-file.txt: Permission denied
$
```
By pressing the <kbd>esc</kbd> key twice, you will have the same command with `doas` prefixed without typing:
```console
$ rm some-system-file.txt
-su: some-system-file.txt: Permission denied
$ doas rm some-system-file.txt
Password:
$
```
Plugin inspired by sudo plugin by [Dongweiming](https://github.com/dongweiming)

View file

@ -0,0 +1,32 @@
# ------------------------------------------------------------------------------
# Description
# -----------
#
# doas will be inserted before the command
#
# ------------------------------------------------------------------------------
# Authors
# -------
#
# * Anatoly <akopyl@radner.ru>
#
# ------------------------------------------------------------------------------
doas-command-line() {
[[ -z $BUFFER ]] && LBUFFER="$(fc -ln -1)"
if [[ $BUFFER == doas\ * ]]; then
if [[ ${#LBUFFER} -le 4 ]]; then
RBUFFER="${BUFFER#doas }"
LBUFFER=""
else
LBUFFER="${LBUFFER#doas }"
fi
else
LBUFFER="doas $LBUFFER"
fi
}
zle -N doas-command-line
# Defined shortcut keys: [Esc] [Esc]
bindkey -M emacs '\e\e' doas-command-line
bindkey -M vicmd '\e\e' doas-command-line
bindkey -M viins '\e\e' doas-command-line