92 lines
2.0 KiB
Nix
92 lines
2.0 KiB
Nix
|
{ config, pkgs, ... }:
|
|||
|
{
|
|||
|
|
|||
|
# neovim
|
|||
|
programs.neovim = {
|
|||
|
enable = true;
|
|||
|
defaultEditor = true;
|
|||
|
viAlias = true;
|
|||
|
vimAlias = true;
|
|||
|
|
|||
|
# neovim config
|
|||
|
extraConfig = ''
|
|||
|
|
|||
|
" Use tab for trigger completion with characters ahead and navigate.
|
|||
|
inoremap <silent><expr> <TAB>
|
|||
|
\ pumvisible() ? "\<C-n>" :
|
|||
|
\ <SID>check_back_space() ? "\<TAB>" :
|
|||
|
\ coc#refresh()
|
|||
|
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
|
|||
|
function! s:check_back_space() abort
|
|||
|
let col = col('.') - 1
|
|||
|
return !col || getline('.')[col - 1] =~# '\s'
|
|||
|
endfunction
|
|||
|
|
|||
|
" Use <c-space> to trigger completion.
|
|||
|
if has('nvim')
|
|||
|
inoremap <silent><expr> <c-space> coc#refresh()
|
|||
|
else
|
|||
|
inoremap <silent><expr> <c-@> coc#refresh()
|
|||
|
endif
|
|||
|
|
|||
|
" clipboard
|
|||
|
set clipboard+=unnamedplus
|
|||
|
|
|||
|
" cursor
|
|||
|
set guicursor=a:hor20-Cursor
|
|||
|
set guicursor=v:block-Cursor
|
|||
|
|
|||
|
" terminal title
|
|||
|
set title
|
|||
|
|
|||
|
" auto-complete
|
|||
|
set completeopt=menu,menuone,longest
|
|||
|
|
|||
|
" show number
|
|||
|
set number
|
|||
|
'';
|
|||
|
|
|||
|
# lua config
|
|||
|
extraLuaConfig = ''
|
|||
|
|
|||
|
-- set mapleader
|
|||
|
vim.g.mapleader = ' '
|
|||
|
vim.g.maplocalleader = ' '
|
|||
|
|
|||
|
-- set vim options
|
|||
|
vim.opt.backspace = '2'
|
|||
|
vim.opt.laststatus = 2
|
|||
|
vim.opt.cursorline = true
|
|||
|
|
|||
|
-- set scrolloff
|
|||
|
vim.opt.scrolloff = 10
|
|||
|
|
|||
|
-- indentation
|
|||
|
vim.opt.tabstop = 2
|
|||
|
vim.opt.shiftwidth = 2
|
|||
|
vim.opt.expandtab = true
|
|||
|
vim.opt.smartindent = true
|
|||
|
'';
|
|||
|
|
|||
|
# auto-complete
|
|||
|
coc = {
|
|||
|
enable = true;
|
|||
|
settings = {
|
|||
|
"suggest.noselect" = true;
|
|||
|
"suggest.enablePreview" = true;
|
|||
|
"suggest.enablePreselect" = true;
|
|||
|
"suggest.disableKind" = true;
|
|||
|
|
|||
|
"diagnostic.errorSign" = "✘";
|
|||
|
"diagnostic.infoSign" = "ℹ";
|
|||
|
"diagnostic.hintSign" = "➤";
|
|||
|
};
|
|||
|
};
|
|||
|
|
|||
|
# plugins
|
|||
|
plugins = with pkgs.vimPlugins; [
|
|||
|
vim-nix
|
|||
|
];
|
|||
|
};
|
|||
|
}
|