Migrate from vim to nvim

This commit is contained in:
Rob Watson 2021-06-22 06:24:37 +02:00
parent c07c1b474b
commit 5005b4c667
14 changed files with 684 additions and 10 deletions

View File

@ -64,7 +64,7 @@
email = rob@netflux.io email = rob@netflux.io
name = Rob Watson name = Rob Watson
[core] [core]
editor = vim editor = nvim
quotePath = false quotePath = false
commitGraph = true commitGraph = true
pager = delta pager = delta

611
nvimrc Normal file
View File

@ -0,0 +1,611 @@
" TODO: remove
set runtimepath^=~/.vim runtimepath+=~/.vim/after
let &packpath = &runtimepath
set background=dark
syntax on
filetype plugin indent on
let mapleader=','
" netrw
let g:netrw_banner = 0
let g:netrw_liststyle = 1
let g:netrw_list_hide = '^\.'
let g:netrw_winsize=25
map <leader>n <esc>:Lexplore<cr>
" fix helptags for opt/ plugins
" https://vi.stackexchange.com/questions/17210/generating-help-tags-for-packages-that-are-loaded-by-vim-8s-package-management
command! -nargs=0 -bar Helptags
\ for p in glob('~/.vim/pack/git-plugins/opt/*', 1, 1)
\| exe 'packadd ' . fnamemodify(p, ':t')
\| endfor
\| helptags ALL
set shiftwidth=2
set shiftround
set tabstop=2
set expandtab
set smarttab
set splitbelow
set splitright
set encoding=utf-8
set hidden
set nowrap
set smartindent
set copyindent
set autoindent
set hlsearch
set showmatch
set wildmenu
set wildmode=list:full,full
set number
set relativenumber
set ruler
set backspace=indent,eol,start
set ignorecase
set smartcase
set incsearch
set history=1000
set undolevels=1000
set title
set novisualbell
set noerrorbells
set nobackup
set noswapfile
set mouse=a
set mousemodel=popup_setpos
" https://github.com/tpope/vim-sensible/issues/78:
set lazyredraw
set timeoutlen=1000
set scrolloff=15
set dictionary=/usr/share/dict/words
" See :help thesaurus
set thesaurus=$HOME/Documents/thesaurus/thesaurus_pkg/thesaurus.txt
set shortmess+=I
set updatetime=250
set pastetoggle=<f2>
set pumheight=200
" Required for nvim-compe:
set completeopt=menuone,noselect
set complete-=i
set nrformats-=octal
set ttimeout
set ttimeoutlen=100
set formatoptions+=j
set autoread
" https://github.com/tpope/vim-sensible/issues/142:
set synmaxcol=500
" Enable 24-bit colours.
" https://github.com/alacritty/alacritty/issues/109#issuecomment-440353106
if exists('+termguicolors')
let &t_8f="\<Esc>[38;2;%lu;%lu;%lum"
let &t_8b="\<Esc>[48;2;%lu;%lu;%lum"
set termguicolors
endif
" Colour scheme:
packadd! nord-vim " https://github.com/arcticicestudio/nord-vim.git
colorscheme nord
augroup vimrc
autocmd!
" Automatically load/save views on files.
" https://vi.stackexchange.com/posts/13874/revisions
autocmd BufWinLeave,BufLeave,BufWritePost,BufHidden,QuitPre ?* nested silent! mkview!
autocmd BufWinEnter ?* silent! loadview
" set cursor line highlight in insert mode.
autocmd InsertEnter * set cul
autocmd InsertLeavePre * set nocul
" use tabs in .gitconfig
autocmd BufEnter .gitconfig setlocal shiftwidth=2 tabstop=2 noexpandtab
" Quickfix window is always full-width.
" https://github.com/fatih/vim-go/issues/1757#issuecomment-565130503
autocmd FileType qf if (getwininfo(win_getid())[0].loclist != 1) | wincmd J | endif
" Remove trailing whitespace pre-save:
autocmd FileType go,ruby,markdown,rust,python,markdown,lua autocmd BufWritePre <buffer> %s/\s\+$//e
augroup end
" Don't remember the current directory for a given file:
set viewoptions-=curdir
set viewoptions-=options
set sessionoptions-=options
" Key mappings:
nnoremap j gj
nnoremap k gk
map <up> <nop>
map <down> <nop>
map <left> <nop>
map <right> <nop>
imap <up> <nop>
imap <down> <nop>
imap <left> <nop>
imap <right> <nop>
nmap ]q :cn<cr>
nmap [q :cp<cr>
nnoremap <silent> <leader>w :w<cr>
nnoremap <silent> <leader>/ :nohlsearch<cr>
nnoremap <silent> <leader><space> :nohlsearch<cr>
" Select just-pasted text:
nnoremap <silent> <leader>0 `[v`]
" Select just-pasted text and re-indent:
nnoremap <silent> <leader>) `[v`]=
nnoremap <silent> <leader>1 :set relativenumber!<cr>
nnoremap <silent> <leader>! :windo set norelativenumber<cr>
nnoremap <leader>m :marks<cr>
nnoremap <leader>v :vsplit<cr>
nnoremap <leader>s :split<cr>
nnoremap <leader>rp "_dd<bar>P
lua <<EOF
function _G.insert_uuid()
local uuid = vim.call("system", "uuidprint")
vim.call("setreg", "u", uuid)
vim.api.nvim_command([[normal! "up]])
end
vim.api.nvim_set_keymap("n", "<leader>uu", [[:lua _G.insert_uuid()<cr>]], {noremap = true, silent = true})
vim.api.nvim_set_keymap("i", "<c-d><c-u>", [[<esc>:lua _G.insert_uuid()<cr>a]], {noremap = true, silent = true})
EOF
" Git mappings
"
" Copy Git permalink to clipboard for either current line or range
function! CopyGitURLToLineOrRange() range
if a:firstline == a:lastline
execute ".GBrowse!"
else
execute a:firstline . "," . a:lastline . "GBrowse!"
endif
endfunction
function! OpenGitURLToLineOrRange() range
if a:firstline == a:lastline
execute ".GBrowse"
else
execute a:firstline . "," . a:lastline . "GBrowse"
endif
endfunction
nnoremap <leader>ab :Git blame<cr>
nnoremap <leader>as :Gstatus<cr>
nnoremap <leader>ac :Commits<cr>
nnoremap <leader>ah :GitGutterLineHighlightsToggle<cr>
nnoremap <leader>aY :call CopyGitURLToLineOrRange()<cr>
vnoremap <leader>aY :call CopyGitURLToLineOrRange()<cr>
nnoremap <leader>ao :call OpenGitURLToLineOrRange()<cr>
nnoremap <leader>ap :execute 'silent !ghpr <c-r><c-f>' \| redraw!<cr>
" echo filename of current buffer:
nmap <leader>fe :echom expand("%:p")<cr>
" yank filename of current buffer:
function! CopyToDefaultRegister()
let @" = expand("%:p")
echom expand("%:p")
endfunction
nmap <leader>fy :call CopyToDefaultRegister()<cr>
" and into + register:
function! CopyToSystemClipboard()
let @* = expand("%:p")
let @+ = expand("%:p")
echom expand("%:p")
endfunction
nmap <leader>fY :call CopyToSystemClipboard()<cr>
" disable Ex mode
nnoremap Q <Nop>
function! ToggleQuickFix()
if empty(filter(getwininfo(), 'v:val.quickfix'))
copen
else
cclose
endif
endfunction
nmap <silent> <leader>q :call ToggleQuickFix()<cr>
nmap <silent> <leader>l :lclose<cr>
" vim-markdown configuration:
let g:vim_markdown_conceal = 1
" fzf configuration:
let g:fzf_action = {
\ 'ctrl-t': 'tab split',
\ 'ctrl-s': 'split',
\ 'ctrl-v': 'vsplit' }
nmap <leader>t :Files<cr>
nmap <leader>T :GFiles<cr>
nmap <leader>b :Buffers<cr>
nmap <leader>gg :Rg<cr>
" Lightline configuration:
packadd! lightline.vim " https://github.com/itchyny/lightline.vim.git
set laststatus=2
function! LightlineLSPErrorText()
let l:count = luaeval("vim.lsp.diagnostic.get_count(0, [[Error]])")
if l:count == 0
return ''
endif
return l:count . 'E'
endfunction
function! LightlineLSPWarningText()
let l:count = luaeval("vim.lsp.diagnostic.get_count(0, [[Warning]])")
if l:count == 0
return ''
endif
return l:count . 'W'
endfunction
function! LightlineLSPInformationText()
let l:count = luaeval("vim.lsp.diagnostic.get_count(0, [[Information]])")
if l:count == 0
return ''
endif
return l:count . 'I'
endfunction
let g:lightline = {
\ 'colorscheme': 'seoul256',
\ 'active': {
\ 'left': [ [ 'mode', 'paste' ],
\ [ 'readonly', 'filename', 'modified' ],
\ [ 'gitbranch' ], ['lsperror', 'lspwarn', 'lspinfo' ] ],
\ 'right': [ ['lineinfo'], ['percent'], ['filetype'], ['gobuild'] ],
\ },
\ 'component_function': {
\ 'gobuild': 'go#statusline#Show',
\ 'gitbranch': 'FugitiveStatusline',
\ },
\ 'component_expand': {
\ 'lsperror': 'LightlineLSPErrorText',
\ 'lspwarn': 'LightlineLSPWarningText',
\ 'lspinfo': 'LightlineLSPInformationText',
\ },
\ 'component_type': {
\ 'lsperror': 'error',
\ 'lspwarn': 'warning',
\ },
\ 'mode_map': {
\ 'n' : 'N',
\ 'i' : 'I',
\ 'R' : 'R',
\ 'v' : 'V',
\ 'V' : 'V-LINE',
\ "\<C-v>": 'V-BLOCK',
\ 'c' : 'C',
\ 's' : 'S',
\ 'S' : 'S-LINE',
\ "\<C-s>": 'S-BLOCK',
\ 't': 'TERM',
\ },
\ }
" vim-gitgutter configuration
packadd! vim-gitgutter " https://github.com/airblade/vim-gitgutter.git
set signcolumn=yes
nmap ]h <Plug>(GitGutterNextHunk)
nmap [h <Plug>(GitGutterPrevHunk)
omap ih <Plug>(GitGutterTextObjectInnerPending)
omap ah <Plug>(GitGutterTextObjectOuterPending)
xmap ih <Plug>(GitGutterTextObjectInnerVisual)
xmap ah <Plug>(GitGutterTextObjectOuterVisual)
" vim-fugitive
packadd! vim-fugitive " https://github.com/tpope/vim-fugitive.git
" vim-go
" Doesn't work in after/ftplugin/go.vim:
let g:go_def_mapping_enabled = 0
packadd! vim-go " https://github.com/fatih/vim-go.git
" load internal plugins:
runtime macros/matchit.vim
" load other plugins:
packadd! rust.vim " https://github.com/rust-lang/rust.vim.git
packadd! tmux-complete.vim " https://github.com/wellle/tmux-complete.vim.git
packadd! vim-commentary " https://github.com/tpope/vim-commentary.git
" Requires both fzf.vim plugin to be manually installed:
" https://github.com/junegunn/fzf/blob/master/plugin/fzf.vim
" and also this separate plugin, which is loaded here:
packadd! fzf.vim " https://github.com/junegunn/fzf.vim.git
packadd! vim-surround " https://github.com/tpope/vim-surround.git
packadd! vim-rhubarb " https://github.com/tpope/vim-rhubarb.git
packadd! editorconfig-vim " https://github.com/editorconfig/editorconfig-vim.git
packadd! vim-wordmotion " https://github.com/chaoren/vim-wordmotion.git
" enable inline vim highlighting:
let g:vimsyn_embed= 'lPr'
" Treesitter
packadd! nvim-treesitter " https://github.com/nvim-treesitter/nvim-treesitter.git
packadd! nvim-treesitter-textobjects " https://github.com/nvim-treesitter/nvim-treesitter-textobjects.git
packadd! nvim-treesitter-refactor " https://github.com/nvim-treesitter/nvim-treesitter-refactor.git
packadd! playground " https://github.com/nvim-treesitter/playground.git
lua <<EOF
require 'nvim-treesitter.configs'.setup {
ensure_installed = "maintained",
highlight = {
enable = true,
},
incremental_selection = {
enable = true,
},
indent = {
enable = false,
},
textobjects = {
select = {
enable = true,
lookahead = true,
keymaps = {
["ak"] = "@keyed_element.outer",
["av"] = "@keyed_element.inner",
["ia"] = "@parameter.inner",
["aa"] = "@parameter.outer",
["ac"] = "@comment.outer",
["at"] = "@statement.outer",
["ar"] = "@return",
["af"] = "@function.outer",
["if"] = "@function.inner",
},
},
move = {
enable = true,
set_jumps = true,
goto_next_start = {
["]a"] = "@parameter.inner",
["]f"] = "@function.outer",
["]F"] = "@function.inner",
},
goto_previous_start = {
["[a"] = "@parameter.inner",
["[f"] = "@function.outer",
["[F"] = "@function.inner",
},
},
refactor = {
-- TODO: navigation broken.
navigation = {
enable = true,
keymaps = {
goto_next_usage = "]r",
goto_previous_usage = "[r",
},
},
},
lsp_interop = {
enable = true,
peek_definition_code = {
["<leader>d"] = "@class.outer",
["<leader>d"] = "@function.outer",
},
},
},
playground = {
enable = true,
disable = {},
updatetime = 25,
persist_queries = false,
keybindings = {
toggle_query_editor = 'o',
toggle_hl_groups = 'i',
toggle_injected_languages = 't',
toggle_anonymous_nodes = 'a',
toggle_language_display = 'I',
focus_language = 'f',
unfocus_language = 'F',
update = 'R',
goto_node = '<cr>',
show_help = '?',
},
}
}
EOF
" LSP
packadd! nvim-lspconfig " https://github.com/neovim/nvim-lspconfig.git
packadd! lsp_signature.nvim " https://github.com/ray-x/lsp_signature.nvim.git
packadd! fzf-lsp.nvim " https://github.com/gfanto/fzf-lsp.nvim.git
lua <<EOF
local nvim_lsp = require('lspconfig')
local on_attach = function(client, bufnr)
-- nvim does not expose autocmd via Lua API yet:
vim.api.nvim_exec([[autocmd User LspDiagnosticsChanged call lightline#update()]], false)
local opts = { noremap=true, silent=false }
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', '<Cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>gD', '<Cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>e', '<Cmd>lua vim.lsp.buf.rename()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>r', '<Cmd>lua vim.lsp.buf.references()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>i', '<Cmd>lua vim.lsp.buf.implementation()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>ca', '<Cmd>lua vim.lsp.buf.code_action()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>ci', '<Cmd>lua vim.lsp.buf.incoming_calls()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>co', '<Cmd>lua vim.lsp.buf.outgoing_calls()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', ']e', '<Cmd>lua vim.lsp.diagnostic.goto_next({severity="Error"})<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '[e', '<Cmd>lua vim.lsp.diagnostic.goto_prev({severity="Error"})<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', ']d', '<Cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '[d', '<Cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'cd', '<Cmd>lua vim.lsp.diagnostic.clear(0)<CR>', opts)
-- fzf triggers:
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>fr', '<Cmd>References<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>fi', '<Cmd>Implementations<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>fs', '<Cmd>DocumentSymbols<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>fw', '<Cmd>WorkspaceSymbols<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>fc', '<Cmd>CodeActions<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>fci', '<Cmd>IncomingCalls<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>fco', '<Cmd>OutgoingCalls<CR>', opts)
require 'lsp_signature'.on_attach({
hint_enable = false,
})
end
-- Go
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities.textDocument.completion.completionItem.snippetSupport = true
capabilities.textDocument.completion.completionItem.resolveSupport = {
properties = {
'documentation',
'detail',
'additionalTextEdits',
}
}
nvim_lsp.gopls.setup{
settings = {
gopls = {
staticcheck = true,
analyses = {
unusedparams = true,
shadow = true,
unusedwrite = true,
unusedresult = true,
nilness = true,
},
},
},
capabilities = capabilities,
on_attach = on_attach,
}
-- Ruby
nvim_lsp.solargraph.setup{
on_attach = on_attach,
}
-- Lua
local system_name
if vim.fn.has("mac") == 1 then
system_name = "macOS"
elseif vim.fn.has("unix") == 1 then
system_name = "Linux"
else
print("Unsupported system for sumneko")
end
local sumneko_root_path = os.getenv("HOME").."/dev/lua-language-server"
local sumneko_binary = sumneko_root_path.."/bin/"..system_name.."/lua-language-server"
local runtime_path = vim.split(package.path, ';')
table.insert(runtime_path, "lua/?.lua")
table.insert(runtime_path, "lua/?/init.lua")
nvim_lsp.sumneko_lua.setup {
cmd = {sumneko_binary, "-E", sumneko_root_path .. "/main.lua"};
settings = {
Lua = {
runtime = {
version = 'LuaJIT',
path = runtime_path,
},
diagnostics = {
globals = {'vim'},
},
workspace = {
library = vim.api.nvim_get_runtime_file("", true),
},
telemetry = {
enable = false,
},
},
},
on_attach = on_attach,
}
EOF
" nvim-compe:
packadd! nvim-compe " https://github.com/hrsh7th/nvim-compe
packadd! compe-tmux " https://github.com/andersevenrud/compe-tmux
lua <<EOF
require 'compe'.setup {
enabled = true;
autocomplete = true;
debug = false;
min_length = 1;
preselect = 'enable';
throttle_time = 80;
source_timeout = 200;
resolve_timeout = 800;
incomplete_delay = 400;
max_abbr_width = 100;
max_kind_width = 100;
max_menu_width = 100;
documentation = true;
source = {
path = true;
buffer = true;
calc = true;
nvim_lsp = true;
nvim_lua = true;
vsnip = false;
ultisnips = false;
tmux = true;
treesitter = false;
};
}
EOF
inoremap <silent><expr> <C-y> compe#confirm('<C-y>')
inoremap <silent><expr> <C-e> compe#close('<C-e>')
inoremap <silent><expr> <C-f> compe#scroll({ 'delta': +4 })
inoremap <silent><expr> <C-d> compe#scroll({ 'delta': -4 })
" TAB navigation support:
lua <<EOF
local t = function(str)
return vim.api.nvim_replace_termcodes(str, true, true, true)
end
local check_back_space = function()
local col = vim.fn.col('.') - 1
if col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then
return true
else
return false
end
end
_G.tab_complete = function()
if vim.fn.pumvisible() == 1 then
return t "<C-n>"
elseif check_back_space() then
return t "<Tab>"
else
return vim.fn['compe#complete']()
end
end
_G.s_tab_complete = function()
if vim.fn.pumvisible() == 1 then
return t "<C-p>"
else
return t "<S-Tab>"
end
end
vim.api.nvim_set_keymap("i", "<Tab>", "v:lua.tab_complete()", {expr = true})
vim.api.nvim_set_keymap("s", "<Tab>", "v:lua.tab_complete()", {expr = true})
vim.api.nvim_set_keymap("i", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})
vim.api.nvim_set_keymap("s", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})
EOF

20
script/installnvim Executable file
View File

@ -0,0 +1,20 @@
#!/usr/bin/env bash
#
# Clone or update nvim to $HOME/dev/neovim, build and install to $HOME/local
set -e
mkdir -p $HOME/dev
destdir=$HOME/dev/neovim
if [ -d $destdir ]; then
echo "Updating nvim..."
cd $destdir
git pull --rebase
else
echo "Cloning nvim..."
cd $HOME/dev
git clone -q https://github.com/neovim/neovim.git neovim
cd $destdir
fi
make CMAKE_BUILD_TYPE=Release CMAKE_INSTALL_PREFIX=$HOME/local
make install

View File

@ -17,7 +17,7 @@ pluginhome=$HOME/.vim/pack/git-plugins/opt
mkdir -p $pluginhome mkdir -p $pluginhome
cd $pluginhome cd $pluginhome
grep packadd! $HOME/.vimrc | grep -o 'https.*$' | while read -r url ; do grep packadd! $HOME/.config/nvim/init.vim | grep -o 'https.*$' | while read -r url ; do
dirname=$(basename $url .git) dirname=$(basename $url .git)
if [ -d "$dirname" ]; then if [ -d "$dirname" ]; then
echo "Exists: $dirname" echo "Exists: $dirname"

View File

@ -15,7 +15,7 @@ else
fi fi
tmux new -d -s $sessionname tmux new -d -s $sessionname
tmux rename-window -t $sessionname:1 cli tmux rename-window -t $sessionname:1 cli
tmux new-window -t $sessionname -n vim vim tmux new-window -t $sessionname -n vim nvim
tmux select-window -t $sessionname:1 tmux select-window -t $sessionname:1
# https://github.com/tmux/tmux/issues/2064 # https://github.com/tmux/tmux/issues/2064
sleep 0.5 sleep 0.5

View File

@ -5,5 +5,11 @@
set -e set -e
updatealacritty updatealacritty
updatevim updatenvim
updatevimplugins updatevimplugins
echo "Installing gopls..."
cd $HOME
go get golang.org/x/tools/gopls@latest
echo "Done"

1
script/updatenvim Symbolic link
View File

@ -0,0 +1 @@
installnvim

5
script/uuidprint Executable file
View File

@ -0,0 +1,5 @@
#!/usr/bin/env bash
#
# uuidprint - generate and print a lower-case UUID v4
uuidgen | tr '[:upper:]' '[:lower:]' | tr -d '\n'

View File

@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# #
# uuidc - generate and copy a lower-case UUID v4 # uuidyank - generate and copy a lower-case UUID v4
# TODO: fix for Linux # TODO: fix for Linux
uuidgen | tr '[:upper:]' '[:lower:]' | tr -d '\n' | pbcopy uuidprint | pbcopy

View File

@ -23,7 +23,7 @@ bind-key v split-window -h
bind-key s split-window -v bind-key s split-window -v
bind-key p new-window \; set window-status-style fg=white,bg=red bind-key p new-window \; set window-status-style fg=white,bg=red
bind-key c new-window -n 'cli' bind-key c new-window -n 'cli'
bind-key e new-window -n 'vim' vim bind-key e new-window -n 'vim' nvim
bind-key C rename-window 'cli' bind-key C rename-window 'cli'
bind-key E rename-window 'vim' bind-key E rename-window 'vim'

View File

@ -29,13 +29,15 @@ nnoremap <silent> ds :GoDebugStep<cr>
" Vim-Go configuration " Vim-Go configuration
let g:go_gopls_enabled = 0 let g:go_gopls_enabled = 0
let g:go_fmt_autosave = 0 let g:go_fmt_autosave = 1
let g:go_imports_autosave = 0 let g:go_imports_autosave = 0
let g:go_textobj_enabled = 0
let g:go_auto_sameids = 0 let g:go_auto_sameids = 0
let g:go_auto_type_info = 0 let g:go_auto_type_info = 0
let g:go_code_completion_enabled = 0 let g:go_code_completion_enabled = 0
let g:go_echo_command_info = 0 let g:go_echo_command_info = 0
let g:go_echo_go_info = 0 let g:go_echo_go_info = 0
let g:go_textobj_enabled = 0
let g:go_highlight_diagnostic_errors = 0 let g:go_highlight_diagnostic_errors = 0
let g:go_highlight_diagnostic_warnings = 0 let g:go_highlight_diagnostic_warnings = 0
let g:go_highlight_trailing_whitespace_error=0 let g:go_highlight_trailing_whitespace_error=0

View File

@ -0,0 +1,28 @@
;; key/value-like types. Works with struct values, struct definitions and parameter value/type pairs:
;;
;; @keyed_element.outer => key and value
;; @keyed_element.inner => value
(keyed_element (_) . (_) @keyed_element.inner) @keyed_element.outer
(field_declaration type: (_) @keyed_element.inner) @keyed_element.outer
(parameter_declaration type: (_) @keyed_element.inner) @keyed_element.outer
;; return statement
(return_statement (_) @return)
;; functions and methods with an optional preceeding comment:
;;
;; TODO: comment only matches a single line.
((
(comment)? @_start
.
(method_declaration) @_end
) (make-range! "function_with_comment" @_start @_end))
((
(comment)? @_start
.
(function_declaration) @_end
) (make-range! "function_with_comment" @_start @_end))

4
zshenv
View File

@ -4,8 +4,8 @@
export TERM=xterm-256color export TERM=xterm-256color
export XDG_CONFIG_HOME="$HOME/.config" export XDG_CONFIG_HOME="$HOME/.config"
export EDITOR="vim" export EDITOR="nvim"
export VISUAL="vim" export VISUAL="nvim"
# ZSH: # ZSH:
export ZDOTDIR="$XDG_CONFIG_HOME/zsh" export ZDOTDIR="$XDG_CONFIG_HOME/zsh"

1
zshrc
View File

@ -94,6 +94,7 @@ alias rgt="rg -g '*\_test.go' -g '!vendor/'"
alias tm="tmux attach" alias tm="tmux attach"
alias tmd="tmux new -s default -c $HOME || tmux attach -t default" alias tmd="tmux new -s default -c $HOME || tmux attach -t default"
alias tms="tmuxsess" alias tms="tmuxsess"
alias vim="nvim"
alias wg="sudo wg" alias wg="sudo wg"
alias wgdown="sudo wgdown" alias wgdown="sudo wgdown"
alias wgup="sudo wgup" alias wgup="sudo wgup"