if filereadable(expand('~/dotfiles/.config/nvim/min-edit.vim')) source ~/dotfiles/.config/nvim/min-edit.vim endif set autoindent set autoread set completeopt=menu,menuone,noselect set history=2000 set inccommand=split set infercase set lazyredraw set linebreak set list set listchars=tab:^-,trail:~,extends:»,precedes:«,nbsp:% set scrollback=2000 set signcolumn=number set switchbuf+=usetab set termguicolors set updatetime=300 set wildmode=longest,full let g:markdown_fenced_languages = ['ts=typescript', 'js=javascript'] " {{{ Qfutils function! s:load_qfutils(args) abort source ~/dotfiles/.config/nvim/qfutils.vim execute 'Qfutils' a:args endfunction command! -nargs=+ Qfutils call s:load_qfutils() " }}} " function s:load_async_terminal(args) abort " source ~/dotfiles/.config/nvim/async_terminal.vim " execute 'AsyncTerminal' a:args " endfunction " command! -nargs=+ AsyncTerminal call s:load_async_terminal() " command! -nargs=+ Gtt AsyncTerminal git " {{{ commands.vim source ~/dotfiles/.config/nvim/commands.vim let g:my_vimrc = expand(':p') Keymap nx gf SmartOpen " }}} " {{{ Plugs " https://github.com/junegunn/vim-plug/wiki/tips#automatic-installation let s:autoload_plug_path = has('nvim') ? stdpath('data') .. '/site' : '~/.vim' if empty(glob(s:autoload_plug_path)) silent execute '!curl --create-dirs -fLo ' .. s:autoload_plug_path .. \ ' https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' endif " Run PlugInstall if there are missing plugins autocmd VimEnter * if len(filter(values(g:plugs), '!isdirectory(v:val.dir)')) \ | PlugInstall --sync | source $MYVIMRC \ | endif call plug#begin(stdpath('config') .. '/plugged') " {{{ fzf-lua Plug 'ibhagwan/fzf-lua', { 'branch': 'main', 'on': 'FzfLua' } autocmd QuickFixCmdPre * ++once call plug#load('fzf-lua') autocmd User fzf-lua ++once luafile ~/dotfiles/.config/nvim/plugin_config/fzf_lua.lua nnoremap a FzfLua git_status nnoremap b FzfLua buffers nnoremap B FzfLua blines nnoremap c FzfLua command_history nnoremap C FzfLua quickfix nnoremap f FzfLua files nnoremap F FzfLua builtin nnoremap h FzfLua mru cwd_only=true nnoremap H FzfLua help_tags nnoremap j FzfLua jumps nnoremap l FzfLua lines nnoremap m FzfLua marks nnoremap z FzfLua live_grep nnoremap : FzfLua commands " }}} " {{{ pounce.nvim Plug 'rlane/pounce.nvim', { 'on': 'Pounce' } Keymap nx s; Pounce Keymap nx s' Pounce autocmd User pounce.nvim ++once luafile ~/dotfiles/.config/nvim/plugin_config/pounce.lua " }}} " {{{ load on VimEnter Plug 'nvim-lua/plenary.nvim', { 'on': [] } Plug 'vim-denops/denops.vim', { 'on': [] } Plug 'vim-skk/skkeleton', { 'on': [] } Plug 'Shougo/ddc.vim', { 'on': [] } Plug 'kawarimidoll/mru_cache.lua', { 'on': [] } Plug 'haya14busa/vim-asterisk', { 'on': [] } Plug 'kevinhwang91/nvim-hlslens', { 'on': [] } Plug 'petertriho/nvim-scrollbar', { 'on': [] } Plug 'folke/which-key.nvim', { 'on': [] } Plug 'uga-rosa/ccc.nvim', { 'on': ['CccPick'] } Plug 'kyazdani42/nvim-web-devicons', { 'on': [] } Plug 'rcarriga/nvim-notify', { 'on': [] } Plug 'lewis6991/gitsigns.nvim', { 'on': [] } Plug 'tkmpypy/chowcho.nvim', { 'on': [] } Plug 'anuvyklack/pretty-fold.nvim', { 'on': [] } Plug 'levouh/tint.nvim', { 'on': [] } function! s:vim_enter_plugs() abort if get(g:, 'vim_entered') return end let g:vim_entered = 1 call plug#load( \ 'plenary.nvim', \ 'denops.vim', \ 'skkeleton', \ 'ddc.vim', \ 'mru_cache.lua', \ 'vim-asterisk', \ 'nvim-hlslens', \ 'nvim-scrollbar', \ 'which-key.nvim', \ 'ccc.nvim', \ 'nvim-web-devicons', \ 'nvim-notify', \ ) call plug#load( \ 'gitsigns.nvim', \ 'chowcho.nvim', \ 'pretty-fold.nvim', \ ) if exists('*nvim_win_set_hl_ns') call plug#load('tint.nvim') luafile ~/dotfiles/.config/nvim/plugin_config/tint.lua endif source ~/dotfiles/.config/nvim/plugin_config/skkeleton.vim source ~/dotfiles/.config/nvim/plugin_config/skk_ddc_cmp.vim luafile ~/dotfiles/.config/nvim/plugin_config/mru_cache.lua let g:asterisk#keeppos = 1 luafile ~/dotfiles/.config/nvim/plugin_config/hlslens.lua luafile ~/dotfiles/.config/nvim/plugin_config/scrollbar.lua luafile ~/dotfiles/.config/nvim/plugin_config/which-key.lua luafile ~/dotfiles/.config/nvim/plugin_config/notify.lua luafile ~/dotfiles/.config/nvim/plugin_config/gitsigns.lua luafile ~/dotfiles/.config/nvim/plugin_config/chowcho.lua lua require('pretty-fold').setup({}) lua require('ccc').setup({ highlighter = { auto_enable = true } }) endfunction autocmd VimEnter * ++once call vim_enter_plugs() " }}} " {{{ load for quickfix Plug 'kevinhwang91/nvim-bqf', { 'for': 'qf' } Plug 'ten3roberts/qf.nvim', { 'on': [] } function! s:qf_pre_plugs() abort if get(g:, 'qf_pre_loaded') return end let g:qf_pre_loaded = 1 call plug#load( \ 'qf.nvim', \ ) lua require('qf').setup() endfunction autocmd QuickFixCmdPre * ++once call qf_pre_plugs() " }}} " {{{ lsp Plug 'neovim/nvim-lspconfig', { 'on': [] } Plug 'williamboman/mason.nvim', { 'on': [] } Plug 'williamboman/mason-lspconfig.nvim', { 'on': [] } Plug 'jose-elias-alvarez/null-ls.nvim', { 'on': [] } Plug 'ray-x/lsp_signature.nvim', { 'on': [] } Plug 'j-hui/fidget.nvim', { 'on': [] } Plug 'onsails/lspkind.nvim', { 'on': [] } Plug 'folke/lua-dev.nvim', { 'for': 'lua' } function! s:lsp_init() abort if get(g:, 'lsp_loaded') return end let g:lsp_loaded = 1 " call s:cmp_init() call plug#load( \ 'nvim-lspconfig', \ 'mason.nvim', \ 'mason-lspconfig.nvim', \ 'null-ls.nvim', \ 'lsp_signature.nvim', \ 'lspkind.nvim', \ 'fidget.nvim', \ ) lua require("lsp_signature").setup() lua require("fidget").setup() lua require("lspkind").init({ mode = 'symbol_text' }) execute 'luafile' g:plug_home .. '/nvim-lspconfig/plugin/lspconfig.lua' luafile ~/dotfiles/.config/nvim/plugin_config/lsp.lua luafile ~/dotfiles/.config/nvim/plugin_config/null_ls.lua endfunction autocmd BufReadPost * ++once call lsp_init() " }}} " {{{ trouble.nvim Plug 'folke/trouble.nvim', { 'on': ['Trouble', 'TroubleToggle'] } autocmd User trouble.nvim ++once luafile ~/dotfiles/.config/nvim/plugin_config/trouble.lua nnoremap xx TroubleToggle nnoremap xw TroubleToggle workspace_diagnostics nnoremap xd TroubleToggle document_diagnostics nnoremap xq TroubleToggle quickfix nnoremap xl TroubleToggle loclist nnoremap gR TroubleToggle lsp_references " }}} " {{{ lspsaga.nvim Plug 'tami5/lspsaga.nvim', { 'on': ['Lspsaga'] } nnoremap gh Lspsaga lsp_finder " nnoremap grr Lspsaga rename nnoremap gD Lspsaga preview_definition nnoremap ca Lspsaga code_action vnoremap ca Lspsaga range_code_action nnoremap cd Lspsaga show_line_diagnostics nnoremap cc Lspsaga show_cursor_diagnostics nnoremap [d Lspsaga diagnostic_jump_prev nnoremap ]d Lspsaga diagnostic_jump_next function! s:ex_help(word) abort if index(['vim', 'help'], &filetype) >= 0 execute 'help' a:word return endif if &filetype == 'lua' let col = getcurpos('.')[2] let line = getline('.') let pre = substitute(line[:col-1], '^.*[^0-9A-Za-z_.]', '', '') let post = substitute(line[col:], '[^0-9A-Za-z_].*$', '', '') let cword = pre .. post if cword =~ '\.' try execute 'help' cword return catch " nop endtry endif try execute 'help' 'luaref-' .. a:word return catch " nop endtry try execute 'help' a:word return catch " nop endtry endif " no help in vim Lspsaga hover_doc endfunction command! -nargs=+ ExHelp call s:ex_help() set keywordprg=:ExHelp function! s:lspsaga_init() abort nnoremap lua require('lspsaga.action').smart_scroll_with_saga(1, '') nnoremap lua require('lspsaga.action').smart_scroll_with_saga(-1, '') endfunction autocmd User lspsaga.nvim ++once call s:lspsaga_init() " }}} " {{{ treesitter Plug 'nvim-treesitter/nvim-treesitter', { 'do': ':TSUpdate', 'on': [] } Plug 'nvim-treesitter/nvim-treesitter-refactor', { 'on': [] } Plug 'JoosepAlviste/nvim-ts-context-commentstring', { 'on': [] } Plug 'p00f/nvim-ts-rainbow', { 'on': [] } Plug 'romgrk/nvim-treesitter-context', { 'on': [] } Plug 'David-Kunz/treesitter-unit', { 'on': [] } Plug 'mfussenegger/nvim-ts-hint-textobject', { 'on': [] } Plug 'm-demare/hlargs.nvim', { 'on': [] } Plug 'andymass/vim-matchup', { 'on': [] } Plug 'yioneko/nvim-yati', { 'on': [] } Plug 'haringsrob/nvim_context_vt', { 'on': [] } function! s:treesitter_init() abort if get(g:, 'treesitter_loaded') return end let g:treesitter_loaded = 1 " https://zenn.dev/kawarimidoll/articles/8e124a88dde820 call plug#load( \ 'nvim-treesitter', \ 'nvim-treesitter-refactor', \ 'nvim-ts-context-commentstring', \ 'nvim-ts-rainbow', \ 'treesitter-unit', \ 'nvim-ts-hint-textobject', \ 'hlargs.nvim', \ 'vim-matchup', \ 'nvim-yati', \ 'nvim_context_vt', \ ) execute 'luafile' g:plug_home .. '/nvim-treesitter/plugin/nvim-treesitter.lua' luafile ~/dotfiles/.config/nvim/plugin_config/treesitter.lua TSEnable highlight " do not replace to omap m :lua require('tsht').nodes() vnoremap m :lua require('tsht').nodes() xnoremap iu :lua require('treesitter-unit').select() xnoremap au :lua require('treesitter-unit').select(true) onoremap iu :lua require('treesitter-unit').select() onoremap au :lua require('treesitter-unit').select(true) lua require('hlargs').setup() endfunction autocmd BufReadPost * ++once call treesitter_init() " }}} " {{{ nvim-cmp Plug 'hrsh7th/nvim-cmp', { 'on': [] } Plug 'hrsh7th/cmp-nvim-lsp', { 'on': [] } Plug 'hrsh7th/cmp-buffer', { 'on': [] } Plug 'hrsh7th/cmp-path', { 'on': [] } Plug 'hrsh7th/cmp-cmdline', { 'on': [] } Plug 'hrsh7th/cmp-vsnip', { 'on': [] } Plug 'hrsh7th/cmp-nvim-lua', { 'on': [] } Plug 'ray-x/cmp-treesitter', { 'on': [] } Plug 'tzachar/cmp-tabnine', { 'do': './install.sh', 'on': [] } Plug 'lukas-reineke/cmp-rg', { 'on': [] } Plug 'hrsh7th/cmp-nvim-lsp-document-symbol', { 'on': [] } Plug 'f3fora/cmp-spell', { 'on': [] } Plug 'octaltree/cmp-look', { 'on': [] } function! s:cmp_init() abort if get(g:, 'cmp_loaded') return end let g:cmp_loaded = 1 call plug#load( \ 'nvim-cmp', \ 'cmp-nvim-lsp', \ 'cmp-buffer', \ 'cmp-path', \ 'cmp-cmdline', \ 'cmp-vsnip', \ 'cmp-nvim-lua', \ 'cmp-treesitter', \ 'cmp-tabnine', \ 'cmp-rg', \ 'cmp-nvim-lsp-document-symbol', \ 'cmp-spell', \ 'cmp-look', \ 'lspkind-nvim', \ ) " execute 'luafile' g:plug_home .. '/nvim-cmp/plugin/cmp.lua' luafile ~/dotfiles/.config/nvim/plugin_config/cmp.lua endfunction " }}} " {{{ load on InsertEnter Plug 'hrsh7th/vim-vsnip', { 'on': [] } Plug 'rafamadriz/friendly-snippets', { 'on': [] } Plug 'Shougo/pum.vim', { 'on': [] } Plug 'uga-rosa/jam.nvim', { 'on': [] } function! s:insert_enter_plugs() abort if get(g:, 'insert_entered') return end let g:insert_entered = 1 call plug#load( \ 'vim-vsnip', \ 'friendly-snippets', \ 'pum.vim', \ 'jam.nvim', \ ) let g:vsnip_filetypes = {} let g:vsnip_filetypes.javascriptreact = ['javascript'] let g:vsnip_filetypes.typescriptreact = ['typescript'] " smap vsnip#jumpable(1) ? '(vsnip-jump-next)' : '' " smap vsnip#jumpable(-1) ? '(vsnip-jump-prev)' : '' smap j j smap k k " Keymap is vsnip#expandable() ? '(vsnip-expand)' : '' Keymap is vsnip#available(1) ? '(vsnip-expand-or-jump)' : '' Keymap nx st (vsnip-select-text) Keymap nx sT (vsnip-cut-text) execute 'luafile' g:plug_home .. '/jam.nvim/plugin/jam.lua' luafile ~/dotfiles/.config/nvim/plugin_config/jam.lua endfunction autocmd InsertEnter * ++once call insert_enter_plugs() " }}} " {{{ dial.nvim Plug 'monaqa/dial.nvim', { 'on': '(dial-' } xmap g g(dial-increment) xmap g g(dial-decrement) Keymap nx (dial-increment) Keymap nx (dial-decrement) autocmd User dial.nvim ++once luafile ~/dotfiles/.config/nvim/plugin_config/dial.lua " }}} " {{{ winresizer Plug 'simeji/winresizer', { 'on': 'WinResizerStartResize' } nnoremap WinResizerStartResize " }}} " {{{ vim-silicon Plug 'segeljakt/vim-silicon', { 'on': 'Silicon' } autocmd User vim-silicon ++once source ~/dotfiles/.config/nvim/plugin_config/silicon.vim " }}} " {{{ capture.vim Plug 'tyru/capture.vim', { 'on': [] } autocmd CmdlineEnter * ++once call plug#load('capture.vim') " }}} " {{{ neoterm Plug 'kassio/neoterm', { 'on': ['T', 'Tnew'] } autocmd User neoterm ++once source ~/dotfiles/.config/nvim/plugin_config/neoterm.vim " }}} " {{{ vim-floaterm Plug 'voldikss/vim-floaterm', { 'on': ['FloatermNew'] } " }}} " {{{ markdown-preview.nvim Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && yarn install', 'for': ['markdown'] } " }}} " {{{ venn.nvim Plug 'jbyuki/venn.nvim', { 'on': [] } function! s:venn_toggle() abort if !get(g:, 'venn_loaded') call plug#load('venn.nvim') execute 'luafile' g:plug_home .. '/venn.nvim/plugin/venn.lua' let g:venn_loaded = 1 endif if get(b:, 'venn_enabled') setlocal virtualedit= mapclear unlet! b:venn_enabled else let b:venn_enabled = 1 setlocal virtualedit=all nnoremap j:VBox nnoremap k:VBox nnoremap l:VBox nnoremap h:VBox vnoremap f :VBox endif endfunction command! VToggle call s:venn_toggle() " }}} " {{{ load immediately Plug 'anuvyklack/keymap-amend.nvim', { 'on': [] } Plug 'lewis6991/impatient.nvim' Plug 'echasnovski/mini.nvim' Plug 'vim-jp/vimdoc-ja' " }}} call plug#end() command! PlugSync PlugUpgrade | PlugClean! | PlugInstall --sync | PlugUpdate lua require('impatient') luafile ~/dotfiles/.config/nvim/plugin_config/mini.lua " call cmp_init() " }}} " {{{ user owned mappings Keymap n [b 'Qfutils BCycle -' .. v:count1 .. '' Keymap n ]b 'Qfutils BCycle ' .. v:count1 .. '' Keymap n [q 'Qfutils CCycle -' .. v:count1 .. '' Keymap n ]q 'Qfutils CCycle ' .. v:count1 .. '' " [Vim で q を prefix キーにする - 永遠に未完成](https://thinca.hatenablog.com/entry/q-as-prefix-key-in-vim) nnoremap