1
0
mirror of https://github.com/chylex/dotfiles.git synced 2025-09-15 12:32:09 +02:00

Compare commits

..

127 Commits

Author SHA1 Message Date
d76b82721d Update .vimrc (disable bell sound) 2025-09-10 14:04:01 +02:00
580a47aa9b Update .ideavimrc (work around broken shortcuts in Rider) 2025-08-18 23:38:28 +02:00
946f464aca Update .vimrc (use Ctrl-S to save) 2025-08-17 10:01:24 +02:00
1e5c7a752e Update .vimrc (fix pasting via Ctrl-V in insert mode) 2025-08-17 09:51:13 +02:00
c1fac762be Update .ideavimrc (add bindings to move statement/element) 2025-08-15 18:45:41 +02:00
8cd0b37833 Update .ideavimrc (add bindings to extend/shrink selection) 2025-08-15 02:34:16 +02:00
5cbaf5587d Update .vimrc & .ideavimrc (indent current line with just '<' or '>') 2025-08-06 23:47:48 +02:00
7b5bbf7bb7 Update .vimrc & .ideavimrc (fix 'ů' mapping with matchit) 2025-07-28 02:01:32 +02:00
6d1840a48c Update .vimrc (always show leading and trailing spaces) 2025-07-22 13:34:25 +02:00
4a77b0588b Update .vimrc & .ideavimrc (move some commands closer on Czech keyboard layout) 2025-07-20 12:41:39 +02:00
a9bfe13277 Update .vimrc (fix Ctrl-A in visual mode) 2025-07-20 09:14:12 +02:00
be2bdafe78 Update .vimrc (selection & clipboard) 2025-07-08 16:25:26 +02:00
cda970bfc2 Update .vimrc (GUI configuration & consistency) 2025-07-08 16:25:26 +02:00
80e5b074c9 Update .ideavimrc (disable binding to negate code completion in Rider) 2025-06-17 07:37:53 +02:00
60cb335c9a Update .ideavimrc (add binding to negate code completion) 2025-06-11 19:27:53 +02:00
78866848be Update .vimrc & .ideavimrc (change bindings to create new lines) 2025-06-11 04:06:11 +02:00
f69bb44bfa Update .ideavimrc (remove custom increment/decrement binding) 2025-05-28 21:34:14 +02:00
6c4c99a98d Update .vimrc & .ideavimrc (use 'g' for navigating unmatched parentheses/brackets) 2025-05-28 21:32:04 +02:00
0023b10571 Update .ideavimrc (use Alt-J/K to navigate code completion popups) 2025-05-18 21:26:28 +02:00
4fa0da63e8 Update .vimrc & .ideavimrc (split line) 2025-05-16 16:59:12 +02:00
eb54e7d636 Update .vimrc & .ideavimrc (bind gj/gk to j/k) 2025-05-16 16:59:12 +02:00
2a8dbc57ec Update .ideavimrc (set handler for arrow shortcuts) 2025-04-25 12:58:11 +02:00
713fb10dab Update .ideavimrc (simplify navigating between methods) 2025-04-02 13:21:33 +02:00
ca8bc186b2 Update .bashrc (handle ANSI color codes in less/zless) 2025-02-20 07:03:05 +01:00
534ea4a4f1 Update Firefox userChrome.css 2024-11-22 08:04:46 +01:00
2aebc2deeb Update .vimrc and .ideavimrc (add bindings to create lines in normal mode) 2024-10-18 00:06:27 +02:00
c83891317f Update .ideavimrc (make more actions usable in visual mode) 2024-10-12 08:50:38 +02:00
5ce16f984f Update .ideavimrc (allow jumping to source even in visual mode) 2024-09-19 06:34:36 +02:00
83d12be425 Update .ideavimrc (enable search highlights) 2024-09-08 18:21:13 +02:00
c0c7eccc1d Update .ideavimrc (fix camel hump navigation) 2024-08-24 15:03:48 +02:00
abc7112e75 Update .ideavimrc (fix camel hump navigation) 2024-08-14 11:56:04 +02:00
21e38d0d08 Update .ideavimrc (disable ideaput) 2024-08-11 10:58:53 +02:00
a43aae61e8 Update .vimrc (fix searching special characters with n/N & make search independent of case sensitivity setting) 2024-07-14 14:57:13 +02:00
c9c9c0223e Update .vimrc (improve t/T behavior with n/N) 2024-07-08 04:56:54 +02:00
a3c4fe7259 Update .vimrc and .ideavimrc (fix inconsistency in capitalization) 2024-07-07 07:14:48 +02:00
67c485da65 Update .ideavimrc (add mapping for Compare with Clipboard) 2024-07-07 04:07:01 +02:00
62edd5222d Update .ideavimrc (remove bindings to Extend/Shrink selection) 2024-07-06 18:05:57 +02:00
1aa9bde933 Update .vimrc (update search register when using f/t) 2024-07-06 17:56:44 +02:00
0bcdaaa077 Update .vimrc (clear search highlights with Escape) 2024-07-06 16:01:44 +02:00
9fa73b1ba8 Update .ideavimrc (disable NERDTree) 2024-05-07 02:09:05 +02:00
e7dca24993 Update .ideavimrc (add call hierarchy support for Rider) 2024-03-30 13:35:57 +01:00
ac9b1d4248 Update .ideavimrc (use ShowHoverInfo instead of QuickJavaDoc) 2024-02-18 20:05:25 +01:00
41840c7b33 Update .ideavimrc (map +/- in visual mode to Extend/Shrink selection) 2024-02-18 18:46:48 +01:00
939134dc49 Update .ideavimrc (remap NERDTree bindings) 2024-02-15 07:55:27 +01:00
1bc97f78b6 Update .tmux.conf (add Ctrl-V / Alt-V to toggle block selection) 2024-01-25 15:08:20 +01:00
6681099e47 Update .ideavimrc (remove custom G bindings) 2024-01-24 02:15:23 +01:00
0903e926bb Update .vimrc & .ideavimrc (swap ů/§ and add matchit mapping) 2024-01-24 02:05:38 +01:00
14aa43ede4 Update .vimrc (fix Alt bindings and bring over several Alt mappings from .ideavimrc) 2023-12-05 05:01:08 +01:00
cab52d34b1 Update .ideavimrc (use Alt-V to enter visual block mode) 2023-12-05 04:57:08 +01:00
4203b6e583 Update .ideavimrc (fix comment breaking "gf" mapping) 2023-11-21 09:41:44 +01:00
af2f87c518 Update .vimrc (enable modeline) 2023-11-20 05:13:51 +01:00
daea01656e Update .ideavimrc (update mappings for type navigation & add mapping for String Manipulation) 2023-11-18 12:22:43 +01:00
35ba420d83 Update .bashrc (open multiple files in tabs in vim) 2023-11-18 07:13:22 +01:00
f66f0990ff Update .ideavimrc (remove bindings for navigating tabs) 2023-11-18 07:13:22 +01:00
96e832c9cc Update .ideavimrc (tweak mappings for tab management) 2023-11-18 07:13:22 +01:00
7ca80f443f Update .ideavimrc (add AceJump binding to jump to declaration) 2023-11-17 13:08:39 +01:00
19d10e7428 Update .ideavimrc (migrate from :raction to <Action>) 2023-11-17 13:08:19 +01:00
e0b0194256 Update .ideavimrc (use Ctrl instead of Alt for navigating editor tabs) 2023-11-17 07:18:29 +01:00
b739008bc5 Update .ideavimrc (fix action to "Jump to Source" using a custom IdeaVIM version) 2023-11-15 01:23:23 +01:00
3c66f4c85b Update .ideavimrc (update tab management) 2023-11-14 22:56:25 +01:00
bd5fb52aa7 Update .ideavimrc (add missing handler) 2023-11-14 21:21:42 +01:00
8a7a591d68 Update .ideavimrc (restore square bracket commands & re-add bindings for next/previous method using IDEA action) 2023-11-14 13:50:51 +01:00
7ebb930f0b Add paragraph-motion plugin for vim 2023-11-14 13:37:21 +01:00
61f69a7774 Update .ideavimrc (navigate paragraphs at indentation level) 2023-11-14 13:36:49 +01:00
6c62422353 Update .ideavimrc (remove vim-based bindings to toggle comments) 2023-11-14 13:36:49 +01:00
1d9efca953 Update .ideavimrc (add actions for local/git history) 2023-11-14 13:36:43 +01:00
6ac6c169fa Update .ideavimrc (rebind tab management) 2023-11-09 21:25:21 +01:00
dc68b2d2a0 Update .ideavimrc (migrate from :action to Action) 2023-11-09 21:06:10 +01:00
8dcd87f989 Update .ideavimrc (add new custom g/m bindings) 2023-11-09 20:35:30 +01:00
d1e531074c Update .ideavimrc (add binding to add/remove comment) 2023-11-09 20:03:17 +01:00
50312ccf3b Update .ideavimrc (replace custom binding for curly brackets) 2023-11-09 14:20:25 +01:00
28098843d2 Update .ideavimrc (improve shortcut for previous/next method) 2023-11-09 14:19:52 +01:00
01e92b8cb2 Update .ideavimrc (make increment/decrement rebinds work in other modes) 2023-11-09 13:38:01 +01:00
ea590d93c1 Update .vimrc & .ideavimrc (enter visual block mode by pressing v in visual mode) 2023-11-08 02:49:24 +01:00
3286d65e8d Update .vimrc & .ideavimrc (reduce mappings interfering with select mode) 2023-11-08 02:49:24 +01:00
f700848658 Update .vimrc & .ideavimrc (use Space<char> for easymotion) 2023-11-08 02:49:24 +01:00
adcaeb0403 Update .vimrc & .ideavimrc (use native way of putting without overwriting register) 2023-11-08 01:51:08 +01:00
54284be64b Update .vimrc & .ideavimrc (fix Alt-B mapping in visual mode) 2023-11-08 01:48:10 +01:00
f271ae0d8f Update .ideavimrc (navigate back/forward) 2023-11-08 01:48:10 +01:00
014763826f Update .ideavimrc (navigate to hump ends in visual mode) 2023-11-08 01:48:10 +01:00
40748c3c68 Update .bashrc (rename tmux window for ssh connections & script formatting) 2023-10-29 14:17:12 +01:00
2368dc86c4 Update .ideavimrc (remove workaround for statement completion) 2023-10-20 01:07:23 +02:00
3fe3a9a285 Update .ideavimrc (make tab switching work in insert mode) 2023-10-20 00:02:19 +02:00
14691e4ed9 Update .ideavimrc (disable global mode) 2023-10-20 00:01:57 +02:00
3b7145539e Update .ideavimrc (remove Alt-Shift-N binding for multiple-cursors plugin) 2023-10-19 10:18:13 +02:00
df3e108327 Update .ideavimrc (add new and improved actions) 2023-10-19 06:46:13 +02:00
db429b3b30 Update .vimrc (various options) 2023-10-19 06:34:04 +02:00
569dc0caad Update .vimrc & .ideavimrc (fix alternative way to enter visual block mode in operator-pending mode) 2023-10-19 06:32:56 +02:00
8a5da89d0f Update .vimrc & .ideavimrc (remove navigating to indents) 2023-10-19 06:30:55 +02:00
2bd9758639 Update .vimrc & .ideavimrc (increment/decrement numbers) 2023-10-19 06:30:48 +02:00
9efdf74626 Update .ideavimrc (fix camel humps) 2023-10-19 06:29:00 +02:00
c31dbc308a Update .ideavimrc (IDE keybindings, WSL, comments) 2023-10-19 06:28:58 +02:00
63cd476e43 Update .ideavimrc (maximize scrolloff, enable global mode, enable nerdtree) 2023-10-05 06:05:51 +02:00
309f33a2e3 Update .vimrc (maximize scrolloff) 2023-10-05 06:02:33 +02:00
d0081f9b33 Update .vimrc (navigate soft-wrapped lines) 2023-10-05 06:02:33 +02:00
fc96fddb47 Update .bashrc (add function to convert files to FLAC) 2023-09-11 02:01:52 +02:00
9c3436171e Update .bashrc (remove 'mc' alias & add 'less' alias) 2023-08-14 10:28:27 +02:00
02d4e45ed4 Update .tmux.conf (set escape-time to 0) 2023-08-11 14:58:13 +02:00
0d55252227 Update .vimrc (listchars) 2023-08-08 09:43:50 +02:00
e491daeaa1 Update AceJump mappings for IdeaVIM 2023-07-28 08:10:55 +02:00
f197f922c6 Update .tmux.conf (copy mode) 2023-06-29 18:56:02 +02:00
97a510183b Update Firefox CSS (addon bar button padding) 2023-05-15 06:38:59 +02:00
58ab227487 Update Firefox CSS 2023-05-14 22:35:39 +02:00
e50a78f38e Update .bashrc (fix mc mouse support in tmux) 2023-05-01 03:50:31 +02:00
2b7e748001 Update .bashrc (add borgsize) 2023-04-30 04:48:45 +02:00
f60e9d76fa Update .tmux.conf (set default terminal to screen-256color) 2023-04-08 00:19:45 +02:00
ecd3b7374d Update .vimrc & .ideavimrc (delete lines, remove edit from cursor to end of special characters) 2023-02-04 03:39:21 +01:00
cad038a9a8 Update .tmux.conf (add bindings to move panes) 2023-01-25 03:47:13 +01:00
d244919999 Add .gitattributes 2023-01-12 20:24:00 +01:00
4e08e27e09 Update Ansible collection 2023-01-11 22:45:34 +01:00
0b1d1ecc80 Add Ansible collection 2023-01-09 13:41:49 +01:00
2ac125eb0a Update .vimrc & .ideavimrc (new bindings, camel humps) 2023-01-09 06:16:41 +01:00
98c756df22 Update .tmux.conf (vi mode) 2023-01-09 06:05:17 +01:00
8c84026cec Update .ideavimrc (bind Alt-B to ge) 2023-01-04 06:38:53 +01:00
4a7829a42e Update .ideavimrc (new action, removed mapping that was hardcoded into IdeaVim fork) 2022-12-21 05:45:36 +01:00
b29a2b5605 Update .tmux.conf (increase history limit) 2022-12-05 03:45:55 +01:00
665ef0de23 Update .bashrc (automatically create or attach tmux session) 2022-12-01 03:04:39 +01:00
3be83cb6f7 Update .bashrc (make ddebug override entrypoint) 2022-10-20 04:12:12 +02:00
8cfde1c326 Update .bashrc (add dupdate function) 2022-09-30 23:53:23 +02:00
8730db6914 Add .tmux.conf 2022-09-26 23:59:33 +02:00
0c50bbe9b0 Update .vimrc (force 256 colors in terminals) 2022-09-25 22:37:01 +02:00
1e1c0fe8e9 Update .vimrc (use mouse in all modes) 2022-09-24 10:15:09 +02:00
1bfafefa5c Add docker aliases and functions to .bashrc & set default editor to vim 2022-09-15 00:20:43 +02:00
4e1fea15bb Fix .bashrc (ls --group-directories-first) 2022-08-04 09:22:39 +02:00
530f74d01b Update vim plugins 2022-07-10 00:30:20 +02:00
672a78d3b1 Update .ideavimrc (remove custom mapping for next/prev occurrence) 2022-07-10 00:30:04 +02:00
12e6f5d9d1 Update .bashrc (group directories first in lsa) 2022-07-10 00:29:15 +02:00
21 changed files with 2483 additions and 252 deletions

58
.bashrc
View File

@@ -1,14 +1,66 @@
alias lsa='ls -l -v --all --human-readable --color=auto'
alias gh='history|grep'
bind "set completion-ignore-case on" bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on" bind "set show-all-if-ambiguous on"
bind '"\e[A": history-search-backward' bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward' bind '"\e[B": history-search-forward'
alias gh='history|grep'
alias less='less -R --mouse'
alias zless='zless -R --mouse'
alias lsa='ls -l -v --all --human-readable --group-directories-first --color=auto'
alias vim='vim -p'
alias d='docker'
alias dc='docker compose'
alias dcud='docker compose up -d'
alias dcul='docker compose up -d && docker compose logs -f'
function dupdate() { docker compose build --pull && docker compose pull && docker compose up -d; }
function dprune() { docker system prune --all --volumes --force; }
function dlogs() { docker logs $1 2>&1; }
function ddebug() { docker run --rm -it --entrypoint "/bin/$2" "$1"; }
function dbash() { docker exec -it "$1" /bin/bash; }
function dsh() { docker exec -it "$1" /bin/sh; }
function dname() { docker ps -af "id=$1" --format '{{.Image}}' | tail -n -1; }
function dtop() { docker top $1 axo user:30,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm; }
function dtopall() { for c in $(docker ps -q); do docker inspect $c -f "{{ .Name }}:"; docker top $c axo user:30,pid,comm | tail -n +2; echo "--------------"; done; }
function dsubnets() { docker network inspect $(docker network ls | awk '$3 == "bridge" { print $1 }') | jq -r '.[] | .Name + " " + .IPAM.Config[0].Subnet' -; }
function dmemlimit() { docker stats --no-stream --format "{{.MemUsage}}" | awk '{print $3}' | sort | sed 's/.$//' | numfmt --from=iec-i | awk '{s+=$1} END {printf "%.0f\n", s}' | numfmt --to=iec --format="%.3f"; }
function ssh() {
if [ -n "${TMUX_PANE}" ]; then
tmux rename-window -t"${TMUX_PANE}" "$*"
command ssh "$@"
tmux set-window-option automatic-rename "on"
else
command ssh "$@"
fi
}
function borgsize() {
printf 'Archive\t\t\tOrig\tComp\tDedup\n'
printf '%-16.16s\t%s\t%s\t%s\n' $(borg info --json --sort-by name --glob-archives '*' "$1" | jq '.archives[] | "\(.name) \(.stats.original_size) \(.stats.compressed_size) \(.stats.deduplicated_size)"' | sed --expression='s/^"//;s/"$//' | numfmt --field='2-4' --to=iec)
}
function convflac() {(
set -e
for f in *."$1"; do
n="${f%.*}"
ffmpeg -i "$n.$1" -compression_level 12 "$n.flac"
exiftool -TagsFromFile "$n.$1" "-all:all>all:all" "$n.flac"
done
)}
export EDITOR=vim
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h \[\033[01;33m\]\w \[\033[01;35m\]\$ \[\033[00m\]' PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h \[\033[01;33m\]\w \[\033[01;35m\]\$ \[\033[00m\]'
else else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi fi
if [ -x /usr/bin/tmux ] && [[ $- =~ i ]] && [[ -z "$TMUX" ]] && [[ -n "$SSH_TTY" ]]; then
tmux new -A
fi

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
* text=auto eol=lf

View File

@@ -1,30 +1,99 @@
set idearefactormode=visual set clipboard-=ideaput
set hlsearch
set ignorecase set ignorecase
set incsearch set incsearch
set noerrorbells
set number set number
set nrformats-=octal
set relativenumber set relativenumber
set scrolloff=12 set scrolloff=999
set showcmd set showcmd
set showmode set showmode
set sidescrolloff=48 set sidescrolloff=999
set smartcase set smartcase
set virtualedit=onemore set virtualedit=onemore
set visualbell set visualbell
set acejump " Use WSL bash as shell
set argtextobj if has('win32')
set exchange set shell=bash.exe
set highlightedyank set shellcmdflag=-lic
set ideajoin set shellxquote=
set matchit endif
set multiple-cursors
set ReplaceWithRegister
set surround
set textobj-entire
set textobj-indent
" http://vimdoc.sourceforge.net/htmldoc/vimindex.html " Configure IDEA settings (https://github.com/JetBrains/ideavim/wiki/set-commands)
set ideajoin
set idearefactormode=visual
" Configure IDE keybindings (https://github.com/JetBrains/ideavim/wiki/sethandler)
sethandler <C-A> a:ide
sethandler <C-B> a:ide
sethandler <C-C> a:ide
sethandler <C-E> a:ide
sethandler <C-F> a:ide
sethandler <C-G> a:ide
sethandler <C-H> a:ide
sethandler <C-I> a:ide
sethandler <C-J> a:ide
sethandler <C-K> a:ide
sethandler <C-L> a:ide
sethandler <C-M> a:ide
sethandler <C-R> a:ide
sethandler <C-S> a:ide
sethandler <C-T> a:ide
sethandler <C-V> a:ide
sethandler <C-W> a:ide
sethandler <C-X> a:ide
sethandler <C-Y> a:ide
sethandler <C-\> a:ide
sethandler <A-B> a:vim
sethandler <A-H> a:vim
sethandler <A-J> a:vim
sethandler <A-K> a:vim
sethandler <A-L> a:vim
sethandler <A-N> a:vim
sethandler <A-O> a:vim
sethandler <A-P> a:vim
sethandler <A-S-B> a:vim
sethandler <A-S-H> a:vim
sethandler <A-S-J> a:vim
sethandler <A-S-K> a:vim
sethandler <A-S-L> a:vim
sethandler <A-S-O> a:vim
sethandler <A-V> a:vim
sethandler <A-X> a:vim
sethandler <C-D> a:vim
sethandler <C-I> a:vim
sethandler <C-N> a:vim
sethandler <C-O> a:vim
sethandler <C-P> a:vim
sethandler <C-S-W> a:vim
sethandler <C-U> a:vim
sethandler <S-BS> a:vim
sethandler <C-Left> a:vim
sethandler <C-Right> a:vim
sethandler <S-Left> a:vim
sethandler <S-Right> a:vim
if &ide =~? 'rider'
" These shortcuts are broken in Rider for some reason...
sethandler <A-S-H> a:ide
sethandler <A-S-L> a:ide
endif
" Enable plugins (https://github.com/JetBrains/ideavim/wiki/IdeaVim-Plugins)
Plug 'argtextobj.vim'
Plug 'vim-exchange'
Plug 'vim-highlightedyank'
Plug 'vim-indent-object'
Plug 'vim-matchit'
Plug 'vim-multiple-cursors'
Plug 'vim-paragraph-motion'
Plug 'vim-surround'
Plug 'vim-textobj-entire'
" https://vimhelp.org/index.txt.html
" Map top row on Czech keyboard layout to digits " Map top row on Czech keyboard layout to digits
map + 1 map + 1
@@ -39,181 +108,219 @@ map í 9
map é 0 map é 0
" Move some commands closer on Czech keyboard layout " Move some commands closer on Czech keyboard layout
noremap ů ; map ů %
map § % nnoremap ú @@
noremap , +
" Navigate to indents noremap § `
nnoremap J + noremap §§ ``
vnoremap J + nnoremap m§ m
nnoremap K -
vnoremap K - sunmap ů
sunmap §
" Enter visual block mode
map <A-v> <C-v>
" Navigate camel humps " Navigate camel humps
noremap L [w
noremap H [b
nnoremap L [w nnoremap L [w
vnoremap L [w
nnoremap H [b nnoremap H [b
vnoremap H [b
" Edit camel humps " Navigate to end of previous word
nnoremap dL :raction EditorDeleteToWordEndInDifferentHumpsMode<CR> noremap <A-b> ge
nnoremap dH :raction EditorDeleteToWordStartInDifferentHumpsMode<CR> noremap <A-S-b> gE
nmap dih dHdL " Only works in the middle of a hump
nmap cL dLi " Navigate unmatched parentheses/braces
nmap cH dHi noremap g( [(
nmap cih dihi noremap g) ])
noremap g{ [{
noremap g} ]}
" Edit from cursor to start/end of parenthesized block " Edit from cursor to start/end of parenthesized block
nnoremap c) c]) nnoremap c) c])
nnoremap d) d]) nnoremap d) d])
nnoremap c( c[(( nnoremap c( c[((
nnoremap d( c[((<ESC>l nnoremap d( c[((<Esc>l
" Edit from cursor to end of special characters " Create lines
nnoremap c" ct" nnoremap go o<Esc>$
nnoremap d" dt" nnoremap gO O<Esc>$
nnoremap c' ct' nnoremap g<CR> i<CR><Esc>l
nnoremap d' dt'
nnoremap c] ct]
nnoremap d] dt]
" Alternative way to enter visual block mode " Edit current line
nnoremap <Space>v <C-V> nnoremap C cc
xnoremap C cc
nnoremap D dd
xnoremap D dd
nnoremap < <<
nnoremap > >>
" Indent keeping selection " Indent keeping selection
vnoremap < <gv xnoremap < <gv
vnoremap > >gv xnoremap > >gv
vnoremap = =gv xnoremap = =gv
" Extend selection
xmap x <Action>(EditorSelectWord)
xmap X <Action>(EditorUnSelectWord)
" Turn capital letters into opposite actions " Turn capital letters into opposite actions
nnoremap U :redo<CR> " nnoremap U :redo<CR> " Handled by custom version of IdeaVIM
" Reselect pasted text " Reselect pasted text
nnoremap gp `[v`] nnoremap gp `[v`]
" Put without yank " Put without yank
xmap p gr xnoremap p P
xnoremap P p
" Clear search highlights
nnoremap <Esc> :nohlsearch<Return><Esc>
" Code completion
if &ide !~? 'rider'
imap <expr> ! pumvisible() ? '<Action>(EditorChooseLookupItem)<Esc>mzF.bi!<Esc>`zla' : '!'
endif
" Show parameter info
nmap <A-p> <Action>(ParameterInfo)
imap <A-p> <Action>(ParameterInfo)
" Navigate back/forward
map <BS> <Action>(Back)
map <S-BS> <Action>(Forward)
" Navigate inspection highlights
map ( <Action>(GotoPreviousError)
map ) <Action>(GotoNextError)
" Navigate to previous/next method
map [ <Action>(MethodUp)
map ] <Action>(MethodDown)
" Navigate paragraphs at indentation
map { <Plug>(ParagraphPrevMotion)$
map } <Plug>(ParagraphNextMotion)$
" Move statement/element
map <A-S-h> <Action>(MoveElementLeft)
map <A-S-l> <Action>(MoveElementRight)
map <A-S-j> <Action>(MoveStatementDown)
map <A-S-k> <Action>(MoveStatementUp)
" Multiple carets
map <expr> <A-j> pumvisible() ? '<Action>(EditorDown)' : '<Action>(EditorCloneCaretBelow)'
map <expr> <A-k> pumvisible() ? '<Action>(EditorUp)' : '<Action>(EditorCloneCaretAbove)'
imap <expr> <A-j> pumvisible() ? '<Action>(EditorDown)' : '<Action>(EditorCloneCaretBelow)'
imap <expr> <A-k> pumvisible() ? '<Action>(EditorUp)' : '<Action>(EditorCloneCaretAbove)'
" Manage editor tabs
map <C-w>m <Action>(MoveEditorToOppositeTabGroup)
map <C-w>s <Action>(MoveTabDown)
map <C-w>u <Action>(Unsplit)
map <C-w>U <Action>(UnsplitAll)
map <C-w>v <Action>(MoveTabRight)
noremap <C-w>S <C-w>s
noremap <C-w>V <C-w>v
map <C-w><C-w>a <Action>(CloseAllEditors)
map <C-w><C-w>h <Action>(CloseAllToTheLeft)
map <C-w><C-w>l <Action>(CloseAllToTheRight)
map <C-w><C-w>o <Action>(CloseAllEditorsButActive)
map \\ <C-w>
map \\\\ <C-w><C-w>
" Rebind repurposed commands
noremap g] ]
noremap g[ [
" Rebind commands that will be repurposed
nnoremap GG G
nnoremap dG dG
nnoremap cG cG
nnoremap M m nnoremap M m
nnoremap Z z nnoremap Z z
map <A-S-n> <A-p>
" Repurpose 'Enter' for statement completion (renaming function requires a custom version of IdeaVIM) " Repurpose 'Enter' for statement completion
function! CompleteStatement() nmap <Enter> <Action>(EditorCompleteStatement)
if (renaming())
" TODO https://github.com/JetBrains/ideavim/discussions/397#discussioncomment-1573048
" return "\<Enter>"
return "<Enter>"
else
action EditorCompleteStatement
return ""
endif
endfunction
nmap <expr> <Enter> CompleteStatement() " Repurpose 'g' for navigation (VimJumpToSource requires a custom version of IdeaVIM)
map gb <Action>(GotoNextBookmark)
map gB <Action>(GotoPreviousBookmark)
map gD <Action>(GotoTypeDeclaration)
map ge <Action>(VcsShowNextChangeMarker)
map gE <Action>(VcsShowPrevChangeMarker)
map gf <Action>(VimJumpToSource)<Action>(HideActiveWindow)
map gi <Action>(GotoImplementation)
map gr <Action>(RecentLocations)
map gR <Action>(RecentChangedFiles)
map gs <Action>(GotoSuperMethod)
map gS <Action>(ShowSiblings)
map gt gg<Action>(KM.GotoNextTypeInFile)
map gT <Action>(KM.GotoNextTypeInFile)
map gu <Action>(ShowUsages)
map gU <Action>(FindUsages)
" Repurpose special characters for navigation " Repurpose 'z' for view actions and debugger
nmap ( :raction GotoPreviousError<CR> map za <Action>(Annotate)
nmap ) :raction GotoNextError<CR> map zb <Action>(ViewBreakpoints)
nmap [ :raction MethodUp<CR> map zc <Action>(EditorContextInfo)
nmap ] :raction MethodDown<CR> map zd <Action>(CompareClipboardWithSelection)
nmap { :raction JumpToLastChange<CR> map ze <Action>(ShowErrorDescription)
nmap } :raction JumpToNextChange<CR> map zf <Action>(SelectInProjectView)
map zi <Action>(ShowHoverInfo)
map zm <Action>(ShowBookmarks)
map zp <Action>(QuickImplementations)
map zP <Action>(QuickTypeDefinition)
map zr <Action>(RunToCursor)
map zR <Action>(ForceRunToCursor)
map zs <Action>(osmedile.intellij.stringmanip.PopupChoiceAction)
map zt <Action>(ExpressionTypeInfo)
map zx <Action>(EvaluateExpression)
" Repurpose 'g' for navigation (:raction requires a custom version of IdeaVIM) map zht <Action>(TypeHierarchy)
nmap gb :raction GotoNextBookmark<CR> map zhm <Action>(MethodHierarchy)
nmap gB :raction GotoPreviousBookmark<CR>
nmap gd :action GotoDeclaration<CR>
nmap gD :action GotoTypeDeclaration<CR>
nmap ge :raction VcsShowNextChangeMarker<CR>
nmap gE :raction VcsShowPrevChangeMarker<CR>
map gi :action GotoImplementation<CR>
map gj :raction EditorCloneCaretBelow<CR>
map gk :raction EditorCloneCaretAbove<CR>
nmap go :raction GotoNextElementUnderCaretUsage<CR>
nmap gO :raction GotoPrevElementUnderCaretUsage<CR>
nmap gr :action RecentLocations<CR>
nmap gR :action RecentChangedFiles<CR>
map gs :action GotoSuperMethod<CR>
map gS :action ShowSiblings<CR>
nmap gT /\\<class\>\\\|\\<interface\>\\\|\\<enum\>\\\|\\<object\>\\\|\\<record\>\\\|\\<struct\>\\\|\\<trait\><CR>w:nohlsearch<CR>
nmap gt gggT
nmap gu :action ShowUsages<CR>
nmap gU :action FindUsages<CR>
map gz :action NextSplitter<CR>
map gZ :action PrevSplitter<CR>
" Make bidirectional 'g' commands work with 'G' too if &ide =~? 'rider'
nmap Gb gb map zhc <Action>(RiderShowIncomingCalls)
nmap GB gB else
nmap Ge ge map zhc <Action>(CallHierarchy)
nmap GE gE endif
map Gj gj
map Gk gk
nmap Go go
nmap GO gO
nmap Gt gt
nmap GT gT
map Gz gz
map GZ gZ
" Repurpose 'z' for view actions, debugger, and tab management nmap zhl <Action>(LocalHistory.ShowHistory)
map za :action Annotate<CR> xmap zhl <Action>(LocalHistory.ShowSelectionHistory)
map zb :action ViewBreakpoints<CR> nmap zhg <Action>(Vcs.ShowTabbedFileHistory)
map zc :action EditorContextInfo<CR> xmap zhg <Action>(Vcs.ShowHistoryForBlock)
map zd :action QuickJavaDoc<CR>
map ze :action ShowErrorDescription<CR>
map zf :action SelectInProjectView<CR>
map zht :action TypeHierarchy<CR>
map zhm :action MethodHierarchy<CR>
map zhc :action CallHierarchy<CR>
map zm :action ShowBookmarks<CR>
map zp :action QuickImplementations<CR>
map zP :action QuickTypeDefinition<CR>
map zr :action RunToCursor<CR>
map zR :action ForceRunToCursor<CR>
map zsd :action MoveTabDown<CR>
map zsr :action MoveTabRight<CR>
map zsu :action Unsplit<CR>
map zsU :action UnsplitAll<CR>
map zt :action ExpressionTypeInfo<CR>
map zx :action EvaluateExpression<CR>
" Repurpose 'm' for refactoring (normal mode) " Repurpose 'm' for refactoring
nmap mg :action Generate<CR> map mc <Action>(IntroduceConstant)
nmap mi :action Inline<CR> map md <Action>(SafeDelete)
nmap mn :action RenameElement<CR> map me <Action>(Move)
nmap mo :action OverrideMethods<CR> map mf <Action>(IntroduceField)
nmap ms :action ChangeSignature<CR> map mg <Action>(Generate)
nmap mS :action NewScratchFile<CR> map mi <Action>(Inline)
map mm <Action>(ExtractMethod)
map mM <Action>(ExtractFunction)
map mn <Action>(RenameElement)
map mo <Action>(OverrideMethods)
map mp <Action>(IntroduceParameter)
map mP <Action>(IntroduceProperty)
map mr <Action>(Refactorings.QuickListPopupAction)
map ms <Action>(ChangeSignature)
map mS <Action>(NewScratchFile)
map mt <Action>(InsertLiveTemplate)
map mv <Action>(IntroduceVariable)
map mw <Action>(SurroundWith)
" Repurpose 'm' for refactoring (normal / visual mode) " Remap NERDTree bindings
nmap mc :action IntroduceConstant<CR> let g:NERDTreeMapOpenVSplit = 'v'
vmap mc :action IntroduceConstant<CR> let g:NERDTreeMapPreviewVSplit = 'gv'
nmap mf :action IntroduceField<CR> let g:NERDTreeMapOpenSplit = 's'
vmap mf :action IntroduceField<CR> let g:NERDTreeMapPreviewSplit = 'gs'
nmap mm :action ExtractMethod<CR>
vmap mm :action ExtractMethod<CR>
nmap mM :action ExtractFunction<CR>
vmap mM :action ExtractFunction<CR>
nmap mp :action IntroduceParameter<CR>
vmap mp :action IntroduceParameter<CR>
nmap mP :action IntroduceProperty<CR>
vmap mP :action IntroduceProperty<CR>
nmap mr :action Refactorings.QuickListPopupAction<CR>
vmap mr :action Refactorings.QuickListPopupAction<CR>
nmap mv :action IntroduceVariable<CR>
vmap mv :action IntroduceVariable<CR>
" Actions for custom version of AceJump " Actions for custom version of AceJump
map <Space> <Plug>(acejump) set acejump
map <Space>d :action AceVimAction_GoToDeclaration<CR> map <Space> <Action>(AceVimAction_JumpAllEditors)
map <Space>D :action AceVimAction_GoToTypeDeclaration<CR> map g<Space> <Action>(AceVimAction_JumpAllEditors_GoToDeclaration)
map <Space>i :action AceVimAction_ShowIntentions<CR>
map <Space>u :action AceVimAction_ShowUsages<CR>
map <Space>U :action AceVimAction_FindUsages<CR>
map <Space>r :action AceVimAction_Refactor<CR>
map <Space>n :action AceVimAction_Rename<CR>

21
.tmux.conf Normal file
View File

@@ -0,0 +1,21 @@
set -g default-terminal "screen-256color"
set -g escape-time 0
set -g history-limit 50000
set -g mouse on
set-window-option -g mode-keys vi
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi C-v send -X rectangle-toggle
bind -T copy-mode-vi M-v send -X rectangle-toggle
bind -T copy-mode-vi Enter send -X copy-selection-and-cancel
unbind -T copy-mode-vi MouseDragEnd1Pane
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -hc "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
bind -n S-Up move-pane -ht ".{up-of}"
bind -n S-Right move-pane -t ".{right-of}"
bind -n S-Left move-pane -t ".{left-of}"
bind -n S-down move-pane -ht ".{down-of}"

View File

@@ -1,17 +0,0 @@
#!/bin/bash
pushd ~/.vim/pack/plugins/start > /dev/null
git clone https://github.com/easymotion/vim-easymotion.git
git clone https://github.com/itchyny/lightline.vim
git clone https://github.com/luochen1990/rainbow
git clone https://github.com/machakann/vim-highlightedyank
git clone https://github.com/mg979/vim-visual-multi
git clone https://github.com/michaeljsmith/vim-indent-object.git
git clone https://github.com/vim-scripts/ReplaceWithRegister
git clone https://tpope.io/vim/repeat.git
git clone https://tpope.io/vim/sleuth.git
git clone https://tpope.io/vim/surround.git
popd > /dev/null

219
.vimrc
View File

@@ -1,32 +1,83 @@
set autoindent set autoindent
set backspace=indent,eol,start
set encoding=utf-8 set encoding=utf-8
set guifont=Cascadia_Mono:h12:cANSI:qDRAFT
set guioptions-=t " Remove menu tearoff
set history=1024 set history=1024
set hlsearch set hlsearch
set ignorecase set ignorecase
set incsearch set incsearch
set infercase
set laststatus=2 set laststatus=2
set mouse=v set linebreak
set list
set listchars=lead,trail,tab:→\ ,extends:>,precedes:<
set modeline
set modelines=2
set mouse=a
set noerrorbells set noerrorbells
set noshowcmd set noshowcmd
set noshowmode set noshowmode
set nrformats-=octal
set number set number
set relativenumber set relativenumber
set scrolloff=12 set scrolloff=999
set shiftwidth=0 set shiftwidth=0
set shortmess-=S " Show search count
set shortmess-=l " Show full description for lines and bytes
set showbreak=↪\
set showmatch set showmatch
set sidescrolloff=48 set sidescrolloff=999
set smartcase set smartcase
set tabstop=4 set tabstop=4
set ttimeout
set ttimeoutlen=50
set ttymouse=xterm2
set virtualedit=onemore
set wildmenu set wildmenu
set winaltkeys=no
set wrap set wrap
" Windows paths
set packpath=$HOME/.vim,$VIM/vimfiles,$VIMRUNTIME
set runtimepath=$HOME/.vim,$VIM/vimfiles,$VIMRUNTIME
" Color scheme " Color scheme
syntax enable syntax enable
colorscheme custom
highlight LineNr ctermfg=244 if has("gui_running")
highlight IncSearch ctermfg=251 ctermbg=238 colorscheme retrobox
highlight Search ctermfg=251 ctermbg=238 highlight NonText ctermfg=14 guifg=#7c6f64
highlight Visual ctermfg=240 ctermbg=250 else
colorscheme custom
highlight LineNr ctermfg=244
highlight IncSearch ctermfg=251 ctermbg=238
highlight Search ctermfg=251 ctermbg=238
highlight Visual ctermfg=240 ctermbg=250
endif
highlight SpecialKey ctermfg=8 guifg=#584f46
" Windows GUI
if has("win32") && has("gui_running")
autocmd GUIEnter * simalt ~x " Maximize window
autocmd GUIEnter * set visualbell t_vb= " Disable bell sound
set listchars+=tab:▶\
set renderoptions=type:directx " Fix unicode rendering
set showbreak=→\
endif
" Fix Alt mappings (https://github.com/vim/vim/issues/2588#issuecomment-697959290)
for ord in range(65, 90) + range(97, 122)
let char = nr2char(ord)
exec printf("set <m-%s>=\<esc>%s", char, char)
exec printf("tnoremap <silent> <m-%s> <esc>%s", char, char)
endfor
" Navigate editor tabs
noremap <M-h> gT
noremap <M-l> gt
" Map top row on Czech keyboard layout to digits " Map top row on Czech keyboard layout to digits
map + 1 map + 1
@@ -41,36 +92,75 @@ map í 9
map é 0 map é 0
" Move some commands closer on Czech keyboard layout " Move some commands closer on Czech keyboard layout
noremap ů ; map ů %
map § % nnoremap ú @@
noremap , +
" Navigate to indents noremap § `
nnoremap J + noremap §§ ``
vnoremap J + nnoremap m§ m
nnoremap K -
vnoremap K - sunmap ů
sunmap §
" Enter visual block mode
noremap <M-v> <C-v>
" Navigate camel humps (https://github.com/vim-scripts/camelcasemotion)
map L <Plug>CamelCaseMotion_w
map H <Plug>CamelCaseMotion_b
sunmap L
sunmap H
omap iL <Plug>CamelCaseMotion_iw
xmap iL <Plug>CamelCaseMotion_iw
omap iH <Plug>CamelCaseMotion_ib
xmap iH <Plug>CamelCaseMotion_ib
" Navigate to end of previous word
noremap <M-b> ge
noremap <M-S-b> gE
" Navigate soft-wrapped lines
nnoremap <expr> j v:count ? 'j' : 'gj'
xnoremap <expr> j v:count ? 'j' : 'gj'
nnoremap <expr> k v:count ? 'k' : 'gk'
xnoremap <expr> k v:count ? 'k' : 'gk'
nnoremap gj j
xnoremap gj j
nnoremap gk k
xnoremap gk k
" Navigate unmatched parentheses/braces
noremap g( [(
noremap g) ])
noremap g{ [{
noremap g} ]}
" Edit from cursor to start/end of parenthesized block " Edit from cursor to start/end of parenthesized block
nnoremap c) c]) nnoremap c) c])
nnoremap d) d]) nnoremap d) d])
nnoremap c( c[(( nnoremap c( c[((
nnoremap d( c[((<ESC>l nnoremap d( c[((<Esc>l
" Edit from cursor to end of special characters " Create lines
nnoremap c" ct" nnoremap go o<Esc>$
nnoremap d" dt" nnoremap gO O<Esc>$
nnoremap c' ct' nnoremap g<CR> i<CR><Esc>l
nnoremap d' dt'
nnoremap c] ct]
nnoremap d] dt]
" Alternative way to enter visual block mode " Edit current line
nnoremap <Space>v <C-V> nnoremap C cc
xnoremap C cc
nnoremap D dd
xnoremap D dd
nnoremap < <<
nnoremap > >>
" Indent keeping selection " Indent keeping selection
vnoremap < <gv xnoremap < <gv
vnoremap > >gv xnoremap > >gv
vnoremap = =gv xnoremap = =gv
" Turn capital letters into opposite actions " Turn capital letters into opposite actions
nnoremap U :redo<CR> nnoremap U :redo<CR>
@@ -79,14 +169,81 @@ nnoremap U :redo<CR>
nnoremap gp `[v`] nnoremap gp `[v`]
" Put without yank " Put without yank
xmap p gr xnoremap p P
xnoremap P p
" Clear search highlights
nnoremap <Esc> :nohlsearch<Return><Esc>
" Use Ctrl for selection and clipboard
nnoremap <C-a> ggVG
xnoremap <C-a> ggoG
xnoremap <C-c> "+y
xnoremap <C-x> "+x
noremap <C-v> "+gP
inoremap <C-v> <C-o>:set paste<CR><C-r>+<C-o>:set nopaste<CR>
cnoremap <C-v> <C-r>+
nnoremap <C-s> :w<CR>
xnoremap <C-s> :<C-U>w<CR>gv
inoremap <C-s> <C-o>:w<CR>
" Update search register when using f/t
function FindChar(action, reverse, search_affix)
let t:reverse_search = a:reverse
let char = nr2char(getchar())
if char == '\'
let query = '\\'
else
let query = '\C\V'.char.'\v'
endif
if a:reverse
call setreg('/', query.a:search_affix)
else
call setreg('/', a:search_affix.query)
endif
nohlsearch
execute 'normal! '.a:action.char
endfunction
function FindCharVisual(action, reverse, search_affix)
normal gv
call FindChar(a:action, a:reverse, a:search_affix)
endfunction
function! ResetReverseSearchFlag()
if getcmdtype() =~ "[/?]"
let t:reverse_search = 0
endif
endfunction
nmap f :call FindChar('f', 0, '')<CR>
nmap F :call FindChar('F', 1, '')<CR>
nmap t :call FindChar('t', 0, '\zs.\ze')<CR>
nmap T :call FindChar('T', 1, '\zs.\ze')<CR>
xmap f :call FindCharVisual('f', 0, '')<CR>
xmap F :call FindCharVisual('F', 1, '')<CR>
xmap t :call FindCharVisual('t', 0, '\zs.\ze')<CR>
xmap T :call FindCharVisual('T', 1, '\zs.\ze')<CR>
noremap <expr> n 'nN'[t:reverse_search]
noremap <expr> N 'Nn'[t:reverse_search]
cnoremap <CR> <cmd>call ResetReverseSearchFlag()<CR><CR>
" Plugin: https://github.com/easymotion/vim-easymotion.git " Plugin: https://github.com/easymotion/vim-easymotion.git
map <Space> <Plug>(easymotion-prefix) nmap <Space> <Plug>(easymotion-overwin-f)
xmap <Space> <Plug>(easymotion-s)
omap <Space> <Plug>(easymotion-s)
" Plugin: https://github.com/machakann/vim-highlightedyank " Plugin: https://github.com/machakann/vim-highlightedyank
let g:highlightedyank_highlight_duration = 500 let g:highlightedyank_highlight_duration = 500
" Plugin: https://github.com/luochen1990/rainbow " Plugin: https://github.com/luochen1990/rainbow
let g:rainbow_active = 1 let g:rainbow_active = 1

View File

@@ -1,26 +1,5 @@
@-moz-document url(chrome://browser/content/browser.xul), url(chrome://browser/content/browser.xhtml) { @-moz-document url(chrome://browser/content/browser.xul), url(chrome://browser/content/browser.xhtml) {
/* Fix broken window colors */
#main-window {
background-color: #000c !important;
}
#toolbar-menubar, #main-menubar, #TabsToolbar {
background-color: #000 !important;
}
#main-menubar {
color: rgb(249, 249, 250) !important;
text-shadow: none !important;
border-radius: 0 !important;
}
#TabsToolbar {
color: rgb(249, 249, 250) !important;
background-image: none !important;
}
/* Menu bar */ /* Menu bar */
#main-menubar > menu { #main-menubar > menu {
@@ -37,7 +16,7 @@
/* Reload/stop buttons */ /* Reload/stop buttons */
#reload-button, #stop-button { #reload-button, #stop-button {
display: -moz-box !important; display: flex !important;
} }
#stop-reload-button .toolbarbutton-icon { #stop-reload-button .toolbarbutton-icon {
@@ -78,6 +57,10 @@
/* Tabs & toolbars */ /* Tabs & toolbars */
#navigator-toolbox {
border-bottom: none !important;
}
#toolbar-menubar { #toolbar-menubar {
min-height: 21px !important; min-height: 21px !important;
} }
@@ -86,6 +69,10 @@
height: 27px !important; height: 27px !important;
} }
.tab-label-container {
height: auto !important;
}
:root { :root {
--tab-min-height: 27px !important; --tab-min-height: 27px !important;
--tab-block-margin: 0 !important; --tab-block-margin: 0 !important;
@@ -102,17 +89,13 @@
.tabbrowser-tab { .tabbrowser-tab {
padding-inline: 0 !important; padding-inline: 0 !important;
border-right: 1px solid #484848 !important;
}
.tabbrowser-tab[first-visible-unpinned-tab] {
border-left: 1px solid #484848 !important; border-left: 1px solid #484848 !important;
} }
.tabbrowser-tab[first-visible-tab] {
border-inline-start: 1px solid #484848 !important;
}
.tabbrowser-tab[last-visible-tab] {
border-inline-end: 1px solid #484848 !important;
}
.tab-content { .tab-content {
padding-bottom: 2px !important; padding-bottom: 2px !important;
} }
@@ -125,23 +108,33 @@
padding: 0 1px !important; padding: 0 1px !important;
} }
/* Tab playback icons */
.tabbrowser-tab:not([pinned]) .tab-icon-stack:is([muted], [soundplaying], [activemedia-blocked]) {
grid-template-areas: "a s";
}
.tabbrowser-tab:not([pinned]) .tab-icon-overlay:is([muted], [soundplaying], [activemedia-blocked]) {
grid-area: a !important;
}
.tabbrowser-tab:not([pinned]) .tab-icon-stack[indicator-replaces-favicon] > :not(&) {
opacity: 1 !important;
grid-area: s;
}
/* Address bar */ /* Address bar */
#urlbar-container { #urlbar-container {
--urlbar-container-height: 34px !important; --urlbar-container-height: 34px !important;
margin-top: -2px !important;
margin-inline: 3px !important; margin-inline: 3px !important;
} }
#urlbar {
margin: 1px 0 !important;
}
#urlbar .urlbarView-row-inner { #urlbar .urlbarView-row-inner {
padding-block: 4px !important; padding-block: 4px !important;
} }
#urlbar .search-one-offs:not([hidden]){ #urlbar .search-one-offs:not([hidden]) {
padding-block: 4px !important; padding-block: 4px !important;
} }
@@ -153,7 +146,7 @@
#PersonalToolbar { #PersonalToolbar {
-moz-window-dragging: no-drag; -moz-window-dragging: no-drag;
display: -webkit-box !important; display: flex !important;
position: fixed !important; position: fixed !important;
bottom: 0 !important; bottom: 0 !important;
width: 100% !important; width: 100% !important;
@@ -161,7 +154,6 @@
padding: 0 !important; padding: 0 !important;
-moz-padding-start: 0 !important; -moz-padding-start: 0 !important;
-moz-padding-end: 0 !important; -moz-padding-end: 0 !important;
border-top: 1px solid var(--chrome-content-separator-color) !important;
background-color: #0E0E0E !important; background-color: #0E0E0E !important;
z-index: 1000 !important; z-index: 1000 !important;
} }
@@ -170,9 +162,14 @@
max-width: none !important; max-width: none !important;
} }
#PersonalToolbar .toolbaritem-combined-buttons {
margin-inline: 0 !important;
}
#PersonalToolbar .toolbarbutton-1 { #PersonalToolbar .toolbarbutton-1 {
margin: 0 !important; margin: 0 !important;
padding: 3px 4px !important; padding: 3px 0 !important;
--toolbarbutton-inner-padding: 6px !important;
} }
#PersonalToolbar .toolbarbutton-icon { #PersonalToolbar .toolbarbutton-icon {
@@ -180,8 +177,8 @@
height: 14px !important; height: 14px !important;
} }
#main-window:not([inFullscreen = "true"]) #browser-bottombox { #main-window:not([inFullscreen = "true"]) #browser {
height: 22px; margin-bottom: 22px;
} }
/* PDF.js */ /* PDF.js */

