Compare commits

...

4 commits

Author SHA1 Message Date
29e053af75
Add Neovim config 2026-08-06 23:56:13 +02:00
5a2f500fca
profile: Set dark theme for Gtk, use qt6ct for Qt styling 2026-08-01 17:16:15 +02:00
4a079ad19d
dotfiles script v0.5.3
Change indentation from tabs to spaces.
2026-08-01 17:14:49 +02:00
b197b7e2bc
Normalize indentation to spaces 2026-08-01 17:13:37 +02:00
14 changed files with 714 additions and 457 deletions

View file

@ -30,6 +30,11 @@ vimdiff() {
stty "$STTYOPTS" stty "$STTYOPTS"
} }
# Neovim shortcuts
alias nv='nvim'
alias nvimr='nvim -R'
alias nvim-config='nvim ~/.config/nvim/init.lua'
# yay without parameters does "pacman -Syu" but I don't want it to do this # yay without parameters does "pacman -Syu" but I don't want it to do this
yay() { yay() {
[[ $# -gt 0 ]] || { echo "error: no operation specified (use -h for help)"; return 1; } [[ $# -gt 0 ]] || { echo "error: no operation specified (use -h for help)"; return 1; }
@ -54,6 +59,7 @@ function cdll() {
} }
# Show content of something, `ls` for dirs (and special files), `cat` for files # Show content of something, `ls` for dirs (and special files), `cat` for files
# TODO: actually `highlight` for fancy colors
function lscat() { function lscat() {
[[ $# -eq 0 ]] && ls -la && return [[ $# -eq 0 ]] && ls -la && return
printnewline="" printnewline=""

128
.config/nvim/init.lua Normal file
View file

@ -0,0 +1,128 @@
-- Config shortcuts
local o = vim.o
local opt = vim.opt
local keymap = vim.keymap
------------------
-- GENERAL OPTIONS
------------------
-- Line numbers
o.number = true
o.relativenumber = true
-- Highlight the cursor line
o.cursorline = true
-- Amount of screen lines that should be visible above/below the cursor
o.scrolloff = 8
-- Show tabs and trailing spaces
o.list = true
-- Wrap lines at word boundaries
o.linebreak = true
-- Case insensitive search (except when explicitly using uppercase letters)
o.ignorecase = true
o.smartcase = true
-- Indentation settings
o.smartindent = true
o.expandtab = true
o.shiftwidth = 4
o.softtabstop = -1
-- Don't auto-insert comment leader when entering insert mode with o/O
vim.api.nvim_create_autocmd('FileType', {
command = 'set formatoptions-=o',
})
-------------
-- FILE TYPES
-------------
vim.filetype.add {
extension = {
gitconfig = 'gitconfig',
},
}
-- HTML formatting
vim.g.html_indent_autotags = 'html,body'
vim.g.html_indent_inctags = 'p'
-----------
-- MAPPINGS
-----------
-- For keys that are safe to be mapped, see: https://vim.fandom.com/wiki/Unused_keys
-- Exit insert mode with jk
keymap.set('i', 'jk', '<Esc>')
-- Quick exit with Ctrl-q
keymap.set('n', '<C-q>', ':q<CR>')
-- Quick save all open buffers with Ctrl-s
keymap.set('n', '<C-s>', ':wall<CR>')
keymap.set('i', '<C-s>', '<C-o>:wall<CR>')
-- Simple copy and paste to/from system clipboard with Ctrl-c in visual mode
-- and Ctrl-v in insert mode
keymap.set('v', '<C-c>', '"+y')
keymap.set('i', '<C-v>', '<C-\\><C-o>"+P')
-- Navigate between windows with Alt and hjkl
keymap.set('n', '<A-h>', '<C-w>h')
keymap.set('n', '<A-j>', '<C-w>j')
keymap.set('n', '<A-k>', '<C-w>k')
keymap.set('n', '<A-l>', '<C-w>l')
-- Resize windows with Alt and arrow keys
keymap.set('n', '<A-Up>', '<C-w>2-')
keymap.set('n', '<A-Down>', '<C-w>2+')
keymap.set('n', '<A-Left>', '<C-w>4<')
keymap.set('n', '<A-Right>', '<C-w>4>')
-- Shortcuts for jumping to start of line (H) or end of line (L)
keymap.set({'n', 'x'}, 'H', '^')
keymap.set({'n', 'x'}, 'L', '$')
-- Use comma (,) as a "modifier prefix" for alternative functions of regular
-- commands (e.g. yank to system clipboard) or for random shortcuts.
-- TODO: Comma or semicolon or single quote?
keymap.set({'n', 'x'}, ',', '<Nop>')
-- Prefix yank/delete/change/paste commands with "," to use system clipboard
keymap.set({'n', 'x'}, ',y', '"+y')
keymap.set({'n', 'x'}, ',Y', '"+y$')
keymap.set({'n', 'x'}, ',d', '"+d')
keymap.set({'n', 'x'}, ',D', '"+D')
keymap.set({'n', 'x'}, ',c', '"+c')
keymap.set({'n', 'x'}, ',C', '"+C')
keymap.set({'n', 'x'}, ',p', '"+p')
keymap.set({'n', 'x'}, ',P', '"+P')
-- Insert empty line(s) below or above current line without moving the cursor
keymap.set('n', ',o', function()
local line = vim.api.nvim_win_get_cursor(0)[1]
local repeated = vim.fn['repeat']({''}, vim.v.count1)
vim.api.nvim_buf_set_lines(0, line, line, true, repeated)
end)
keymap.set('n', ',O', function()
local line = vim.api.nvim_win_get_cursor(0)[1] - 1
local repeated = vim.fn['repeat']({''}, vim.v.count1)
vim.api.nvim_buf_set_lines(0, line, line, true, repeated)
end)
----------
-- PLUGINS
----------
require('init.theme')
require('init.plugins')

View file

@ -0,0 +1,103 @@
-- Config shortcuts
local keymap = vim.keymap
local vr = vim.version.range
------------------
-- INSTALL PLUGINS
------------------
vim.pack.add {
-- Better code completion
{ src = 'https://github.com/saghen/blink.cmp', version = vr '1.*' },
-- Better marks
'https://github.com/chentoast/marks.nvim',
-- Surround selections with quotes etc.
{ src = 'https://github.com/kylechui/nvim-surround', version = vr '4.*' },
-- Substitute and exchange operator
'https://github.com/gbprod/substitute.nvim',
-- Highlight todo comments
'https://github.com/folke/todo-comments.nvim',
-- Highlight colors (hex codes etc.)
'https://github.com/brenoprata10/nvim-highlight-colors',
}
---------------------
-- INITIALIZE PLUGINS
---------------------
-- Better code completion
require('blink.cmp').setup {
keymap = {
preset = 'super-tab',
},
cmdline = {
keymap = {
preset = 'inherit',
['<Tab>'] = {
'show',
'select_and_accept',
'fallback',
},
},
completion = {
menu = { auto_show = true },
},
},
}
-- Better marks
require('marks').setup {
-- Show builtin marks in gutter: last jump position (`), last change (.),
-- last selection in visual mode (</>).
-- TODO: See which of those are really helpful and remove the others.
builtin_marks = { '`', '.', '<', '>' },
}
-- Surround selections with quotes etc.
require('nvim-surround').setup {}
-- Substitute and exchange operator
local substitute = require('substitute')
substitute.setup {}
-- ... Use "s" key for substitute (by default "s" is equivalent to "cl")
keymap.set('n', 's', substitute.operator)
keymap.set('n', 'ss', substitute.line)
keymap.set('n', 'S', substitute.eol)
keymap.set('x', 's', substitute.visual)
-- ... Prefix with "," to use system clipboard (remap to use the substitute mappings above)
keymap.set({'n', 'x'}, ',s', '"+s', { remap = true })
keymap.set({'n', 'x'}, ',S', '"+S', { remap = true })
-- Highlight todo comments
require('todo-comments').setup {
-- Disable gutter icons
signs = false,
-- Customize highlighting
highlight = {
before = '',
-- By default ("wide"), the surrounding space and colon are highlighted too,
-- which makes the colon invisible
keyword = 'bg',
after = 'fg',
-- Highlight keywords always, not just when followed by a colon (the default)
pattern = '<(KEYWORDS)>',
},
}
-- Highlight colors (hex codes etc.)
require('nvim-highlight-colors').setup {}

View file

@ -0,0 +1,36 @@
-- Install theme plugins
vim.pack.add {
{ src = 'https://github.com/rebelot/kanagawa.nvim', name = 'kanagawa' },
-- { src = 'https://github.com/rose-pine/neovim', name = 'rose-pine' },
-- { src = 'https://github.com/nickkadutskyi/jb.nvim', name = 'jetbrains-theme' },
}
-- Initialize and customize themes
require('kanagawa').setup {
-- Compile colorscheme for fast startup times.
-- Note: When changing the theme, make sure to run `:KanagawaCompile` afterwards!
compile = true,
-- Dim inactive windows
dimInactive = true,
-- Customize colors
colors = {
theme = {
all = {
ui = {
-- Disable background of gutter (line numbers etc.)
bg_gutter = 'none',
},
},
},
},
}
--require('rose-pine').setup {}
--require('jb').setup {}
-- Enable theme
vim.cmd.colorscheme('kanagawa')
--vim.cmd.colorscheme('rose-pine')
--vim.cmd.colorscheme('jb')

View file

@ -0,0 +1,34 @@
{
"plugins": {
"blink.cmp": {
"rev": "78336bc89ee5365633bcf754d93df01678b5c08f",
"src": "https://github.com/saghen/blink.cmp",
"version": "1.0.0 - 2.0.0"
},
"kanagawa": {
"rev": "bb85e4bfc8d89b0e62c8fa53ccdd13d12e2f77b3",
"src": "https://github.com/rebelot/kanagawa.nvim"
},
"marks.nvim": {
"rev": "f353e8c08c50f39e99a9ed474172df7eddd89b72",
"src": "https://github.com/chentoast/marks.nvim"
},
"nvim-highlight-colors": {
"rev": "e4c7af0211866162d999ce0bdd6a029302e19139",
"src": "https://github.com/brenoprata10/nvim-highlight-colors"
},
"nvim-surround": {
"rev": "2e93e154de9ff326def6480a4358bfc149d5da2c",
"src": "https://github.com/kylechui/nvim-surround",
"version": "4.0.0 - 5.0.0"
},
"substitute.nvim": {
"rev": "0d2077398552f069abccbd964a26dd7cd26882cd",
"src": "https://github.com/gbprod/substitute.nvim"
},
"todo-comments.nvim": {
"rev": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668",
"src": "https://github.com/folke/todo-comments.nvim"
}
}
}

View file

@ -14,3 +14,10 @@ export WINEDLLOVERRIDES=winemenubuilder.exe=d
# Firefox: Enable pixel-perfect scrolling # Firefox: Enable pixel-perfect scrolling
export MOZ_USE_XINPUT2=1 export MOZ_USE_XINPUT2=1
# Set dark theme for Gtk applications
export GTK_THEME=Adwaita:dark
# Use qt6ct to configure Qt styling
# (You should install qt6ct-kde from AUR, as well as the breeze theme.)
export QT_QPA_PLATFORMTHEME=qt6ct

149
.vimrc
View file

@ -1,9 +1,24 @@
" Visual settings " Visual settings
set t_Co=16 set t_Co=16
set bg=dark set bg=dark
set number
highlight LineNr ctermfg=darkgrey highlight LineNr ctermfg=darkgrey
" Disable beeping on console
set belloff=all
" Mouse settings
set mouse=a
" Line numbers
set number
set relativenumber
" Amount of screen lines that should be visible above/below the cursor
set scrolloff=5
" Wrap lines at word boundaries
set linebreak
" Syntax highlighting " Syntax highlighting
syntax on syntax on
set hlsearch set hlsearch
@ -12,12 +27,11 @@ set hlsearch
set ignorecase set ignorecase
set smartcase set smartcase
" Indentation options (yeah let's switch to spaces instead of tabs I guess...) " Indentation settings
set autoindent set smartindent
set expandtab set expandtab
set shiftwidth=4 set shiftwidth=4
set tabstop=4 set softtabstop=-1
set softtabstop=4
" Activate filetype plugin (e.g. for automatically using tabs instead of spaces in Makefiles) " Activate filetype plugin (e.g. for automatically using tabs instead of spaces in Makefiles)
filetype plugin on filetype plugin on
@ -29,120 +43,49 @@ autocmd BufNewFile,BufRead *.rasi set syntax=scss
" Indentation for YAML (use 2 spaces) " Indentation for YAML (use 2 spaces)
autocmd FileType yml,yaml setlocal sts=2 sw=2 autocmd FileType yml,yaml setlocal sts=2 sw=2
" Mouse settings
set mouse=a
" Disable beeping on console
set belloff=all
" Do not insert comment leader when entering insert mode with 'o'/'O' in comment line " Do not insert comment leader when entering insert mode with 'o'/'O' in comment line
autocmd BufNewFile,BufRead * set formatoptions-=o autocmd BufNewFile,BufRead * set formatoptions-=o
" clang autocomplete: do not open completion box automatically
let g:clang_complete_auto=0
" Disable middle mouse button paste when in normal mode
map <MiddleMouse> <Nop>
map <2-MiddleMouse> <Nop>
map <3-MiddleMouse> <Nop>
map <4-MiddleMouse> <Nop>
" Keyboard mappings " Keyboard mappings
" ----------------- " -----------------
nnoremap <C-L> :nohl<CR>:diffupdate<CR><C-L>
nnoremap <C-l> :nohl<CR>:diffupdate<CR><C-l>
set pastetoggle=<F2> set pastetoggle=<F2>
" Toggle line numbers " Exit insert mode with jk
nnoremap <F3> :set number!<CR> inoremap jk <Esc>
" If the current buffer has never been saved, it will have no name, " Quick exit with Ctrl-q
" call the file browser to save it, otherwise just save it. nnoremap <C-q> :q<CR>
command! -nargs=0 -bar Update if &modified nnoremap Q <Nop>
\| if empty(bufname('%'))
\| browse confirm write
\| else
\| confirm write
\| endif
\|endif
" Bind <C-S> to save " Quick save all open buffers with Ctrl-S
nnoremap <silent> <C-s> :<C-u>Update<CR> nnoremap <C-s> :wall<CR>
inoremap <C-s> <C-o>:Update<CR> inoremap <C-s> <C-o>:wall<CR>
" Simple copy and paste to/from system clipboard with Ctrl-c in visual mode
" and Ctrl-v in insert mode
vnoremap <C-c> "+y
inoremap <C-v> <C-\><C-o>"+P
" sudo-write with :w!! " sudo-write with :w!!
cnoremap w!! w !sudo tee >/dev/null % cnoremap w!! w !sudo tee >/dev/null %
" Edit (\ev) and reload (\rv) .vimrc (reload .gvimrc if running gvim)
nnoremap <leader>ev :split $MYVIMRC<CR>
if has('gui_running')
nnoremap <leader>rv :source $MYVIMRC<CR>:source $MYGVIMRC<CR>
else
nnoremap <leader>rv :source $MYVIMRC<CR>
endif
" Split line at cursor with <C-J> (as opposite of <Shift-J> for join lines)
nnoremap <C-J> i<CR><Esc>k$
" Easier buffer switching
" -----------------------
" Mappings to access buffers (don't use "\p" because a
" delay before pressing "p" would accidentally paste).
" \l : list buffers
" \b \n \g : go back/forward/last-used
" \1 \2 \3 : go to buffer 1/2/3 etc
nnoremap <Leader>l :ls<CR>
nnoremap <Leader>b :bp<CR>
nnoremap <Leader>n :bn<CR>
nnoremap <Leader>g :e#<CR>
nnoremap <Leader>1 :1b<CR>
nnoremap <Leader>2 :2b<CR>
nnoremap <Leader>3 :3b<CR>
nnoremap <Leader>4 :4b<CR>
nnoremap <Leader>5 :5b<CR>
nnoremap <Leader>6 :6b<CR>
nnoremap <Leader>7 :7b<CR>
nnoremap <Leader>8 :8b<CR>
nnoremap <Leader>9 :9b<CR>
nnoremap <Leader>0 :10b<CR>
" Compiling and making
nnoremap <F9> :up<CR>:make<CR>:redraw! \| cw<CR>
nnoremap <F10> :up<CR>:make run<CR>:redraw! \| cw<CR>
" Tab buffers
nnoremap <F12> :tab ball<CR>
" Tab movement " Tab movement
noremap <A-[> :-tabmove<CR> noremap <A-[> :-tabmove<CR>
noremap <A-]> :+tabmove<CR> noremap <A-]> :+tabmove<CR>
" Use comma (,) as a "modifier prefix" for alternative functions of regular
" commands (e.g. yank to system clipboard) or for random shortcuts.
noremap , <Nop>
" -- Shortcuts for insert mode " Prefix yank/delete/change/paste commands with "," to use system clipboard
" Exit insert mode noremap ,y "+y
imap ,, <ESC> noremap ,Y "+y$
imap jk <ESC> noremap ,d "+d
inoremap <A-,> <ESC> noremap ,D "+D
noremap ,c "+c
" Quick movement with Alt-h/j/k/l noremap ,C "+C
inoremap <A-h> <C-o>h noremap ,p "+p
inoremap <A-j> <C-o>j noremap ,P "+P
inoremap <A-k> <C-o>k
inoremap <A-l> <C-o>l
" Unindent with Shift-Tab
inoremap <S-Tab> <C-o><<
" Copy to and paste from X clipboard (Ctrl-C in visual mode and Ctrl-V in insert mode)
vmap <C-C> "+y
imap <C-V> <C-\><C-O>"+P
" Undo in insert mode with Ctrl-U
imap <C-U> <C-O>u
" Quick exit
map Q :qa<CR>
" Because I always type q: too fast, which opens the command history...
map q: :q

View file

@ -2,11 +2,11 @@
## ##
## binaryDiv's dotfiles management script ## binaryDiv's dotfiles management script
## Version 0.5.2 ## Version 0.5.3
## ##
usage() { usage() {
cat <<- END_OF_HELPTEXT cat << END_OF_HELPTEXT
Usage: $(basename $0) COMMAND [...] Usage: $(basename $0) COMMAND [...]
Manage dotfiles via git. Manage dotfiles via git.
@ -37,7 +37,7 @@ usage() {
Synchronization: Synchronization:
git ARGS... wrapper for git (all arguments are passed on to git) git ARGS... wrapper for git (all arguments are passed on to git)
pull shortcut for git pull pull shortcut for git pull
END_OF_HELPTEXT END_OF_HELPTEXT
} }
@ -314,7 +314,7 @@ case "$cmd" in
;; ;;
bash-completion) bash-completion)
cat <<- 'END_OF_BASHCOMPLETION' cat << 'END_OF_BASHCOMPLETION'
_dotfiles_filenames() { _dotfiles_filenames() {
compopt -o filenames compopt -o filenames
files=($(compgen -f -X '*/@(.|..|.git)' .dotfiles/$cur)) files=($(compgen -f -X '*/@(.|..|.git)' .dotfiles/$cur))
@ -365,7 +365,7 @@ case "$cmd" in
} }
complete -F _dotfiles dotfiles complete -F _dotfiles dotfiles
END_OF_BASHCOMPLETION END_OF_BASHCOMPLETION
;; ;;
*) *)