" Gina " ============================================================================== cabbrev git Gina " clever-f " ============================================================================== map ; (clever-f-repeat-forward) map , (clever-f-repeat-back) " translate.vim " ============================================================================== nnoremap t :Translate vnoremap t :Translate " vimdoc-ja " ============================================================================== set helplang=ja,en augroup VimrcHelp autocmd! autocmd FileType help nnoremap autocmd FileType help nnoremap autocmd FileType help nnoremap q q augroup END " lightline " ============================================================================== set laststatus=2 set noshowmode function! LightlineSkkGetMode() abort let l:mode = skkeleton#mode() if l:mode == '' return 'Aa' elseif l:mode == 'hira' return 'あ' elseif l:mode == 'kata' return 'ア' endif endfunction let g:lightline = { \ 'active': { \ 'left': [['mode', 'paste'], ['readonly', 'modified', 'filename'], ['skk' ,'radiru']], \ 'right': [['scroll'], ['fileencoding', 'filetype']], \ }, \ \ 'inactive': { \ 'left': [['filename']], \ 'right': [['filetype']], \ }, \ 'component_function': { \ 'radiru': 'radiru#playing_station', \ 'skk': 'LightlineSkkGetMode', \ 'lfilename': 'LightlineFilename' \ }, \} " fern vim " ============================================================================== let g:fern#disable_viewer_spinner = 1 augroup VimrcFern autocmd! " autocmd FileType fern setlocal nocursorline autocmd FileType fern setlocal nonumber autocmd FileType fern call s:fern_settings() autocmd FileType fern nnoremap CD (fern-action-cd) augroup END function! s:fern_settings() abort nmap p (fern-action-preview:toggle) nmap (fern-action-preview:auto:toggle) nmap fern_preview#is_win_visible()?"(fern-action-preview:scroll:down:half)":"" nmap fern_preview#is_win_visible()?"(fern-action-preview:scroll:up:half)":"" endfunction nnoremap f :Fern . -drawer -toggle let g:fern#renderer = "nerdfont" let g:fern#renderer#nerdfont#padding = " " augroup my-glyph-palette autocmd! * autocmd FileType fern call glyph_palette#apply() augroup END " denops.vim let g:denops#debug = 0 let g:denops#type_check = 0 " skkeleten " ============================================================================== if !filereadable(expand('~/.config/skk/SKK-JISYO.L')) call mkdir(expand('~/.config/skk'), 'p') call system('cd ~/.config/skk && wget http://openlab.jp/skk/dic/SKK-JISYO.L.gz && gzip -d SKK-JISYO.L.gz') endif imap (skkeleton-toggle) cmap (skkeleton-toggle) function! s:skkeleton_init() abort call skkeleton#config({ \ "globalJisyo": expand("~/.config/skk/SKK-JISYO.L"), \}) endfunction autocmd User skkeleton-initialize-pre call s:skkeleton_init() " colorscheme " ============================================================================== colorscheme nightfly let g:lightline['colorscheme'] = 'nightfly' " ddc.vim " ============================================================================== " call ddc#custom#patch_global({ " \ 'backspaceCompletion': v:true, " \ }) " call ddc#custom#patch_global('sources', [ " \ 'vim-lsp', " \ 'file', " \ 'around', " \ ]) " call ddc#custom#patch_global('sourceOptions', { " \ '_': { " \ 'matchers': ['matcher_fuzzy'], " \ 'sorters': ['sorter_fuzzy'], " \ 'ignoreCase': v:true, " \ } " \ }) " call ddc#custom#patch_global('sourceOptions', { " \ '_': { " \ 'forceCompletionPattern': '\.', " \ }, " \ }) " call ddc#custom#patch_global('sourceOptions', { " \ '_': { " \ 'minAutoCompleteLength': 1, " \ }, " \ }) " call ddc#custom#patch_global('sourceOptions', { " \ 'vim-lsp': { " \ 'matchers': ['matcher_head'], " \ 'mark': ' ', " \ 'dup': v:true, " \ }, " \ }) " call ddc#custom#patch_global('sourceOptions', { " \ 'file': { " \ 'mark': ' ', " \ 'isVolatile': v:true, " \ 'minAutoCompleteLength': 1000, " \ 'forceCompletionPattern': '\S/\S*' " \ }, " \}) " call ddc#custom#patch_global('sourceOptions', { " \ 'around': {'mark': ' '}, " \ }) " inoremap " \ pumvisible() ? '' : " \ (col('.') <= 1 getline('.')[col('.') - 2] =~# '\s') ? " \ '' : ddc#map#manual_complete() " inoremap pumvisible() ? '' : '' " " inoremap pumvisible() ? '' : '' " call ddc#enable() " LSP " ============================================================================== " function s:change_ts_ls() abort " if finddir('node_modules', expand('%:p:h') . ';') ==# '' " if exists('g:lsp_settings_filetype_typescript') && " \(g:lsp_settings_filetype_typescript->index('typescript-language-server') != -1) " call timerstart(100, {-> (execute("LspStopServer typescript-language-server"))}) " endif " let g:lsp_settings_filetype_typescript = ['deno'] " else " if exists('g:lsp_settings_filetype_typescript') && " \(g:lsp_settings_filetype_typescript->index('deno') != -1) " call timerstart(100, {-> (execute("LspStopServer deno"))}) " endif " let g:lsp_settings_filetype_typescript = ['typescript-language-server'] " endif " endfunction " augroup VimrcLspFt " autocmd! " autocmd BufReadPre *.js,*.ts,*.jsx,*.tsx :call s:change_ts_ls() " augroup END " function! s:on_lsp_buffer_enabled() abort " setlocal omnifunc=lsp#complete " nmap gd (lsp-definition) " nmap (lsp-rename) " endfunction " augroup lsp_install " au! " autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled() " augroup END " command! LspDebug let lsp_log_verbose=1 | let lsp_log_file = expand('~/lsp.log') " let g:lsp_diagnostics_enabled = 1 " let g:lsp_diagnostics_echo_cursor = 1 " let g:asyncomplete_auto_popup = 1 " let g:asyncomplete_popup_delay = 200 " let g:lsp_text_edit_enabled = 1 " CtrlP nnoremap p :CtrlP . -drawer -toggle " Ripgrep command! -nargs=* -complete=file Rg :call ripgrep#search() cabbrev rg Rg " Glance let g:glance#stylesheet = '@import url("https://cdn.jsdelivr.net/npm/water.css@2/out/water.css");' let g:glance#markdown_breaks = v:true " CoC " Always show the signcolumn, otherwise it would shift the text each time " diagnostics appear/become resolved set signcolumn=yes " Use tab for trigger completion with characters ahead and navigate " NOTE: There's always complete item selected by default, you may want to enable " no select by `"suggest.noselect": true` in your configuration file " NOTE: Use command ':verbose imap ' to make sure tab is not mapped by " other plugin before putting this into your config inoremap \ coc#pum#visible() ? coc#pum#next(1) : \ CheckBackspace() ? "\" : \ coc#refresh() inoremap coc#pum#visible() ? coc#pum#prev(1) : "\" " Make to accept selected completion item or notify coc.nvim to format " u breaks current undo, please make your own choice inoremap coc#pum#visible() ? coc#pum#confirm() \: "\u\\=coc#on_enter()\" function! CheckBackspace() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction " Use to trigger completion if has('nvim') inoremap coc#refresh() else inoremap coc#refresh() endif " Use `[g` and `]g` to navigate diagnostics " Use `:CocDiagnostics` to get all diagnostics of current buffer in location list nmap [g (coc-diagnostic-prev) nmap ]g (coc-diagnostic-next) " GoTo code navigation nmap gd (coc-definition) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap gr (coc-references) " Use K to show documentation in preview window nnoremap K :call ShowDocumentation() function! ShowDocumentation() if CocAction('hasProvider', 'hover') call CocActionAsync('doHover') else call feedkeys('K', 'in') endif endfunction " Highlight the symbol and its references when holding the cursor autocmd CursorHold * silent call CocActionAsync('highlight') " Symbol renaming nmap rn (coc-rename) " Formatting selected code xmap F (coc-format-selected) nmap F (coc-format-selected) augroup mygroup autocmd! " Setup formatexpr specified filetype(s) autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') " Update signature help on jump placeholder autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') augroup end " Applying code actions to the selected code block " Example: `aap` for current paragraph xmap a (coc-codeaction-selected) nmap a (coc-codeaction-selected) " Remap keys for applying code actions at the cursor position nmap ac (coc-codeaction-cursor) " Remap keys for apply code actions affect whole buffer nmap as (coc-codeaction-source) " Apply the most preferred quickfix action to fix diagnostic on the current line nmap qf (coc-fix-current) " Remap keys for applying refactor code actions nmap re (coc-codeaction-refactor) xmap r (coc-codeaction-refactor-selected) nmap r (coc-codeaction-refactor-selected) " Run the Code Lens action on the current line nmap cl (coc-codelens-action) " Map function and class text objects " NOTE: Requires 'textDocument.documentSymbol' support from the language server xmap if (coc-funcobj-i) omap if (coc-funcobj-i) xmap af (coc-funcobj-a) omap af (coc-funcobj-a) xmap ic (coc-classobj-i) omap ic (coc-classobj-i) xmap ac (coc-classobj-a) omap ac (coc-classobj-a) " Remap and to scroll float windows/popups if has('nvim-0.4.0') || has('patch-8.2.0750') nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" inoremap coc#float#has_scroll() ? "\=coc#float#scroll(1)\" : "\" inoremap coc#float#has_scroll() ? "\=coc#float#scroll(0)\" : "\" vnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" vnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" endif " Use CTRL-S for selections ranges " Requires 'textDocument/selectionRange' support of language server nmap (coc-range-select) xmap (coc-range-select) " Add `:Format` command to format current buffer command! -nargs=0 Format :call CocActionAsync('format') " Add `:Fold` command to fold current buffer command! -nargs=? Fold :call CocAction('fold', ) " Add `:OR` command for organize imports of the current buffer command! -nargs=0 OR :call CocActionAsync('runCommand', 'editor.action.organizeImport') " Add (Neo)Vim's native statusline support " NOTE: Please see `:h coc-status` for integrations with external plugins that " provide custom statusline: lightline.vim, vim-airline set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} " Mappings for CoCList " Show all diagnostics nnoremap a :CocList diagnostics " Manage extensions nnoremap e :CocList extensions " Show commands nnoremap c :CocList commands " Find symbol of current document nnoremap o :CocList outline " Search workspace symbols nnoremap s :CocList -I symbols " Do default action for next item nnoremap j :CocNext " Do default action for previous item nnoremap k :CocPrev " Resume latest coc list nnoremap p :CocListResume