Skip to content

Instantly share code, notes, and snippets.

@John-Lin
Last active December 25, 2019 11:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save John-Lin/feea5aed4c7d969101e17499cfed479a to your computer and use it in GitHub Desktop.
Save John-Lin/feea5aed4c7d969101e17499cfed479a to your computer and use it in GitHub Desktop.
dotfiles
# Configuration for Alacritty, the GPU enhanced terminal emulator.
# Any items in the `env` entry below will be added as
# environment variables. Some entries may override variables
# set by alacritty itself.
#env:
# TERM variable
#
# This value is used to set the `$TERM` environment variable for
# each instance of Alacritty. If it is not present, alacritty will
# check the local terminfo database and use 'alacritty' if it is
# available, otherwise 'xterm-256color' is used.
#TERM: xterm-256color
window:
# Window dimensions (changes require restart)
dimensions:
columns: 120
lines: 30
# Window padding (changes require restart)
#
# Blank space added around the window in pixels. This padding is scaled
# by DPI and the specified value is always added at both opposing sides.
padding:
x: 2
y: 2
# Spread additional padding evenly around the terminal content.
dynamic_padding: false
# Window decorations
#
# Available values:
# - `full`: Window with title bar and title bar buttons
# - `none`: Window without title bar, rounded corners, or drop shadow
# - `transparent`: Window with title bar with transparent background and title
# bar buttons
# - `buttonless`: Window with title bar with transparent background and no
# title bar buttons
# Window decorations
#
# Values for `decorations`:
# - full: Borders and title bar
# - none: Neither borders nor title bar
# - buttonless: Title bar, transparent background and title bar buttons
# - transparent: Title bar, transparent background, but no title bar buttons
decorations: full
#
# This setting defines the width of a tab in cells.
# value require a restart to take effect.
#
# Some applications, like Emacs, rely on knowing about the width of a tab.
# To prevent unexpected behavior in these applications, it's also required to
# change the `it` value in terminfo when altering this setting.
tabspaces: 8
# Font configuration (changes require restart)
font:
# Normal (roman) font face
normal:
family: SF Mono
# The `style` can be specified to pick a specific face.
style: Regular
# Bold font face
bold:
family: SF Mono
# The `style` can be specified to pick a specific face.
style: Bold
# Italic font face
italic:
family: SF Mono
# The `style` can be specified to pick a specific face.
style: Regular Italic
# Point size
size: 15.5
# Offset is the extra space around each character. `offset.y` can be thought of
# as modifying the line spacing, and `offset.x` as modifying the letter spacing.
offset:
x: 0
y: 0
# Glyph offset determines the locations of the glyphs within their cells with
# the default being at the bottom. Increasing `x` moves the glyph to the right,
# increasing `y` moves the glyph upwards.
glyph_offset:
x: 0
y: 0
# Thin stroke font rendering (OS X only)
#
# Thin strokes are suitable for retina displays, but for non-retina screens
# it is recommended to set `use_thin_strokes` to `false`
#
# macOS >= 10.14.x:
#
# If the font quality on non-retina display looks bad then set
# `use_thin_strokes` to `true` and enable font smoothing by running the
# following command:
# `defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO`
#
# This is a global setting and will require a log out or restart to take
# effect.
use_thin_strokes: true
debug:
# Display the time it takes to redraw each frame.
render_timer: false
# Keep the log file after quitting Alacritty.
persistent_logging: false
# Log level
#
# Values for `log_level`:
# - None
# - Error
# - Warn
# - Info
# - Debug
# - Trace
log_level: Warn
# Print all received window events.
print_events: false
# Record all characters and escape sequences as test data.
ref_test: false
# If `true`, bold text is drawn using the bright color variants.
draw_bold_text_with_bright_colors: true
# Colors (Tomorrow Night Bright)
colors:
# Default colors
primary:
background: '0x191919'
foreground: '0xeaeaea'
# Bright and dim foreground colors
#
# The dimmed foreground color is calculated automatically if it is not present.
# If the bright foreground color is not set, or `draw_bold_text_with_bright_colors`
# is `false`, the normal foreground color will be used.
#dim_foreground: '0x9a9a9a'
#bright_foreground: '0xffffff'
# Cursor colors
#
# Colors which should be used to draw the terminal cursor. If these are unset,
# the cursor color will be the inverse of the cell color.
cursor:
text: '0xf1c1c1'
cursor: '0xff2600'
# Normal colors
normal:
black: '0x000000'
red: '0xd54e53'
green: '0xb9ca4a'
yellow: '0xe6c547'
blue: '0x7aa6da'
magenta: '0xc397d8'
cyan: '0x70c0ba'
white: '0xffffff'
# Bright colors
bright:
black: '0x666666'
red: '0xff3334'
green: '0x9ec400'
yellow: '0xe7c547'
blue: '0x7aa6da'
magenta: '0xb77ee0'
cyan: '0x54ced6'
white: '0xffffff'
# Dim colors
dim:
black: '0x333333'
red: '0xf2777a'
green: '0x99cc99'
yellow: '0xffcc66'
blue: '0x6699cc'
magenta: '0xcc99cc'
cyan: '0x66cccc'
white: '0xdddddd'
# Colors (Nord Colors)
# colors:
# primary:
# background: '0x2E3440'
# foreground: '0xD8DEE9'
# cursor:
# text: '0x2E3440'
# cursor: '0xD8DEE9'
# normal:
# black: '0x3B4252'
# red: '0xBF616A'
# green: '0xA3BE8C'
# yellow: '0xEBCB8B'
# blue: '0x81A1C1'
# magenta: '0xB48EAD'
# cyan: '0x88C0D0'
# white: '0xE5E9F0'
# bright:
# black: '0x4C566A'
# red: '0xBF616A'
# green: '0xA3BE8C'
# yellow: '0xEBCB8B'
# blue: '0x81A1C1'
# magenta: '0xB48EAD'
# cyan: '0x8FBCBB'
# white: '0xECEFF4'
# Indexed Colors
#
# The indexed colors include all colors from 16 to 256.
# When these are not set, they're filled with sensible defaults.
#
#indexed_colors:
# - { index: 16, color: '0x000000' }
# Visual Bell
#
# Any time the BEL code is received, Alacritty "rings" the visual bell. Once
# rung, the terminal background will be set to white and transition back to the
# default background color. You can control the rate of this transition by
# setting the `duration` property (represented in milliseconds). You can also
# configure the transition function by setting the `animation` property.
#
# Values for `animation`:
# - Ease
# - EaseOut
# - EaseOutSine
# - EaseOutQuad
# - EaseOutCubic
# - EaseOutQuart
# - EaseOutQuint
# - EaseOutExpo
# - EaseOutCirc
# - Linear
#
# Specifying a `duration` of `0` will disable the visual bell.
visual_bell:
animation: EaseOutExpo
duration: 0
# Background opacity
background_opacity: 1.0
# Mouse bindings
#
# Currently doesn't support modifiers. Both the `mouse` and `action` fields must
# be specified.
#
# Values for `mouse`:
# - Middle
# - Left
# - Right
# - Numeric identifier such as `5`
#
# Values for `action`:
# - Paste
# - PasteSelection
# - Copy (TODO)
mouse_bindings:
- { mouse: Middle, action: PasteSelection }
mouse:
# Click settings
#
# The `double_click` and `triple_click` settings control the time
# alacritty should wait for accepting multiple clicks as one double
# or triple click.
double_click: { threshold: 300 }
triple_click: { threshold: 300 }
# If this is `true`, the cursor is temporarily hidden when typing.
hide_when_typing: false
url:
# URL launcher
#
# This program is executed when clicking on a text which is recognized as a URL.
# The URL is always added to the command as the last parameter.
launcher: open
# URL modifiers
#
# These are the modifiers that need to be held down for opening URLs when clicking
# on them. The available modifiers are documented in the key binding section.
#modifiers: Control|Shift
selection:
semantic_escape_chars: ",│`|:\"' ()[]{}<>"
# When set to `true`, selected text will be copied to the primary clipboard.
save_to_clipboard: false
cursor:
# Cursor style
#
# Values for 'style':
# - ▇ Block
# - _ Underline
# - | Beam
style: Block
# If this is `true`, the cursor will be rendered as a hollow box when the
# window is not focused.
unfocused_hollow: true
# Live config reload (changes require restart)
live_config_reload: true
# Shell
#
# You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`.
# Entries in `shell.args` are passed unmodified as arguments to the shell.
#
shell:
program: /bin/zsh
args:
- --login
scrolling:
# How many lines of scrollback to keep,
# '0' will disable scrolling.
history: 10000
# Number of lines the viewport will move for every line
# scrolled when scrollback is enabled (history > 0).
multiplier: 3
# Faux Scrolling
#
# The `faux_multiplier` setting controls the number of lines the terminal
# should scroll when the alternate screen buffer is active. This is used
# to allow mouse scrolling for applications like `man`.
#
# Specifying `0` will disable faux scrolling.
faux_multiplier: 3
# Automatically scroll to the bottom when new text is written
# to the terminal.
auto_scroll: false
# Key bindings
#
# Each binding is defined as an object with some properties. Most of the
# properties are optional. All of the alphabetical keys should have a letter for
# the `key` value such as `V`. Function keys are probably what you would expect
# as well (F1, F2, ..). The number keys above the main keyboard are encoded as
# `Key1`, `Key2`, etc. Keys on the number pad are encoded `Number1`, `Number2`,
# etc. These all match the glutin::VirtualKeyCode variants.
#
# A list with all available `key` names can be found here:
# https://docs.rs/glutin/*/glutin/enum.VirtualKeyCode.html#variants
#
# Possible values for `mods`
# `Command`, `Super` refer to the super/command/windows key
# `Control` for the control key
# `Shift` for the Shift key
# `Alt` and `Option` refer to alt/option
#
# mods may be combined with a `|`. For example, requiring control and shift
# looks like:
#
# mods: Control|Shift
#
# The parser is currently quite sensitive to whitespace and capitalization -
# capitalization must match exactly, and piped items must not have whitespace
# around them.
#
# Either an `action`, `chars`, or `command` field must be present.
# `action` must be one of `Paste`, `PasteSelection`, `Copy`, or `Quit`.
# `chars` writes the specified string every time that binding is activated.
# These should generally be escape sequences, but they can be configured to
# send arbitrary strings of bytes.
# `command` must be a map containing a `program` string, and `args` array of
# strings. For example:
# - { ... , command: { program: "alacritty", args: ["-e", "vttest"] } }
key_bindings:
- { key: V, mods: Command, action: Paste }
- { key: C, mods: Command, action: Copy }
- { key: Paste, action: Paste }
- { key: Copy, action: Copy }
# - { key: H, mods: Command, action: Hide }
- { key: Q, mods: Command, action: Quit }
# - { key: W, mods: Command, action: Quit }
- { key: Home, chars: "\x1bOH", mode: AppCursor }
- { key: Home, chars: "\x1b[H", mode: ~AppCursor }
- { key: End, chars: "\x1bOF", mode: AppCursor }
- { key: End, chars: "\x1b[F", mode: ~AppCursor }
- { key: Key0, mods: Command, action: ResetFontSize }
- { key: Equals, mods: Command, action: IncreaseFontSize }
- { key: Minus, mods: Command, action: DecreaseFontSize }
- { key: PageUp, mods: Shift, chars: "\x1b[5;2~" }
- { key: PageUp, mods: Control, chars: "\x1b[5;5~" }
- { key: PageUp, chars: "\x1b[5~" }
- { key: PageDown, mods: Shift, chars: "\x1b[6;2~" }
- { key: PageDown, mods: Control, chars: "\x1b[6;5~" }
- { key: PageDown, chars: "\x1b[6~" }
- { key: Tab, mods: Shift, chars: "\x1b[Z" }
- { key: Back, chars: "\x7f" }
- { key: Back, mods: Alt, chars: "\x1b\x7f" }
- { key: Insert, chars: "\x1b[2~" }
- { key: Delete, chars: "\x1b[3~" }
- { key: Left, mods: Shift, chars: "\x1b[1;2D" }
- { key: Left, mods: Control, chars: "\x1b[1;5D" }
- { key: Left, mods: Alt, chars: "\x1b[1;3D" }
- { key: Left, chars: "\x1b[D", mode: ~AppCursor }
- { key: Left, chars: "\x1bOD", mode: AppCursor }
- { key: Right, mods: Shift, chars: "\x1b[1;2C" }
- { key: Right, mods: Control, chars: "\x1b[1;5C" }
- { key: Right, mods: Alt, chars: "\x1b[1;3C" }
- { key: Right, chars: "\x1b[C", mode: ~AppCursor }
- { key: Right, chars: "\x1bOC", mode: AppCursor }
- { key: Up, mods: Shift, chars: "\x1b[1;2A" }
- { key: Up, mods: Control, chars: "\x1b[1;5A" }
- { key: Up, mods: Alt, chars: "\x1b[1;3A" }
- { key: Up, chars: "\x1b[A", mode: ~AppCursor }
- { key: Up, chars: "\x1bOA", mode: AppCursor }
- { key: Down, mods: Shift, chars: "\x1b[1;2B" }
- { key: Down, mods: Control, chars: "\x1b[1;5B" }
- { key: Down, mods: Alt, chars: "\x1b[1;3B" }
- { key: Down, chars: "\x1b[B", mode: ~AppCursor }
- { key: Down, chars: "\x1bOB", mode: AppCursor }
- { key: F1, chars: "\x1bOP" }
- { key: F2, chars: "\x1bOQ" }
- { key: F3, chars: "\x1bOR" }
- { key: F4, chars: "\x1bOS" }
- { key: F5, chars: "\x1b[15~" }
- { key: F6, chars: "\x1b[17~" }
- { key: F7, chars: "\x1b[18~" }
- { key: F8, chars: "\x1b[19~" }
- { key: F9, chars: "\x1b[20~" }
- { key: F10, chars: "\x1b[21~" }
- { key: F11, chars: "\x1b[23~" }
- { key: F12, chars: "\x1b[24~" }
- { key: F1, mods: Shift, chars: "\x1b[1;2P" }
- { key: F2, mods: Shift, chars: "\x1b[1;2Q" }
- { key: F3, mods: Shift, chars: "\x1b[1;2R" }
- { key: F4, mods: Shift, chars: "\x1b[1;2S" }
- { key: F5, mods: Shift, chars: "\x1b[15;2~" }
- { key: F6, mods: Shift, chars: "\x1b[17;2~" }
- { key: F7, mods: Shift, chars: "\x1b[18;2~" }
- { key: F8, mods: Shift, chars: "\x1b[19;2~" }
- { key: F9, mods: Shift, chars: "\x1b[20;2~" }
- { key: F10, mods: Shift, chars: "\x1b[21;2~" }
- { key: F11, mods: Shift, chars: "\x1b[23;2~" }
- { key: F12, mods: Shift, chars: "\x1b[24;2~" }
- { key: F1, mods: Control, chars: "\x1b[1;5P" }
- { key: F2, mods: Control, chars: "\x1b[1;5Q" }
- { key: F3, mods: Control, chars: "\x1b[1;5R" }
- { key: F4, mods: Control, chars: "\x1b[1;5S" }
- { key: F5, mods: Control, chars: "\x1b[15;5~" }
- { key: F6, mods: Control, chars: "\x1b[17;5~" }
- { key: F7, mods: Control, chars: "\x1b[18;5~" }
- { key: F8, mods: Control, chars: "\x1b[19;5~" }
- { key: F9, mods: Control, chars: "\x1b[20;5~" }
- { key: F10, mods: Control, chars: "\x1b[21;5~" }
- { key: F11, mods: Control, chars: "\x1b[23;5~" }
- { key: F12, mods: Control, chars: "\x1b[24;5~" }
- { key: F1, mods: Alt, chars: "\x1b[1;6P" }
- { key: F2, mods: Alt, chars: "\x1b[1;6Q" }
- { key: F3, mods: Alt, chars: "\x1b[1;6R" }
- { key: F4, mods: Alt, chars: "\x1b[1;6S" }
- { key: F5, mods: Alt, chars: "\x1b[15;6~" }
- { key: F6, mods: Alt, chars: "\x1b[17;6~" }
- { key: F7, mods: Alt, chars: "\x1b[18;6~" }
- { key: F8, mods: Alt, chars: "\x1b[19;6~" }
- { key: F9, mods: Alt, chars: "\x1b[20;6~" }
- { key: F10, mods: Alt, chars: "\x1b[21;6~" }
- { key: F11, mods: Alt, chars: "\x1b[23;6~" }
- { key: F12, mods: Alt, chars: "\x1b[24;6~" }
- { key: F1, mods: Command, chars: "\x1b[1;3P" }
- { key: F2, mods: Command, chars: "\x1b[1;3Q" }
- { key: F3, mods: Command, chars: "\x1b[1;3R" }
- { key: F4, mods: Command, chars: "\x1b[1;3S" }
- { key: F5, mods: Command, chars: "\x1b[15;3~" }
- { key: F6, mods: Command, chars: "\x1b[17;3~" }
- { key: F7, mods: Command, chars: "\x1b[18;3~" }
- { key: F8, mods: Command, chars: "\x1b[19;3~" }
- { key: F9, mods: Command, chars: "\x1b[20;3~" }
- { key: F10, mods: Command, chars: "\x1b[21;3~" }
- { key: F11, mods: Command, chars: "\x1b[23;3~" }
- { key: F12, mods: Command, chars: "\x1b[24;3~" }
- { key: NumpadEnter, chars: "\n" }
- { key: D, mods: Command, chars: "\x06\x76" }
- { key: D, mods: Command|Shift, chars: "\x06\x73" }
- { key: W, mods: Command, chars: "\x06\x78" }
- { key: H, mods: Command, chars: "\x06\x68" }
- { key: J, mods: Command, chars: "\x06\x6a" }
- { key: K, mods: Command, chars: "\x06\x6b" }
- { key: L, mods: Command, chars: "\x06\x6c" }
- { key: T, mods: Command, chars: "\x06\x63" }
- { key: Key1, mods: Command, chars: "\x06\x31" }
- { key: Key2, mods: Command, chars: "\x06\x32" }
- { key: Key3, mods: Command, chars: "\x06\x33" }
- { key: Key4, mods: Command, chars: "\x06\x34" }
- { key: Key5, mods: Command, chars: "\x06\x35" }
- { key: Key6, mods: Command, chars: "\x06\x36" }
- { key: Key7, mods: Command, chars: "\x06\x37" }
- { key: Key8, mods: Command, chars: "\x06\x38" }
- { key: Key9, mods: Command, chars: "\x06\x39" }
- { key: Left, mods: Command, chars: "\x06\x48" }
- { key: Down, mods: Command, chars: "\x06\x4a" }
- { key: Up, mods: Command, chars: "\x06\x4b" }
- { key: Right, mods: Command, chars: "\x06\x4c" }
- { key: PageUp, mods: Shift, action: ScrollPageUp }
- { key: PageDown, mods: Shift, action: ScrollPageDown }
- { key: End, mods: Shift, action: ScrollToBottom }
- { key: Home, mods: Shift, action: ScrollToTop }
- { key: K, mods: Command, action: ClearHistory }
- { key: K, mods: Command, chars: "\x0c" }
let $LANG = 'en' "set message language
set langmenu=en "set menu's language of gvim. no spaces beside '='
" Specify a directory for plugins
" - For Neovim: ~/.local/share/nvim/plugged
" - Avoid using standard Vim directory names like 'plugin'
call plug#begin('~/.vim/plugged')
" Plug 'vim-scripts/Align'
" Plug 'vim-scripts/L9'
" Plug 'vim-scripts/FuzzyFinder'
" On-deand loading
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
Plug 'c9s/helper.vim'
Plug 'c9s/treemenu.vim'
Plug 'c9s/hypergit.vim'
Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-speeddating'
" Plug 'tpope/vim-unimpaired'
Plug 'tpope/vim-surround'
Plug 'airblade/vim-gitgutter'
Plug 'mileszs/ack.vim'
Plug 'rhysd/conflict-marker.vim'
Plug 'godlygeek/tabular'
Plug 'plasticboy/vim-markdown'
Plug 'ntpeters/vim-better-whitespace'
Plug 'Xuyuanp/nerdtree-git-plugin'
Plug 'kana/vim-fakeclip'
Plug 'Valloric/YouCompleteMe', { 'do': './install.py --clang-completer --go-completer' }
Plug 'majutsushi/tagbar'
Plug 'nathanaelkane/vim-indent-guides'
Plug 'ekalinin/Dockerfile.vim', {'for' : 'Dockerfile'}
Plug 'elzr/vim-json', {'for' : 'json'}
Plug 'w0rp/ale'
Plug 'benmills/vimux'
" Go
Plug 'fatih/vim-go'
Plug 'towolf/vim-helm'
" Plug 'nsf/gocode', { 'rtp': 'vim', 'do': '~/.vim/plugged/gocode/vim/symlink.sh' }
" indent
Plug 'Yggdroot/indentLine'
" ansible
" Plug 'pearofducks/ansible-vim'
" Color Theme
Plug 'arcticicestudio/nord-vim'
Plug 'connorholyday/vim-snazzy'
" Plug 'dracula/vim', { 'as': 'dracula' }
" Initialize plugin system
call plug#end()
"=====================================================
" General VIM Settings
""===================== SETTINGS ======================
set nocompatible
filetype off
filetype plugin indent on
" color
syntax enable
set t_Co=256
set background=dark
" colors ir_black
colorscheme nord
" colorscheme snazzy
" colorscheme dracula
noremap <Up> <NOP>
noremap <Down> <NOP>
noremap <Left> <NOP>
noremap <Right> <NOP>
"===================== CTAGS ======================
nmap <leader>l :TagbarToggle<CR>
"===================== ACK/AG ======================
nmap <leader>ak :AckFromSearch<CR>
if has('nvim')
let g:gitgutter_sign_removed_first_line = "^_"
endif
if !has('nvim')
set ttymouse=xterm2
set ttyscroll=3
endif
set ttyfast
set expandtab
set sidescroll=1
set sidescrolloff=3
set showfulltag showmatch showcmd showmode
set textwidth=0
set noerrorbells
set ambiwidth=double
set formatoptions=tcroqnlM1
" scroll jump && scroll off
set sj=1 so=3
set winaltkeys=no showtabline=2 hlsearch
set nolazyredraw
"If you want to put swap files in a fixed place, put a command resembling the
"following ones in your .vimrc
" set dir=~/tmp
set noswapfile
set wildmenu
set wildmode=longest,list
set wildignore+=*.o,*.a,*.so,*.obj,*.lib,*.ncb,*.opt,*.plg,.svn,.git,*.lo,*.la,*.in
" set wildoptions
" statusline format
set statusline=%<%f\ %h%m%r%=%k[%{(&fenc==\"\")?&enc:&fenc}%{(&bomb?\",bom\":\"\")}]\ %-14.(%l,%c%v%)\ %p
" history
set history=500
set shiftround smarttab showcmd noerrorbells number expandtab
set sw=4 ts=4 sts=4
" no error bell,visual bell
" set novb
set modeline
set mat=15
" increase max memory to show syntax highlighting for large files
set maxmempattern=20000
set noignorecase
if has('persistent_undo')
set undofile
set undodir=~/.cache/vim
endif
" current is no smartcase for command line completion ignorecase
"set smartcase
set ruler incsearch nowrap autoindent smartindent showmatch bs=indent,eol,start
set ff=unix
"set wm=6
" encoding
" set fileencodings=utf-8,big5,gbk,sjis,euc-jp,euc-kr,utf-bom,iso8859-1
set fenc=utf-8
" set fencs=utf-8,utf-16le,big5,euc-jp,utf-bom,iso8859-1,utf-16le
" set fencs=ucs-bom,big5,utf-8,euc-jp,utf-bom,iso8859-1,utf-16le
" set fencs=shift-jis,big5,euc-jp,utf-8,utf-16le
" set fencs=utf-8,big5,euc-jp,utf-bom,iso8859-1,utf-16le
set fileencodings=ucs-bom,utf-8,euc-jp,big-5,sjis,default
set enc=utf-8
set tenc=utf-8
" =========================================================== }}}
" fold options ============================================ {{{
"set fdt=FoldText()
set nofoldenable
set vop=folds,cursor
" set fdc=2 " fdc: fold column
set fdn=2 " fdn: fold nest max
set fdl=3 " fdl: fold level
" window resize mapping "{{{
nm <a-x> <c-w><c-w><c-w>_
nm <a-=> <c-w>=
nn <c-w>9 8<c-w>+
nn <c-w>0 8<c-w>-
"}}}
" Bash-like command mapping ================================= "{{{
cnoremap <c-a> <home>
cnoremap <c-e> <end>
cnoremap <c-b> <left>
cnoremap <c-d> <del>
cnoremap <c-f> <right>
cnoremap <C-_> <c-f>
cnoremap <c-n> <down>
cnoremap <c-p> <up>
cnoremap <C-*> <c-a>
" Space commands {{{ all space command : expand tab to space.
com! -nargs=0 AllSpace :setlocal et | retab!
cabbr allspace AllSpace
" Mac Custom tabpage key for mac and other platform {{{
" window size key for macbook
if ( has('gui_mac') || has('gui_macvim') ) && has('gui_running')
nmap <silent> <D--> :resize -5<CR>
nmap <silent> <D-=> :resize +5<CR>
nmap <silent> <D-]> :vertical resize +5<CR>
nmap <silent> <D-[> :vertical resize -5<CR>
nmap <silent> <D-\> <C-w><C-w>
" nmap <c-x>tf :tabfind
" nmap <c-x>th :tab help<CR>
nmap <D-s> :w<CR>
" Switch to specific tab numbers with Command-number
noremap <D-1> :tabn 1<CR>
noremap <D-2> :tabn 2<CR>
noremap <D-3> :tabn 3<CR>
noremap <D-4> :tabn 4<CR>
noremap <D-5> :tabn 5<CR>
noremap <D-6> :tabn 6<CR>
noremap <D-7> :tabn 7<CR>
noremap <D-8> :tabn 8<CR>
noremap <D-9> :tabn 9<CR>
" Command-0 goes to the last tab
noremap <D-0> :tablast<CR>
endif
nm <c-n> gt
nm <c-p> gT
nmap te :tabedit
nmap ts :tabedit %
" Trim white space ===========================
fun! TrimWhitespace()
let l:save = winsaveview()
%s/\s\+$//e
call winrestview(l:save)
endfun
command! TrimWhitespace call TrimWhitespace()
noremap <leader>t :call TrimWhitespace()<CR>
" Plugin Settings
" ==================== Fugitive ====================
vnoremap <leader>gb :Gblame<CR>
nnoremap <leader>gb :Gblame<CR>
" Valloric/YouCompleteMe: YouCompleteMe
let g:ycm_min_num_of_chars_for_completion = 3
set completeopt-=preview
" let g:ycm_autoclose_preview_window_after_completion = 1
" w0rp/ale: Asynchronous Lint Engine
let g:ale_linters = { 'Go': ['golint', 'go vet'] }
" ==================== markdown ====================
" plasticboy/vim-markdown
let g:vim_markdown_folding_disabled = 1
let g:vim_markdown_frontmatter = 1 " YMAL Front Matter
let g:vim_markdown_json_frontmatter = 1 " JSON Front Mattetaugroup
let g:vim_markdown_fenced_languages = ['go=go', 'viml=vim', 'bash=sh']
let g:vim_markdown_conceal = 0
let g:vim_markdown_toml_frontmatter = 1
let g:vim_markdown_new_list_item_indent = 2
let g:vim_markdown_no_extensions_in_markdown = 1
" ==================== vim-json ====================
let g:vim_json_syntax_conceal = 0
" fatih/vim-go
let g:go_info_mode = "gocode"
let g:go_def_mode = "gopls"
let g:go_fmt_command = "goimports"
let g:go_debug_windows = {
\ 'vars': 'leftabove 35vnew',
\ 'stack': 'botright 10new',
\ }
let g:go_fmt_fail_silently = 1
let g:go_fmt_autosave = 1
let g:go_highlight_functions = 1
let g:go_highlight_methods = 1
let g:go_highlight_structs = 1
let g:go_highlight_operators = 1
let g:go_highlight_build_constraints = 1
let g:tagbar_type_go = {
\ 'ctagstype' : 'go',
\ 'kinds' : [
\ 'p:package',
\ 'i:imports:1',
\ 'c:constants',
\ 'v:variables',
\ 't:types',
\ 'n:interfaces',
\ 'w:fields',
\ 'e:embedded',
\ 'm:methods',
\ 'r:constructor',
\ 'f:functions'
\ ],
\ 'sro' : '.',
\ 'kind2scope' : {
\ 't' : 'ctype',
\ 'n' : 'ntype'
\ },
\ 'scope2kind' : {
\ 'ctype' : 't',
\ 'ntype' : 'n'
\ },
\ 'ctagsbin' : 'gotags',
\ 'ctagsargs' : '-sort -silent'
\ }
nmap <silent> <leader>b :GoBuild<CR>
nmap <silent> <leader>gt :GoTest<CR>
nmap <silent> <leader>gr :GoReferrers<CR>
nmap <silent> <leader>gf :GoFillStruct<CR>
nmap <silent> <leader>ms :VimuxRunCommand("make src.build")<CR>
nmap <silent> <leader>qq :VimuxCloseRunner<CR>
nmap <silent> <leader>te :VimuxTogglePane<CR>
" ==================== vimux ====================
let g:VimuxHeight = "10"
" ==================== ag ====================
if executable('ag')
let g:ackprg = 'ag --vimgrep --smart-case'
cnoreabbrev ag Ack
cnoreabbrev Ag Ack
endif
" ==================== NerdTree ====================
" " For toggling
nmap <silent> <leader>e :NERDTreeToggle<CR>
nmap <silent> <leader>nf :NERDTreeFind<CR>
nmap <silent> <leader>nm :NERDTreeMirror<CR>
cabbr ntf NERDTreeFind
cabbr ntm NERDTreeMirror
function! StartUp()
if 0 == argc()
NERDTree
end
endfunction
autocmd VimEnter * call StartUp()
" Performance improvments when using vim in tmux
if has("mac")
set nocursorline
if exists("+relativenumber")
set norelativenumber
endif
set foldlevel=0
set foldmethod=manual
endif
" MacVim Settings
if has('gui_macvim')
set showtabline=2
set imdisable
set transparency=0 " 透明度を指定
set guioptions-=m
set guioptions-=M
set antialias
set guifont=SF\ Mono:h16
" set guifont=Consolas:h12
" set guifont=Monaco:h14
" set guifont=Menlo:h12
endif
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment