- 安装zsh
- 同步配置文件
- 安装autosuggestions
- 安装autojump
- 同步配置文件
- 版本>2.2
- 同步配置文件
- vim 8+
- 安装vundule,之后安装插件
- 安装fzf
- 安装lsp for ALE
coc or ale or deoplete
| :) |
| " golang | |
| function! VimGoSetup() | |
| " vim-go related mappings | |
| let g:go_highlight_functions = 1 | |
| let g:go_fmt_command = "goimports" | |
| let g:go_highlight_methods = 1 | |
| let g:go_highlight_structs = 1 | |
| let g:go_highlight_interfaces = 1 | |
| let g:go_highlight_operators = 1 | |
| let g:go_highlight_build_constraints = 1 | |
| endfunction | |
| call VimGoSetup() | |
| let b:ale_linters = ['gopls'] | |
| let g:go_auto_type_info = 1 |
| set ts=2 | |
| set sw=2 | |
| set expandtab autoindent |
| " Enable ESLint only for JavaScript. | |
| let b:ale_linters = ['tsserver', 'eslint'] | |
| setlocal tabstop=2 | |
| setlocal shiftwidth=2 | |
| setlocal noexpandtab |
| let b:ale_linter_aliases = ['css', 'javascript'] | |
| let b:ale_linters = ['stylelint', 'eslint'] | |
| setlocal tabstop=2 | |
| setlocal shiftwidth=2 | |
| setlocal noexpandtab |
| au BufNewFile,BufRead *.py | |
| \ set tabstop=8 | | |
| \ set softtabstop=4| | |
| \ set shiftwidth=4| | |
| \ set textwidth=120| | |
| \ set expandtab| | |
| \ set autoindent | |
| let b:ale_linters = ['pyls', 'pylint'] | |
| let b:ale_python_pylint_options = '--disable C0103,E0401,C0111,R0911,R0913' | |
| let b:ale_python_pylint_use_msg_id = 1 |
coc or ale or deoplete
| setw -g mode-keys vi | |
| # Use the xterm-256color terminal | |
| set -g default-terminal "xterm-256color" | |
| # Apply Tc | |
| set-option -ga terminal-overrides ",xterm-256color:Tc" | |
| # Smart pane switching with awareness of Vim splits. | |
| # See: https://github.com/christoomey/vim-tmux-navigator | |
| # see: https://blog.bugsnag.com/tmux-and-vim/ | |
| is_vim="ps -o state= -o comm= -t '#{pane_tty}' \ | |
| | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'" | |
| is_fzf="ps -o state= -o comm= -t '#{pane_tty}' \ | |
| | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?fzf$'" | |
| bind -n C-h run "($is_vim && tmux send-keys C-h) || \ | |
| tmux select-pane -L" | |
| bind -n C-j run "($is_vim && tmux send-keys C-j) || \ | |
| ($is_fzf && tmux send-keys C-j) || \ | |
| tmux select-pane -D" | |
| bind -n C-k run "($is_vim && tmux send-keys C-k) || \ | |
| ($is_fzf && tmux send-keys C-k) || \ | |
| tmux select-pane -U" | |
| bind -n C-l run "($is_vim && tmux send-keys C-l) || \ | |
| tmux select-pane -R" | |
| bind -n 'C-\' if-shell "$is_vim" "send-keys 'C-\\'" "select-pane -l" | |
| bind | split-window -h -c "#{pane_current_path}" | |
| bind - split-window -v -c "#{pane_current_path}" |
| setlocal expandtab autoindent smartindent shiftwidth=2 softtabstop=2 tabstop=8 |
| set nocompatible " be iMproved, required | |
| set number | |
| set autoread | |
| set fillchars="" | |
| let mapleader = "\<Space>" | |
| filetype off " required | |
| " Plugins will be downloaded under the specified directory. | |
| call plug#begin('~/.vim/plugged') | |
| " git | |
| Plug 'tpope/vim-fugitive' | |
| Plug 'airblade/vim-gitgutter' | |
| Plug 'Xuyuanp/nerdtree-git-plugin' | |
| Plug 'scrooloose/nerdtree' | |
| " autocomplete | |
| Plug 'dense-analysis/ale' | |
| " find file | |
| Plug 'junegunn/fzf.vim' | |
| " tmux | |
| Plug 'christoomey/vim-tmux-navigator' | |
| " theme | |
| Plug 'joshdick/onedark.vim' | |
| Plug 'vim-airline/vim-airline' | |
| Plug 'vim-airline/vim-airline-themes' | |
| " misc | |
| Plug 'jiangmiao/auto-pairs' | |
| Plug 'Yggdroot/indentLine' | |
| Plug 'majutsushi/tagbar' " check file tag struct | |
| Plug 'tpope/vim-commentary' " comment code | |
| " below are for specific languages | |
| " | |
| " List ends here. Plugins become visible to Vim after this call. | |
| call plug#end() | |
| " nerdtree | |
| autocmd StdinReadPre * let s:std_in=1 | |
| autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | endif | |
| autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif | |
| let NERDTreeIgnore=['\.pyc$', '\~$'] "ignore files in NERDTree | |
| let NERDTreeMinimalUI = 1 | |
| let NERDTreeDirArrows = 1 | |
| let NERDTreeQuitOnOpen = 1 | |
| let NERDTreeAutoDeleteBuffer = 1 | |
| nnoremap <Leader>nt :NERDTreeToggle<Enter> | |
| nnoremap <Leader>nf :NERDTreeFocus<Enter> | |
| " Check if NERDTree is open or active | |
| function! IsNERDTreeOpen() | |
| return exists("t:NERDTreeBufName") && (bufwinnr(t:NERDTreeBufName) != -1) | |
| endfunction | |
| " Call NERDTreeFind iff NERDTree is active, current window contains a modifiable | |
| " file, and we're not in vimdiff | |
| function! SyncTree() | |
| if &modifiable && IsNERDTreeOpen() && strlen(expand('%')) > 0 && !&diff | |
| NERDTreeFind | |
| wincmd p | |
| endif | |
| endfunction | |
| " Highlight currently open buffer in NERDTree | |
| autocmd BufEnter * call SyncTree() | |
| " window and tab | |
| nnoremap <silent> vv <C-w>v | |
| nnoremap <silent> vs <C-w>s | |
| set splitbelow | |
| set splitright | |
| " theme | |
| syntax on | |
| colorscheme onedark | |
| set cursorline | |
| " color | |
| "Use 24-bit (true-color) mode in Vim/Neovim when outside tmux. | |
| "If you're using tmux version 2.2 or later, you can remove the outermost $TMUX check and use tmux's 24-bit color support | |
| "(see < http://sunaku.github.io/tmux-24bit-color.html#usage > for more information.) | |
| if (has("nvim")) | |
| "For Neovim 0.1.3 and 0.1.4 < https://github.com/neovim/neovim/pull/2198 > | |
| let $NVIM_TUI_ENABLE_TRUE_COLOR=1 | |
| endif | |
| "For Neovim > 0.1.5 and Vim > patch 7.4.1799 < https://github.com/vim/vim/commit/61be73bb0f965a895bfb064ea3e55476ac175162 > | |
| "Based on Vim patch 7.4.1770 (`guicolors` option) < https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd > | |
| " < https://github.com/neovim/neovim/wiki/Following-HEAD#20160511 > | |
| if (has("termguicolors")) | |
| set termguicolors | |
| endif | |
| " airline | |
| let g:airline_theme='deus' | |
| let g:airline#extensions#default#layout = [ | |
| \ [ 'a', 'b', 'c' ], | |
| \ [ 'x', 'z' ] | |
| \ ] | |
| " ale | |
| let g:ale_sign_column_always = 1 | |
| let g:airline#extensions#ale#enabled = 1 | |
| let g:ale_completion_enabled = 1 | |
| nmap <Leader>g :ALEGoToDefinitionInVSplit<CR> | |
| nmap <Leader>l :ALEFindReferences<CR> | |
| nmap <silent> [e <Plug>(ale_previous_wrap) | |
| nmap <silent> ]e <Plug>(ale_next_wrap) | |
| " g:ale_lint_on_save >> default is true | |
| let g:ale_lint_on_text_changed = 'never' | |
| let g:ale_lint_on_insert_leave = 0 | |
| let g:ale_lint_on_enter = 0 | |
| let g:ale_echo_msg_error_str = 'E' | |
| let g:ale_echo_msg_warning_str = 'W' | |
| let g:ale_echo_msg_format = '[%linter%] %code% %s' | |
| let g:ale_fix_on_save = 1 | |
| let g:ale_fixers = { | |
| \ '*': ['remove_trailing_lines', 'trim_whitespace'], | |
| \} | |
| " indent | |
| let g:indentLine_char = '┆' | |
| let g:indentLine_color_term = 239 | |
| set conceallevel=1 | |
| set expandtab | |
| let g:indentLine_conceallevel=1 | |
| let g:indentLine_char_list = ['┆',] | |
| " git | |
| nmap ]h <Plug>GitGutterNextHunk | |
| nmap [h <Plug>GitGutterPrevHunk | |
| set diffopt+=vertical | |
| " fzf | |
| " This is the default extra key bindings | |
| set rtp+=/usr/local/opt/fzf " for mac | |
| let g:fzf_action = { | |
| \ 'ctrl-t': 'tab split', | |
| \ 'ctrl-s': 'split', | |
| \ 'ctrl-v': 'vsplit' } | |
| " Default fzf layout | |
| " - down / up / left / right | |
| let g:fzf_layout = { 'down': '~40%' } | |
| " Customize fzf colors to match your color scheme | |
| let g:fzf_colors = | |
| \ { 'fg': ['fg', 'Normal'], | |
| \ 'bg': ['bg', 'Normal'], | |
| \ 'hl': ['fg', 'Comment'], | |
| \ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'], | |
| \ 'bg+': ['bg', 'CursorLine', 'CursorColumn'], | |
| \ 'hl+': ['fg', 'Statement'], | |
| \ 'info': ['fg', 'PreProc'], | |
| \ 'border': ['fg', 'Ignore'], | |
| \ 'prompt': ['fg', 'Conditional'], | |
| \ 'pointer': ['fg', 'Exception'], | |
| \ 'marker': ['fg', 'Keyword'], | |
| \ 'spinner': ['fg', 'Label'], | |
| \ 'header': ['fg', 'Comment'] } | |
| " Enable per-command history. | |
| " CTRL-N and CTRL-P will be automatically bound to next-history and | |
| " previous``-history instead of down and up. If you don't like the change, | |
| " explicitly bind the keys to down and up in your $FZF_DEFAULT_OPTS. | |
| let g:fzf_history_dir = '~/.local/share/fzf-history' | |
| " Augmenting Ag command using fzf#vim#with_preview function | |
| " * fzf#vim#with_preview([[options], preview window, [toggle keys...]]) | |
| " * For syntax-highlighting, Ruby and any of the following tools are required: | |
| " - Highlight: http://www.andre-simon.de/doku/highlight/en/highlight.php | |
| " - CodeRay: http://coderay.rubychan.de/ | |
| " - Rouge: https://github.com/jneen/rouge | |
| " | |
| " :Ag - Start fzf with hidden preview window that can be enabled with "?" key | |
| " :Ag! - Start fzf in fullscreen and display the preview window above | |
| command! -bang -nargs=* Ag | |
| \ call fzf#vim#ag(<q-args>, | |
| \ <bang>0 ? fzf#vim#with_preview('up:60%') | |
| \ : fzf#vim#with_preview('right:50%:hidden', '?'), | |
| \ <bang>0) | |
| map <Leader>lf :BTags<CR> | |
| map <Leader>ff :Files<CR> | |
| map <Leader>fa :Ag<CR> | |
| " match only file content not file name | |
| command! -bang -nargs=* Ag call fzf#vim#ag(<q-args>, {'options': '--delimiter : --nth 4..'}, <bang>0) | |
| " fzf ends | |
| " tricks from from https://statico.github.io/vim.html | |
| " move for wrapped lines | |
| nmap j gj | |
| nmap k gk | |
| " for search | |
| set incsearch | |
| set ignorecase | |
| set smartcase | |
| set hlsearch | |
| nmap \q :nohlsearch<CR> |
| # If you come from bash you might have to change your $PATH. | |
| # export PATH=$HOME/bin:/usr/local/bin:$PATH | |
| # Path to your oh-my-zsh installation. | |
| export ZSH=$HOME/.oh-my-zsh | |
| # Set name of the theme to load. Optionally, if you set this to "random" | |
| # it'll load a random theme each time that oh-my-zsh is loaded. | |
| # See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes | |
| ZSH_THEME="robbyrussell" | |
| # Set list of themes to load | |
| # Setting this variable when ZSH_THEME=random | |
| # cause zsh load theme from this variable instead of | |
| # looking in ~/.oh-my-zsh/themes/ | |
| # An empty array have no effect | |
| # ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) | |
| # Uncomment the following line to use case-sensitive completion. | |
| # CASE_SENSITIVE="true" | |
| # Uncomment the following line to use hyphen-insensitive completion. Case | |
| # sensitive completion must be off. _ and - will be interchangeable. | |
| # HYPHEN_INSENSITIVE="true" | |
| # Uncomment the following line to disable bi-weekly auto-update checks. | |
| # DISABLE_AUTO_UPDATE="true" | |
| # Uncomment the following line to change how often to auto-update (in days). | |
| # export UPDATE_ZSH_DAYS=13 | |
| # Uncomment the following line to disable colors in ls. | |
| # DISABLE_LS_COLORS="true" | |
| # Uncomment the following line to disable auto-setting terminal title. | |
| # DISABLE_AUTO_TITLE="true" | |
| # Uncomment the following line to enable command auto-correction. | |
| # ENABLE_CORRECTION="true" | |
| # Uncomment the following line to display red dots whilst waiting for completion. | |
| # COMPLETION_WAITING_DOTS="true" | |
| # Uncomment the following line if you want to disable marking untracked files | |
| # under VCS as dirty. This makes repository status check for large repositories | |
| # much, much faster. | |
| # DISABLE_UNTRACKED_FILES_DIRTY="true" | |
| # Uncomment the following line if you want to change the command execution time | |
| # stamp shown in the history command output. | |
| # You can set one of the optional three formats: | |
| # "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" | |
| # or set a custom format using the strftime function format specifications, | |
| # see 'man strftime' for details. | |
| # HIST_STAMPS="mm/dd/yyyy" | |
| # Would you like to use another custom folder than $ZSH/custom? | |
| # ZSH_CUSTOM=/path/to/new-custom-folder | |
| # Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) | |
| # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ | |
| # Example format: plugins=(rails git textmate ruby lighthouse) | |
| # Add wisely, as too many plugins slow down shell startup. | |
| plugins=( | |
| git | |
| vi-mode | |
| tmux | |
| zsh-autosuggestions | |
| autojump | |
| zsh-at | |
| ) | |
| source $ZSH/oh-my-zsh.sh | |
| # User configuration | |
| # export MANPATH="/usr/local/man:$MANPATH" | |
| # You may need to manually set your language environment | |
| # export LANG=en_US.UTF-8 | |
| # Preferred editor for local and remote sessions | |
| # if [[ -n $SSH_CONNECTION ]]; then | |
| # export EDITOR='vim' | |
| # else | |
| # export EDITOR='mvim' | |
| # fi | |
| # Compilation flags | |
| # export ARCHFLAGS="-arch x86_64" | |
| # ssh | |
| # export SSH_KEY_PATH="~/.ssh/rsa_id" | |
| # Set personal aliases, overriding those provided by oh-my-zsh libs, | |
| # plugins, and themes. Aliases can be placed here, though oh-my-zsh | |
| # users are encouraged to define aliases within the ZSH_CUSTOM folder. | |
| # For a full list of active aliases, run `alias`. | |
| # | |
| # Example aliases | |
| # alias zshconfig="mate ~/.zshrc" | |
| # alias ohmyzsh="mate ~/.oh-my-zsh" | |
| export PROMPT='%{$fg[white]%}douban-dev %{$fg_bold[green]%}➜ %{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}' | |
| # autojump | |
| [[ -s /home/vagrant/.autojump/etc/profile.d/autojump.sh ]] && source /home/vagrant/.autojump/etc/profile.d/autojump.sh | |
| autoload -U compinit && compinit -u | |
| # proxy | |
| alias proxy='curl ip.cn; export all_proxy=socks5://127.0.0.1:1080; curl ip.cn' | |
| alias unproxy='unset all_proxy' | |
| [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh | |
| # vim | |
| export VIMRUNTIME=/usr/local/share/vim/vim81 | |
| # alias | |
| ## open html in browser and auto reload | |
| alias serve-browser="browser-sync start --server --files ." | |
| ## git | |
| alias gcd='git checkout dev' | |
| # vscode | |
| defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false | |
| [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh |