mirror of
https://github.com/davegallant/nix-config
synced 2025-08-06 07:13:40 +00:00
Enhance vim statusline
This commit is contained in:
@@ -299,7 +299,7 @@ in {
|
|||||||
viAlias = true;
|
viAlias = true;
|
||||||
vimAlias = true;
|
vimAlias = true;
|
||||||
|
|
||||||
extraConfig = builtins.readFile ./init.vim;
|
extraConfig = builtins.readFile ./nvim/init.vim;
|
||||||
plugins = with pkgs.vimPlugins; [
|
plugins = with pkgs.vimPlugins; [
|
||||||
coc-go
|
coc-go
|
||||||
coc-json
|
coc-json
|
||||||
@@ -380,5 +380,6 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
home.file.".emacs.d/init.el".source = ./init.el;
|
home.file.".emacs.d/init.el".source = ./init.el;
|
||||||
|
home.file.".config/nvim/statusline.vim".source = ./nvim/statusline.vim;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -9,40 +9,17 @@ set ignorecase
|
|||||||
set incsearch
|
set incsearch
|
||||||
set mouse=a
|
set mouse=a
|
||||||
set nocompatible
|
set nocompatible
|
||||||
set noswapfile
|
|
||||||
set number relativenumber
|
set number relativenumber
|
||||||
set pastetoggle=<F3>
|
set pastetoggle=<F3>
|
||||||
set shiftwidth=2
|
set shiftwidth=2
|
||||||
set showcmd
|
set showcmd
|
||||||
set showmode
|
|
||||||
set smartcase
|
set smartcase
|
||||||
set t_Co=256
|
set t_Co=256
|
||||||
set tabstop=2
|
set tabstop=2
|
||||||
set wildmenu
|
set wildmenu
|
||||||
|
|
||||||
" Custom statusline
|
" Disable swp and swo files
|
||||||
function! GitBranch()
|
set noswapfile
|
||||||
return system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'")
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! StatuslineGit()
|
|
||||||
let l:branchname = GitBranch()
|
|
||||||
return strlen(l:branchname) > 0?' '.l:branchname.' ':''
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
set statusline=
|
|
||||||
set statusline+=%#PmenuSel#
|
|
||||||
set statusline+=%{StatuslineGit()}
|
|
||||||
set statusline+=%#LineNr#
|
|
||||||
set statusline+=\ %f
|
|
||||||
set statusline+=%m
|
|
||||||
set statusline+=%=
|
|
||||||
set statusline+=%#CursorColumn#
|
|
||||||
set statusline+=\ %y
|
|
||||||
set statusline+=\ %{&fileencoding?&fileencoding:&encoding}
|
|
||||||
set statusline+=\[%{&fileformat}\]
|
|
||||||
set statusline+=\ %p%%
|
|
||||||
set statusline+=\ %l:%c
|
|
||||||
|
|
||||||
" Remember line number
|
" Remember line number
|
||||||
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
|
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
|
||||||
@@ -153,3 +130,4 @@ autocmd FileType java setlocal omnifunc=javacomplete#Complete
|
|||||||
" vim-prettier
|
" vim-prettier
|
||||||
let g:prettier#autoformat = 1
|
let g:prettier#autoformat = 1
|
||||||
|
|
||||||
|
source ~/.config/nvim/statusline.vim
|
64
home/nvim/statusline.vim
Normal file
64
home/nvim/statusline.vim
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
" A lightweight statusline
|
||||||
|
|
||||||
|
" Enable statusline
|
||||||
|
set laststatus=2
|
||||||
|
|
||||||
|
" Do not show mode on last line
|
||||||
|
set noshowmode
|
||||||
|
|
||||||
|
function! ActivateStatusline()
|
||||||
|
set statusline=
|
||||||
|
set statusline+=%#Pmenu#
|
||||||
|
set statusline+=%{StatuslineMode()}
|
||||||
|
set statusline+=%#PmenuSel#
|
||||||
|
set statusline+=%{StatuslineGit()}
|
||||||
|
set statusline+=%#LineNr#
|
||||||
|
set statusline+=\ %f
|
||||||
|
set statusline+=%m
|
||||||
|
set statusline+=%=
|
||||||
|
set statusline+=%#CursorColumn#
|
||||||
|
set statusline+=\ %y
|
||||||
|
set statusline+=\ %{&fileencoding?&fileencoding:&encoding}
|
||||||
|
set statusline+=\[%{&fileformat}\]
|
||||||
|
set statusline+=\ %p%%
|
||||||
|
set statusline+=\ %l:%c
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Get vim mode
|
||||||
|
function! StatuslineMode()
|
||||||
|
|
||||||
|
let g:modeMap={
|
||||||
|
\ 'n' : 'NORMAL',
|
||||||
|
\ 'i' : 'INSERT',
|
||||||
|
\ 'c' : 'COMMAND',
|
||||||
|
\ 'R' : 'REPLACE',
|
||||||
|
\ 's' : 'SELECT',
|
||||||
|
\ 'y' : 'HELP',
|
||||||
|
\ 't' : 'TERM',
|
||||||
|
\ '!' : 'SHELL',
|
||||||
|
\ 'v' : 'VISUAL',
|
||||||
|
\ 'V' : 'VISUAL LINE',
|
||||||
|
\ "\<C-V>" : 'VISUAL BLOCK'
|
||||||
|
\}
|
||||||
|
|
||||||
|
if expand('%:y') == 'help'
|
||||||
|
let b:CurrentMode = 'HELP'
|
||||||
|
endif
|
||||||
|
|
||||||
|
return ' '.g:modeMap[mode()].' '
|
||||||
|
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! GitBranch()
|
||||||
|
return system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! StatuslineGit()
|
||||||
|
let l:branchname = GitBranch()
|
||||||
|
return strlen(l:branchname) > 0?' '.l:branchname.' ':''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
augroup SetStatusline
|
||||||
|
autocmd!
|
||||||
|
autocmd BufEnter,WinEnter * call ActivateStatusline()
|
||||||
|
augroup END
|
Reference in New Issue
Block a user