View File

@@ -1,5 +1,15 @@
This is primarily for me to keep track of changes and synchronize my configuration, so there aren't many comments or other documentation at the moment, but I might improve that later. This is primarily for me to keep track of changes and synchronize my configuration, so there aren't many comments or other documentation at the moment, but I might improve that later.
# Ansible
This repository includes an Ansible collection that will automatically clone this repository into `~/.dotfiles`. It can be installed with:
```shell
ansible-galaxy collection install git+https://github.com/chylex/dotfiles.git#/ansible/
```
# Files
### .ideavimrc ### .ideavimrc
[IdeaVim](https://plugins.jetbrains.com/plugin/164-ideavim) plugin for IntelliJ platform. Some parts require my [fork of IdeaVim](https://github.com/chylex/IntelliJ-IdeaVim/tree/customized/main), and my experimental [fork of AceJump](https://github.com/chylex/IntelliJ-AceJump/tree/experimental-rework). Belongs in the user home directory. [IdeaVim](https://plugins.jetbrains.com/plugin/164-ideavim) plugin for IntelliJ platform. Some parts require my [fork of IdeaVim](https://github.com/chylex/IntelliJ-IdeaVim/tree/customized/main), and my experimental [fork of AceJump](https://github.com/chylex/IntelliJ-AceJump/tree/experimental-rework). Belongs in the user home directory.
@@ -8,12 +18,16 @@ This is primarily for me to keep track of changes and synchronize my configurati
Configuration for [Vim](https://www.vim.org/). Belongs in the user home directory. Configuration for [Vim](https://www.vim.org/). Belongs in the user home directory.
To install plugins, navigate to `.vim/pack/plugins/start` and run `install.sh`. The script uses `git` to clone the plugin repositories. You can install the vim plugins using the `chylex.dotfiles.vim_plugins` Ansible role, or manually by cloning git repositories listed in the [task file](ansible/roles/vim_plugins/tasks/main.yaml) into `~/.vim/pack/plugins/start`.
### .bashrc ### .bashrc
Configuration for [Bash](https://www.gnu.org/software/bash/). Belongs in the user home directory. Configuration for [Bash](https://www.gnu.org/software/bash/). Belongs in the user home directory.
### .tmux.conf
Configuration for [tmux](https://github.com/tmux/tmux). Belongs in the user home directory.
### Firefox / userChrome.css ### Firefox / userChrome.css
Custom stylesheets for Firefox 94 or newer, designed for [Firefox Developer Edition](https://www.mozilla.org/firefox/developer). To install, place `userChrome.css` into the `chrome` folder: Custom stylesheets for Firefox 94 or newer, designed for [Firefox Developer Edition](https://www.mozilla.org/firefox/developer). To install, place `userChrome.css` into the `chrome` folder:

31
ansible/README.md Normal file
View File

@@ -0,0 +1,31 @@
# Ansible Collection - chylex.dotfiles
Ansible roles for configuring and updating my dotfiles.
# Roles
### `chylex.dotfiles.bash_completion`
Configures Bash completion for `d` alias for Docker, and `dc` alias for Docker Compose.
### `chylex.dotfiles.detect_shell`
Sets the `shell` fact to the remote user's default shell.
### `chylex.dotfiles.from_repository`
Clones the dotfiles repository into `~/.dotfiles` and updates the user's dotfiles. **Do not use if you already use the `~/.dotfiles` folder for something else!**
### `chylex.dotfiles.vim_plugins`
Installs a bunch of Vim plugins.
### `chylex.dotfiles.all`
Does all of the above.
# Licensing
The `roles/bash_completion/files/.bin` folder includes third-party scripts under their own licenses:
- [complete_alias](https://github.com/cykerway/complete-alias)
- [docker_compose](https://github.com/docker/compose/blob/1.28.x/contrib/completion/bash/docker-compose)

11
ansible/galaxy.yml Normal file
View File

@@ -0,0 +1,11 @@
namespace: chylex
name: dotfiles
version: 1.0.0
readme: README.md
license: [ Unlicense ]
authors: [ "chylex <contact@chylex.com>" ]
homepage: https://github.com/chylex/dotfiles
repository: https://github.com/chylex/dotfiles
issues: https://github.com/chylex/dotfiles/issues

2
ansible/meta/runtime.yml Normal file
View File

@@ -0,0 +1,2 @@
---
requires_ansible: '>=2.9.10'

View File

@@ -0,0 +1,6 @@
---
dependencies:
- role: from_repository
- role: bash_completion
- role: vim_plugins

View File

@@ -0,0 +1,5 @@
. ~/.bin/complete_alias
. ~/.bin/docker_compose
complete -F _complete_alias d
complete -F _docker_compose dc

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,671 @@
#!/bin/bash
#
# bash completion for docker-compose
#
# This work is based on the completion for the docker command.
#
# This script provides completion of:
# - commands and their options
# - service names
# - filepaths
#
# To enable the completions either:
# - place this file in /etc/bash_completion.d
# or
# - copy this file to e.g. ~/.docker-compose-completion.sh and add the line
# below to your .bashrc after bash completion features are loaded
# . ~/.docker-compose-completion.sh
__docker_compose_previous_extglob_setting=$(shopt -p extglob)
shopt -s extglob
__docker_compose_q() {
docker-compose 2>/dev/null "${top_level_options[@]}" "$@"
}
# Transforms a multiline list of strings into a single line string
# with the words separated by "|".
__docker_compose_to_alternatives() {
local parts=( $1 )
local IFS='|'
echo "${parts[*]}"
}
# Transforms a multiline list of options into an extglob pattern
# suitable for use in case statements.
__docker_compose_to_extglob() {
local extglob=$( __docker_compose_to_alternatives "$1" )
echo "@($extglob)"
}
# Determines whether the option passed as the first argument exist on
# the commandline. The option may be a pattern, e.g. `--force|-f`.
__docker_compose_has_option() {
local pattern="$1"
for (( i=2; i < $cword; ++i)); do
if [[ ${words[$i]} =~ ^($pattern)$ ]] ; then
return 0
fi
done
return 1
}
# Returns `key` if we are currently completing the value of a map option (`key=value`)
# which matches the extglob passed in as an argument.
# This function is needed for key-specific completions.
__docker_compose_map_key_of_current_option() {
local glob="$1"
local key glob_pos
if [ "$cur" = "=" ] ; then # key= case
key="$prev"
glob_pos=$((cword - 2))
elif [[ $cur == *=* ]] ; then # key=value case (OSX)
key=${cur%=*}
glob_pos=$((cword - 1))
elif [ "$prev" = "=" ] ; then
key=${words[$cword - 2]} # key=value case
glob_pos=$((cword - 3))
else
return
fi
[ "${words[$glob_pos]}" = "=" ] && ((glob_pos--)) # --option=key=value syntax
[[ ${words[$glob_pos]} == @($glob) ]] && echo "$key"
}
# suppress trailing whitespace
__docker_compose_nospace() {
# compopt is not available in ancient bash versions
type compopt &>/dev/null && compopt -o nospace
}
# Outputs a list of all defined services, regardless of their running state.
# Arguments for `docker-compose ps` may be passed in order to filter the service list,
# e.g. `status=running`.
__docker_compose_services() {
__docker_compose_q ps --services "$@"
}
# Applies completion of services based on the current value of `$cur`.
# Arguments for `docker-compose ps` may be passed in order to filter the service list,
# see `__docker_compose_services`.
__docker_compose_complete_services() {
COMPREPLY=( $(compgen -W "$(__docker_compose_services "$@")" -- "$cur") )
}
# The services for which at least one running container exists
__docker_compose_complete_running_services() {
local names=$(__docker_compose_services --filter status=running)
COMPREPLY=( $(compgen -W "$names" -- "$cur") )
}
_docker_compose_build() {
case "$prev" in
--build-arg)
COMPREPLY=( $( compgen -e -- "$cur" ) )
__docker_compose_nospace
return
;;
--memory|-m)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--build-arg --compress --force-rm --help --memory -m --no-cache --no-rm --pull --parallel -q --quiet" -- "$cur" ) )
;;
*)
__docker_compose_complete_services --filter source=build
;;
esac
}
_docker_compose_config() {
case "$prev" in
--hash)
if [[ $cur == \\* ]] ; then
COMPREPLY=( '\*' )
else
COMPREPLY=( $(compgen -W "$(__docker_compose_services) \\\* " -- "$cur") )
fi
return
;;
esac
COMPREPLY=( $( compgen -W "--hash --help --no-interpolate --quiet -q --resolve-image-digests --services --volumes" -- "$cur" ) )
}
_docker_compose_create() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--build --force-recreate --help --no-build --no-recreate" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_docker_compose() {
case "$prev" in
--tlscacert|--tlscert|--tlskey)
_filedir
return
;;
--file|-f)
_filedir "y?(a)ml"
return
;;
--ansi)
COMPREPLY=( $( compgen -W "never always auto" -- "$cur" ) )
return
;;
--log-level)
COMPREPLY=( $( compgen -W "debug info warning error critical" -- "$cur" ) )
return
;;
--project-directory)
_filedir -d
return
;;
--env-file)
_filedir
return
;;
$(__docker_compose_to_extglob "$daemon_options_with_args") )
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "$daemon_boolean_options $daemon_options_with_args $top_level_options_with_args --help -h --no-ansi --verbose --version -v" -- "$cur" ) )
;;
*)
COMPREPLY=( $( compgen -W "${commands[*]}" -- "$cur" ) )
;;
esac
}
_docker_compose_down() {
case "$prev" in
--rmi)
COMPREPLY=( $( compgen -W "all local" -- "$cur" ) )
return
;;
--timeout|-t)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --rmi --timeout -t --volumes -v --remove-orphans" -- "$cur" ) )
;;
esac
}
_docker_compose_events() {
case "$prev" in
--json)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --json" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_exec() {
case "$prev" in
--index|--user|-u|--workdir|-w)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-d --detach --help --index --privileged -T --user -u --workdir -w" -- "$cur" ) )
;;
*)
__docker_compose_complete_running_services
;;
esac
}
_docker_compose_help() {
COMPREPLY=( $( compgen -W "${commands[*]}" -- "$cur" ) )
}
_docker_compose_images() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --quiet -q" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_kill() {
case "$prev" in
-s)
COMPREPLY=( $( compgen -W "SIGHUP SIGINT SIGKILL SIGUSR1 SIGUSR2" -- "$(echo $cur | tr '[:lower:]' '[:upper:]')" ) )
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help -s" -- "$cur" ) )
;;
*)
__docker_compose_complete_running_services
;;
esac
}
_docker_compose_logs() {
case "$prev" in
--tail)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--follow -f --help --no-color --no-log-prefix --tail --timestamps -t" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_pause() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
;;
*)
__docker_compose_complete_running_services
;;
esac
}
_docker_compose_port() {
case "$prev" in
--protocol)
COMPREPLY=( $( compgen -W "tcp udp" -- "$cur" ) )
return;
;;
--index)
return;
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --index --protocol" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_ps() {
local key=$(__docker_compose_map_key_of_current_option '--filter')
case "$key" in
source)
COMPREPLY=( $( compgen -W "build image" -- "${cur##*=}" ) )
return
;;
status)
COMPREPLY=( $( compgen -W "paused restarting running stopped" -- "${cur##*=}" ) )
return
;;
esac
case "$prev" in
--filter)
COMPREPLY=( $( compgen -W "source status" -S "=" -- "$cur" ) )
__docker_compose_nospace
return;
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--all -a --filter --help --quiet -q --services" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_pull() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --ignore-pull-failures --include-deps --no-parallel --quiet -q" -- "$cur" ) )
;;
*)
__docker_compose_complete_services --filter source=image
;;
esac
}
_docker_compose_push() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --ignore-push-failures" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_restart() {
case "$prev" in
--timeout|-t)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --timeout -t" -- "$cur" ) )
;;
*)
__docker_compose_complete_running_services
;;
esac
}
_docker_compose_rm() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--force -f --help --stop -s -v" -- "$cur" ) )
;;
*)
if __docker_compose_has_option "--stop|-s" ; then
__docker_compose_complete_services
else
__docker_compose_complete_services --filter status=stopped
fi
;;
esac
}
_docker_compose_run() {
case "$prev" in
-e)
COMPREPLY=( $( compgen -e -- "$cur" ) )
__docker_compose_nospace
return
;;
--entrypoint|--label|-l|--name|--user|-u|--volume|-v|--workdir|-w)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--detach -d --entrypoint -e --help --label -l --name --no-deps --publish -p --rm --service-ports -T --use-aliases --user -u --volume -v --workdir -w" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_scale() {
case "$prev" in
=)
COMPREPLY=("$cur")
return
;;
--timeout|-t)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --timeout -t" -- "$cur" ) )
;;
*)
COMPREPLY=( $(compgen -S "=" -W "$(__docker_compose_services)" -- "$cur") )
__docker_compose_nospace
;;
esac
}
_docker_compose_start() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
;;
*)
__docker_compose_complete_services --filter status=stopped
;;
esac
}
_docker_compose_stop() {
case "$prev" in
--timeout|-t)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --timeout -t" -- "$cur" ) )
;;
*)
__docker_compose_complete_running_services
;;
esac
}
_docker_compose_top() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
;;
*)
__docker_compose_complete_running_services
;;
esac
}
_docker_compose_unpause() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
;;
*)
__docker_compose_complete_services --filter status=paused
;;
esac
}
_docker_compose_up() {
case "$prev" in
=)
COMPREPLY=("$cur")
return
;;
--exit-code-from)
__docker_compose_complete_services
return
;;
--scale)
COMPREPLY=( $(compgen -S "=" -W "$(__docker_compose_services)" -- "$cur") )
__docker_compose_nospace
return
;;
--timeout|-t)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--abort-on-container-exit --always-recreate-deps --attach-dependencies --build -d --detach --exit-code-from --force-recreate --help --no-build --no-color --no-deps --no-log-prefix --no-recreate --no-start --renew-anon-volumes -V --remove-orphans --scale --timeout -t" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_version() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--short" -- "$cur" ) )
;;
esac
}
_docker_compose() {
local previous_extglob_setting=$(shopt -p extglob)
shopt -s extglob
local commands=(
build
config
create
down
events
exec
help
images
kill
logs
pause
port
ps
pull
push
restart
rm
run
scale
start
stop
top
unpause
up
version
)
# Options for the docker daemon that have to be passed to secondary calls to
# docker-compose executed by this script.
local daemon_boolean_options="
--skip-hostname-check
--tls
--tlsverify
"
local daemon_options_with_args="
--context -c
--env-file
--file -f
--host -H
--project-directory
--project-name -p
--tlscacert
--tlscert
--tlskey
"
# These options are require special treatment when searching the command.
local top_level_options_with_args="
--ansi
--log-level
"
COMPREPLY=()
local cur prev words cword
_get_comp_words_by_ref -n : cur prev words cword
# search subcommand and invoke its handler.
# special treatment of some top-level options
local command='docker_compose'
local top_level_options=()
local counter=1
while [ $counter -lt $cword ]; do
case "${words[$counter]}" in
$(__docker_compose_to_extglob "$daemon_boolean_options") )
local opt=${words[counter]}
top_level_options+=($opt)
;;
$(__docker_compose_to_extglob "$daemon_options_with_args") )
local opt=${words[counter]}
local arg=${words[++counter]}
top_level_options+=($opt $arg)
;;
$(__docker_compose_to_extglob "$top_level_options_with_args") )
(( counter++ ))
;;
-*)
;;
*)
command="${words[$counter]}"
break
;;
esac
(( counter++ ))
done
local completions_func=_docker_compose_${command//-/_}
declare -F $completions_func >/dev/null && $completions_func
eval "$previous_extglob_setting"
return 0
}
eval "$__docker_compose_previous_extglob_setting"
unset __docker_compose_previous_extglob_setting
complete -F _docker_compose docker-compose docker-compose.exe

