master still carried the 2021 tree. Task 6 does a checkout over $HOME, so nine of those files would have overwritten the current configuration rather than updated it - i3, sway, dunst, nvim, vim and tmux, all diverged by years. The plan had no step for this; the design warned about it and then nothing implemented the warning. The nine are now taken from the live machine verbatim, and the 31 files with no counterpart there are dropped. Everything remains on archive/2021-i3-sway. README.md and .scripts/install.sh are kept despite having no live counterpart: the first documents the repository and the second is what ls.shron.de/dotconf serves, so deleting it would break that link. Verified byte-identical to the live files afterwards, which is the point - a checkout on this machine must change nothing. KDE has been in daily use for a while with nothing backing it up. Eighteen rc files and the nine autostart entries are added: window rules and shortcuts, notification behaviour, the lock screen, and the panel layout in plasma-org.kde.plasma.desktop-appletsrc. That last one is rewritten by plasmashell whenever anything moves, so it will produce churn - kept anyway, since a lost panel layout is the most tedious thing here to rebuild by hand. .config/kdeconnect/ is excluded rather than added. It holds the device certificate and its private key, and is pairing state rather than configuration - the only place under .config that carries a secret. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
298 lines
9.4 KiB
VimL
298 lines
9.4 KiB
VimL
set mouse=
|
|
call plug#begin('~/.config/nvim/plugged')
|
|
|
|
" Plugins {
|
|
" neo-tree is a file finder.
|
|
"Plug 'nvim-neo-tree/neo-tree.nvim'
|
|
" Requirement for neo-tree
|
|
"Plug 'nvim-lua/plenary.nvim'
|
|
"Plug 'nvim-tree/nvim-web-devicons'
|
|
"Plug 'MunifTanjim/nui.nvim'
|
|
" airline is a better status line and a tab-bar for nvim.
|
|
Plug 'bling/vim-airline'
|
|
" gruvbox colorscheme. Seems to work the best for me.
|
|
Plug 'morhetz/gruvbox'
|
|
" neomake is a code linting tool that runs in the background.
|
|
Plug 'neomake/neomake'
|
|
"autocompletion Plugin for Code autocomplete
|
|
Plug 'zchee/deoplete-jedi'
|
|
" Left side File Tree
|
|
Plug 'scrooloose/nerdtree'
|
|
" Adds filetype-specific icons to NERDTree files and folders,
|
|
Plug 'ryanoasis/vim-devicons'
|
|
" Adds syntax highlighting to NERDTree based on filetype.
|
|
Plug 'tiagofumo/vim-nerdtree-syntax-highlight'
|
|
"
|
|
" fzf fuzzy finder for the current directory
|
|
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
|
|
" whichkey shows with space which keys you can press
|
|
Plug 'folke/which-key.nvim'
|
|
" firenvim ist ein socket um den browser editor durch nvim zu ersetzen
|
|
Plug 'glacambre/firenvim', { 'do': { _ -> firenvim#install(0) } }
|
|
" install with nvim +PlugInstall +qall
|
|
" update with nvim +PlugUpgrade +PlugUpdate +PlugClean +qall
|
|
" you can also update it in nvim with syntax autocompletion and stuff - simply
|
|
" call PlugUpdate as an example
|
|
" }
|
|
|
|
call plug#end()
|
|
|
|
" Map the leader key to ,
|
|
let mapleader="\<SPACE>"
|
|
|
|
" General {
|
|
set noautoindent " I indent my code myself.
|
|
set nocindent " I indent my code myself.
|
|
"set smartindent " Or I let the smartindent take care of it.
|
|
set breakindent " Indent line-breaks at the same level as code.
|
|
set ttimeoutlen=100
|
|
set fileencoding=utf-8
|
|
set fileencodings=utf-8,gbk,chinese,cp936,gb18030,utf-16le,utf-16,big5,euc-jp,euc-kr,latin-1
|
|
" }
|
|
|
|
" Search {
|
|
set ignorecase " Make searching case insensitive
|
|
set smartcase " ... unless the query has capital letters.
|
|
set gdefault " Use 'g' flag by default with :s/foo/bar/.
|
|
|
|
" Use <C-L> to clear the highlighting of :set hlsearch.
|
|
if maparg('<C-L>', 'n') ==# ''
|
|
nnoremap <silent> <C-L> :nohlsearch<CR><C-L>
|
|
endif
|
|
" }
|
|
|
|
" Spellcorrection {
|
|
setlocal spell spelllang=en_us
|
|
"setlocal spell spelllang=de_20
|
|
map <F7> :setlocal spell spelllang=de_20 <return>
|
|
map <F8> :setlocal spell spelllang=en_us <return>
|
|
map <F9> :w!<CR>:!aspell check %<CR>:e! %<CR>
|
|
|
|
|
|
" Formatting {
|
|
set showmatch " Show matching brackets.
|
|
set number relativenumber " Show the line numbers on the left side.
|
|
set formatoptions+=o " Continue comment marker in new lines.
|
|
set expandtab " Insert spaces when TAB is pressed.
|
|
set tabstop=4 " Render TABs using this many spaces.
|
|
set shiftwidth=4 " Indentation amount for < and > commands.
|
|
|
|
set nojoinspaces " Prevents inserting two spaces after punctuation on a join (J)
|
|
|
|
" More natural splits
|
|
set splitbelow " Horizontal split below current.
|
|
set splitright " Vertical split to right of current.
|
|
|
|
if !&scrolloff
|
|
set scrolloff=3 " Show next 3 lines while scrolling.
|
|
endif
|
|
if !&sidescrolloff
|
|
set sidescrolloff=5 " Show next 5 columns while side-scrolling.
|
|
endif
|
|
set nostartofline " Do not jump to first character with page commands.
|
|
|
|
" Tell Vim which characters to show for expanded TABs,
|
|
" trailing whitespace, and end-of-lines. VERY useful!
|
|
if &listchars ==# 'eol:$'
|
|
set listchars=tab:>\ ,trail:-,extends:>,precedes:<,nbsp:+
|
|
endif
|
|
set list " Show problematic characters.
|
|
" }
|
|
|
|
" Configuration {
|
|
set autochdir " Switch to current file's parent directory.
|
|
|
|
" Remove special characters for filename
|
|
set isfname-=:
|
|
set isfname-==
|
|
set isfname-=+
|
|
|
|
" Map ; to :
|
|
nnoremap ; :
|
|
|
|
" Path/file expansion in colon-mode.
|
|
set wildmode=list:longest
|
|
|
|
" Allow color schemes to do bright colors without forcing bold.
|
|
if &t_Co == 8 && $TERM !~# '^linux'
|
|
set t_Co=16
|
|
endif
|
|
|
|
" Remove trailing spaces.
|
|
function! TrimWhitespace()
|
|
let l:save = winsaveview()
|
|
%s/\s\+$//e
|
|
call winrestview(l:save)
|
|
endfunction
|
|
" FIXME: Do not call this on makefile and sv files.
|
|
autocmd BufWritePre * call TrimWhitespace()
|
|
nnoremap <leader>W :call TrimWhitespace()<CR>
|
|
|
|
" Diff options
|
|
set diffopt+=iwhite
|
|
|
|
"Enter to go to EOF and backspace to go to start
|
|
"nnoremap <CR> G
|
|
"nnoremap <BS> gg
|
|
" Stop cursor from jumping over wrapped lines
|
|
nnoremap j gj
|
|
nnoremap k gk
|
|
" Make HOME and END behave like shell
|
|
"inoremap <C-E> <End>
|
|
"inoremap <C-A> <Home>
|
|
" }
|
|
|
|
" UI Options {
|
|
" Colorscheme options.
|
|
set bg=dark
|
|
colorscheme gruvbox
|
|
|
|
" Also highlight all tabs and trailing whitespace characters.
|
|
highlight ExtraWhitespace ctermbg=darkgreen guibg=darkgreen
|
|
match ExtraWhitespace /\s\+$\|\t/
|
|
|
|
" Relative numbering
|
|
function! NumberToggle()
|
|
if(&relativenumber == 1)
|
|
set nornu
|
|
set number
|
|
else
|
|
set rnu
|
|
endif
|
|
endfunc
|
|
|
|
" Toggle between normal and relative numbering.
|
|
nnoremap <leader>r :call NumberToggle()<cr>
|
|
|
|
" Opaque Background (Comment out to use terminal's profile)
|
|
"set termguicolors
|
|
|
|
" Transparent Background (For i3 and compton)
|
|
"highlight Normal guibg=NONE ctermbg=NONE
|
|
"highlight LineNr guibg=NONE ctermbg=NONE
|
|
" }
|
|
|
|
" Keybindings {
|
|
" Save file
|
|
nnoremap <Leader>w :w<CR>
|
|
|
|
" Copy and paste from system clipboard (Might require xsel/xclip install)
|
|
vmap <Leader>y "+y
|
|
vmap <Leader>d "+d
|
|
nmap <Leader>p "+p
|
|
nmap <Leader>P "+P
|
|
vmap <Leader>p "+p
|
|
vmap <Leader>P "+P
|
|
|
|
" Move between buffers
|
|
nmap <Leader>h :bprevious<CR>
|
|
|
|
" Switch between Buffers
|
|
map <C-j> <C-w>j<C-w>_
|
|
map <C-k> <C-w>k<C-w>_
|
|
map <C-h> <C-w>h<C-w>_
|
|
map <C-l> <C-w>l<C-w>_
|
|
|
|
" Switch between tabs
|
|
map <A-h> :tabprevious<CR>
|
|
map <A-l> :tabnext<CR>
|
|
|
|
" Go to tab by number
|
|
noremap <A-1> 1gt
|
|
noremap <A-2> 2gt
|
|
noremap <A-3> 3gt
|
|
noremap <A-4> 4gt
|
|
noremap <A-5> 5gt
|
|
noremap <A-6> 6gt
|
|
noremap <A-7> 7gt
|
|
noremap <A-8> 8gt
|
|
noremap <A-9> 9gt
|
|
noremap <A-0> :tablast<cr>
|
|
|
|
" Open init.vim
|
|
map <silent> <leader>ee :e $HOME/.config/nvim/init.vim<cr>
|
|
|
|
" Open a File in new Tab
|
|
map <silent> <leader>t :tabnew
|
|
" }
|
|
|
|
|
|
" Experimental {
|
|
" Search and Replace
|
|
nmap <Leader>s :%s//g<Left><Left>
|
|
" write files as root (if you've forgotten to open it as root
|
|
" simply do :W instead of :w
|
|
command W :execute ':silent w !sudo tee % > /dev/null' | :edit!
|
|
" }
|
|
|
|
" Plugin Settings {
|
|
" Plug {
|
|
autocmd VimEnter *
|
|
\ if len(filter(values(g:plugs), '!isdirectory(v:val.dir)'))
|
|
\| PlugInstall --sync | q
|
|
\| endif
|
|
" }
|
|
" Airline {
|
|
let g:airline#extensions#tabline#enabled = 1
|
|
let g:airline#extensions#tabline#buffer_idx_mode = 1
|
|
let g:airline#extensions#tabline#fnamemod = ':t'
|
|
let g:airline#extensions#tabline#left_sep = ''
|
|
let g:airline#extensions#tabline#left_alt_sep = ''
|
|
let g:airline#extensions#tabline#right_sep = ''
|
|
let g:airline#extensions#tabline#right_alt_sep = ''
|
|
let g:airline_left_sep = ''
|
|
let g:airline_left_alt_sep = ''
|
|
let g:airline_right_sep = ''
|
|
let g:airline_right_alt_sep = ''
|
|
let g:airline_theme= 'gruvbox'
|
|
" }
|
|
" neomake {
|
|
autocmd! BufWritePost * Neomake
|
|
nnoremap <Leader>l :lopen<CR>
|
|
" }
|
|
" netrw {
|
|
let g:netrw_liststyle=3 " tree (change to 0 for thin)
|
|
let g:netrw_banner=0 " no banner
|
|
let g:netrw_altv=1 " open files on right
|
|
let g:netrw_winsize=25 " only use 20% screen for netrw
|
|
" FIXME: Preview opens to left and is very narrow
|
|
let g:netrw_preview=1 " open previews vertically
|
|
let g:netrw_browse_split =3 " open files in new Tab
|
|
nmap <Leader>n :Vexplore<CR>
|
|
" }
|
|
" }
|
|
|
|
" Filetype-Specific Configurations {
|
|
" HTML, XML, Jinja
|
|
autocmd FileType html setlocal shiftwidth=2 tabstop=2 softtabstop=2
|
|
autocmd FileType css setlocal shiftwidth=2 tabstop=2 softtabstop=2
|
|
autocmd FileType xml setlocal shiftwidth=2 tabstop=2 softtabstop=2
|
|
autocmd FileType htmldjango setlocal shiftwidth=2 tabstop=2 softtabstop=2
|
|
autocmd FileType htmldjango inoremap {{ {{ }}<left><left><left>
|
|
autocmd FileType htmldjango inoremap {% {% %}<left><left><left>
|
|
autocmd FileType htmldjango inoremap {# {# #}<left><left><left>
|
|
" }
|
|
|
|
" Markdown and Journal {
|
|
autocmd FileType markdown setlocal shiftwidth=2 tabstop=2 softtabstop=2
|
|
autocmd FileType journal setlocal shiftwidth=2 tabstop=2 softtabstop=2
|
|
" }
|
|
|
|
" Trim Whitespaces {
|
|
function! TrimWhitespace()
|
|
let l:save = winsaveview()
|
|
%s/\\\@<!\s\+$//e
|
|
call winrestview(l:save)
|
|
endfunction
|
|
" }
|
|
" vim:set ft=vim sw=4 ts=4:
|
|
" :set number relativenumber
|
|
|
|
:augroup numbertoggle
|
|
: autocmd!
|
|
: autocmd BufEnter,FocusGained,InsertLeave * set relativenumber
|
|
: autocmd BufLeave,FocusLost,InsertEnter * set norelativenumber
|
|
:augroup END
|
|
noremap <F3> :set invnumber invrelativenumber<CR>
|
|
inoremap <F3> <C-O>:set invnumber invrelativenumber<CR>
|