diff --git a/nvim/.stylua.toml b/nvim/.stylua.toml new file mode 100644 index 0000000..4b9cb2c --- /dev/null +++ b/nvim/.stylua.toml @@ -0,0 +1,6 @@ +column_width = 120 +indent_type = "Spaces" +indent_width = 2 +quote_style = "AutoPreferDouble" +call_parentheses = "Always" +collapse_simple_statement = "Never" diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100644 index 0000000..8458774 --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1,11 @@ +vim.g.mapleader = " " +vim.g.maplocalleader = " " + +-- nvim-tree replaces netrw and must take ownership before plugins load. +vim.g.loaded_netrw = 1 +vim.g.loaded_netrwPlugin = 1 + +require("config.options") +require("config.autocmds") +require("config.keymaps") +require("config.lazy") diff --git a/nvim/init.vim b/nvim/init.vim deleted file mode 100644 index 5b11d89..0000000 --- a/nvim/init.vim +++ /dev/null @@ -1,598 +0,0 @@ -" encode setting -set encoding=utf-8 - -" display -set number -set cursorline -set showmatch -set whichwrap=b,s,h,l,<,>,[,],~ -set mouse=a -set termguicolors -set background=dark -syntax on - -" Auto-reload files changed outside current Neovim instance -set autoread -augroup TodoAutoReload - autocmd! - autocmd FocusGained,BufEnter,CursorHold,CursorHoldI * if mode() !=# "c" | checktime | endif -augroup END - -" Tab/Indent -set expandtab -set tabstop=2 -set softtabstop=2 -set autoindent -set smartindent -set shiftwidth=2 - -" clipboard -set clipboard=unnamed -" wsl yank setting -if has("wsl") - augroup Yank - autocmd! - autocmd TextYankPost * :call system('clip.exe ',@") - augroup END -endif - -" search -set incsearch -set ignorecase -set smartcase -set hlsearch - -" complement -set wildmenu -set history=5000 - -" noswapfile -set noswapfile -set nobackup -set noundofile - -" fold -set foldcolumn=1 -set foldlevel=99 -set foldlevelstart=99 -set foldenable -augroup markdown_folding - autocmd! - autocmd FileType markdown setlocal foldmethod=indent -augroup END - -" keymap -let mapleader = "\" -nnoremap :nohlsearch -noremap H ^ -noremap L g_ -" US keyboad -nnoremap ; : -nnoremap : ; -vnoremap : : -vnoremap : ; - -" tabline -set showtabline=2 - -" undo -set undolevels=1000 -if has('persistent_undo') - let undo_path = expand('~/.vim/undo') - if !isdirectory(undo_path) - call mkdir(undo_path, 'p') - endif - set undofile -endif - -" open&source vimrc -nnoremap . :new $MYVIMRC -nnoremap , :source $MYVIMRC - -" vim-plug -call plug#begin(stdpath('data') . '/plugged') - -" lsp -" masonは遅延読み込みが非推奨となっているのでプラグイン読み込みはinitファイル上で書くように -" > mason.nvim is optimized to load as little as possible during setup. Lazy-loading the plugin, or somehow deferring the setup, is not recommended. -Plug 'mason-org/mason.nvim' -Plug 'mason-org/mason-lspconfig.nvim' -Plug 'neovim/nvim-lspconfig' -Plug 'hrsh7th/cmp-nvim-lsp' -Plug 'hrsh7th/cmp-buffer' -Plug 'hrsh7th/cmp-path' -Plug 'hrsh7th/cmp-cmdline' -Plug 'nvim-lua/plenary.nvim' -Plug 'nvim-tree/nvim-web-devicons' -Plug 'ibhagwan/fzf-lua' -Plug 'pwntester/octo.nvim' -Plug 'petertriho/cmp-git' -Plug 'hrsh7th/nvim-cmp' -" For vsnip users. -Plug 'hrsh7th/cmp-vsnip' -Plug 'hrsh7th/vim-vsnip' -" TODO change from vsnip to luasnip. -" Plug 'L3MON4D3/LuaSnip' -" Plug 'saadparwaiz1/cmp_luasnip' -" For 'copilot.vim' users. -Plug 'hrsh7th/cmp-copilot' - -Plug 'obsidian-nvim/obsidian.nvim' - -Plug 'kevinhwang91/promise-async' -Plug 'kevinhwang91/nvim-ufo' - -lua << EOF --- lsp settings --- lspの設定に関しては遅延読み込みしても良い --- Global mappings. --- See `:help vim.diagnostic.*` for documentation on any of the below functions -vim.keymap.set('n', 'e', vim.diagnostic.open_float) -vim.keymap.set('n', '[d', function() vim.diagnostic.jump({ count = -1 }) end) -vim.keymap.set('n', ']d', function() vim.diagnostic.jump({ count = 1 }) end) -vim.keymap.set('n', 'q', vim.diagnostic.setloclist) - --- Use an on_attach function to only map the following keys --- after the language server attaches to the current buffer -local on_attach = function(client, bufnr) --- Enable completion triggered by -vim.bo[bufnr].omnifunc = 'v:lua.vim.lsp.omnifunc' - --- Mappings. --- See `:help vim.lsp.*` for documentation on any of the below functions -local bufopts = { noremap=true, silent=true, buffer=bufnr } --- vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) -vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) -vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) -vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) --- vim.keymap.set('n', '', vim.lsp.buf.signature_help, bufopts) -vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, bufopts) -vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, bufopts) -vim.keymap.set('n', 'wl', function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, bufopts) -vim.keymap.set('n', 'gy', vim.lsp.buf.type_definition, bufopts) -vim.keymap.set('n', 'rn', vim.lsp.buf.rename, bufopts) -vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, bufopts) -vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) -vim.keymap.set('n', 'f', function() vim.lsp.buf.format { async = true } end, bufopts) -end -EOF - -" colorscheme -Plug 'jonathanfilip/vim-lucius' -Plug 'ghifarit53/tokyonight-vim' -Plug 'EdenEast/nightfox.nvim' - -Plug 'preservim/nerdtree' -Plug 'jistr/vim-nerdtree-tabs' -map :NERDTreeTabsToggle -" ファイル指定せずにvimを開いた時にNERDTreeを最初から表示 -" autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif -" NERDTreeToggleのウィンドウだけが残る場合はvimを終了 -autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif -" 隠しファイル表示 -let NERDTreeShowHidden = 1 - -Plug 'ryanoasis/vim-devicons' - -Plug 'itchyny/lightline.vim' - -Plug 'w0rp/ale' - -Plug 'vim-jp/vimdoc-ja' - -Plug 'mattn/vim-goimports' - -" Plug 'airblade/vim-rooter' - -Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } -Plug 'junegunn/fzf.vim' -let g:fzf_layout = { 'down': '50%' } -command! -bang -nargs=* Rg - \ call fzf#vim#grep( - \ 'rg --column --line-number --no-heading --hidden --smart-case --glob "!\.git/*" -- '.shellescape(), - \ 1, - \ fzf#vim#with_preview({'dir': system('git rev-parse --show-toplevel 2> /dev/null')[:-2]}), - \ 0) -nnoremap g :Rg -nnoremap p :GFiles - -Plug 'easymotion/vim-easymotion' -" Disable default mappings -let g:EasyMotion_do_mapping = 0 -" Turn on case insensitive feature -let g:EasyMotion_smartcase = 1 -" f{char} to move to {char} -map f (easymotion-bd-f) -nmap f (easymotion-overwin-f) -" s{char}{char} to move to {char}{char} -nmap s (easymotion-overwin-f2) -vmap s (easymotion-bd-f2) -" Move to line -map l (easymotion-bd-jk) -nmap l (easymotion-overwin-line) -" Move to word -map w (easymotion-bd-w) -nmap w (easymotion-overwin-w) - -Plug 'airblade/vim-gitgutter' -set updatetime=250 -" Move to Hunk -nmap [h (GitGutterPrevHunk) -nmap ]h (GitGutterNextHunk) -" Highlight Toggle -nnoremap hh :GitGutterLineHighlightsToggle -" default gitgutter maps -" nmap hs GitGutterStageHunk -" nmap hr GitGutterRevertHunk -" nmap hp GitGutterPreviewHunk - -Plug 'APZelos/blamer.nvim' - -" not pre build build bundle for ARM platform.(2021/4/26) -" Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': ['markdown', 'vim-plug']} -Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && yarn install' } - -Plug 'mattn/vim-maketable' - -Plug 'jiangmiao/auto-pairs' - -Plug 'mbbill/undotree' -nnoremap :UndotreeToggle - -Plug 'lervag/vimtex' - -Plug 'simeji/winresizer' -let g:winresizer_vert_resize = 1 -let g:winresizer_horiz_resize = 1 - -Plug 'thinca/vim-quickrun', {'on': 'QuickRun'} -Plug 'Shougo/vimproc.vim', {'do' : 'make'} -let g:quickrun_config = { - \'_' : { - \ 'outputter/error/success': 'buffer', - \ 'outputter/error/error': 'quickfix', - \ 'outputter/quickfix/open_cmd': 'copen', - \ 'runner' : "vimproc", - \ 'runner/vimproc/updatetime' : 60, - \ 'hook/time/enable': 1 - \ }, -\} - -" 小文字rと大文字RでQuickRunの挙動を分岐 -" 小文字rの場合:カレントディレクトリにinputファイルがあれば中身を標準入力として引き渡して実行,それ以外は標準入力無しで実行 -" 大文字Rの場合:クリップボードの中身を標準入力として引き渡して実行 -nnoremap r :call DoQuickRun() -nnoremap R :QuickRun -input =@+ -function! s:DoQuickRun() abort - if filereadable('input') - execute ':QuickRun :WhichKey '' -vnoremap :WhichKeyVisual '' -" By default timeoutlen is 1000 ms -set timeoutlen=500 - -Plug 'sebdah/vim-delve' -autocmd fileType go nnoremap gb :DlvDebug -autocmd fileType go command! BP :DlvToggleBreakpoint -autocmd fileType go command! BPC :DlvClearAll - -Plug 'github/copilot.vim' -let g:copilot_no_tab_map = v:true -let g:copilot_assume_mapped = v:true -imap