View File

@@ -0,0 +1,4 @@
---
dependencies:
- role: detect_shell

View File

@@ -0,0 +1,15 @@
---
- when: shell == '/bin/bash'
block:
- name: Update .bash_completion file
copy:
src: .bash_completion
dest: ~/.bash_completion
mode: "600"
- name: Update custom bash completions
copy:
src: .bin/
dest: ~/.bin/
mode: "600"

View File

@@ -0,0 +1,10 @@
---
- name: Detect shell
shell: "echo $SHELL"
register: shell
changed_when: false
- name: Set shell fact
set_fact:
shell: "{{ shell.stdout }}"

View File

@@ -0,0 +1,4 @@
---
dependencies:
- role: detect_shell

View File

@@ -0,0 +1,48 @@
---
- name: Clone dotfiles repository
git:
repo: "https://github.com/chylex/dotfiles.git"
dest: ~/.dotfiles
single_branch: true
recursive: false
register: dotfiles
- when: dotfiles.changed and shell == '/bin/bash'
block:
- name: Load .bashrc contents
slurp:
src: ~/.dotfiles/.bashrc
register: bashrc
- name: Update .bashrc file
blockinfile:
block: "{{ bashrc.content | b64decode }}"
dest: ~/.bashrc
marker: "# {mark} CHYLEX DOTFILES"
mode: "644"
create: true
- when: dotfiles.changed
block:
- name: Update .vimrc file
copy:
remote_src: true
src: ~/.dotfiles/.vimrc
dest: ~/.vimrc
mode: "600"
- name: Update .vim folder
copy:
remote_src: true
directory_mode: true
src: ~/.dotfiles/.vim
dest: ~/
mode: "700"
- name: Update .tmux.conf file
copy:
remote_src: true
src: ~/.dotfiles/.tmux.conf
dest: ~/.tmux.conf
mode: "600"

View File

@@ -0,0 +1,30 @@
---
- name: Install and update vim plugins
git:
repo: "{{ item.repo }}"
dest: "~/.vim/pack/plugins/start/{{ item.name }}"
single_branch: true
recursive: false
loop:
- { name: "camelcasemotion" , repo: "https://github.com/vim-scripts/camelcasemotion" }
- { name: "easymotion" , repo: "https://github.com/easymotion/vim-easymotion.git" }
- { name: "highlighted-yank" , repo: "https://github.com/machakann/vim-highlightedyank.git" }
- { name: "indent-object" , repo: "https://github.com/michaeljsmith/vim-indent-object.git" }
- { name: "lightline" , repo: "https://github.com/itchyny/lightline.vim.git" }
- { name: "paragraph-motion" , repo: "https://github.com/dbakker/vim-paragraph-motion.git" }
- { name: "rainbow" , repo: "https://github.com/luochen1990/rainbow.git" }
- { name: "repeat" , repo: "https://github.com/tpope/vim-repeat.git" }
- { name: "sleuth" , repo: "https://github.com/tpope/vim-sleuth.git" }
- { name: "surround" , repo: "https://github.com/tpope/vim-surround.git" }
- { name: "visual-multi" , repo: "https://github.com/mg979/vim-visual-multi.git" }
- { name: "visual-star-search" , repo: "https://github.com/nelstrom/vim-visual-star-search.git" }
loop_control:
label: "{{ item.name }}"
- name: Delete unused vim plugins
file:
path: "~/.vim/pack/plugins/start/{{ item }}"
state: absent
loop:
- "replace-with-register"