diff --git a/.gitmodules b/.gitmodules index 2ed931d..0d786b9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -11,3 +11,6 @@ [submodule "i3/.config/i3/i3blocks-contrib"] path = i3/.config/i3/i3blocks-contrib url = https://github.com/vivien/i3blocks-contrib.git +[submodule "zsh/.zprezto-contrib/fzf-z"] + path = zsh/.zprezto-contrib/fzf-z + url = git@github.com:andrewferrier/fzf-z.git diff --git a/alacritty/.config/alacritty/alacritty.yml b/alacritty/.config/alacritty/alacritty.yml new file mode 100644 index 0000000..b001b75 --- /dev/null +++ b/alacritty/.config/alacritty/alacritty.yml @@ -0,0 +1,631 @@ +# 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: alacritty + +#window: + # Window dimensions (changes require restart) + # + # Specified in number of columns/lines, not pixels. + # If both are `0`, this setting is ignored. + #dimensions: + # columns: 0 + # lines: 0 + + # Window position (changes require restart) + # + # Specified in number of pixels. + # If the position is not set, the window manager will handle the placement. + #position: + # x: 0 + # y: 0 + + # 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: 0 + # y: 0 + + # Spread additional padding evenly around the terminal content. + #dynamic_padding: false + + # Window decorations + # + # Values for `decorations`: + # - full: Borders and title bar + # - none: Neither borders nor title bar + # + # Values for `decorations` (macOS only): + # - transparent: Title bar, transparent background and title bar buttons + # - buttonless: Title bar, transparent background, but no title bar buttons + #decorations: full + + # Startup Mode (changes require restart) + # + # Values for `startup_mode`: + # - Windowed + # - Maximized + # - Fullscreen + # + # Values for `startup_mode` (macOS only): + # - SimpleFullscreen + #startup_mode: Windowed + + # Window title + #title: Alacritty + + # Window class (Linux/BSD only): + #class: + # Application instance name + #instance: Alacritty + # General application class + #general: Alacritty + + # GTK theme variant (Linux/BSD only) + # + # Override the variant of the GTK theme. Commonly supported values are `dark` and `light`. + # Set this to `None` to use the default theme variant. + #gtk_theme_variant: None + +#scrolling: + # Maximum number of lines in the scrollback buffer. + # Specifying '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 + +# Font configuration +#font: + # Normal (roman) font face + #normal: + # Font family + # + # Default: + # - (macOS) Menlo + # - (Linux/BSD) monospace + # - (Windows) Consolas + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Regular + + # Bold font face + #bold: + # Font family + # + # If the bold family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Bold + + # Italic font face + #italic: + # Font family + # + # If the italic family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Italic + + # Bold italic font face + #bold_italic: + # Font family + # + # If the bold italic family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Bold Italic + + # Point size + #size: 11.0 + + # 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 (macOS 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 + +# If `true`, bold text is drawn using the bright color variants. +#draw_bold_text_with_bright_colors: false + +# Colors (Tomorrow Night Bright) +#colors: + # Default colors + #primary: + # background: '#000000' + # foreground: '#eaeaea' + + # 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: '#9a9a9a' + #bright_foreground: '#ffffff' + + # 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: '#000000' + # cursor: '#ffffff' + + # Selection colors + # + # Colors which should be used to draw the selection area. If selection + # background is unset, selection color will be the inverse of the cell colors. + # If only text is unset the cell text color will remain the same. + #selection: + # text: '#eaeaea' + # background: '#404040' + + # Normal colors + #normal: + # black: '#000000' + # red: '#d54e53' + # green: '#b9ca4a' + # yellow: '#e6c547' + # blue: '#7aa6da' + # magenta: '#c397d8' + # cyan: '#70c0ba' + # white: '#eaeaea' + + # Bright colors + #bright: + # black: '#666666' + # red: '#ff3334' + # green: '#9ec400' + # yellow: '#e7c547' + # blue: '#7aa6da' + # magenta: '#b77ee0' + # cyan: '#54ced6' + # white: '#ffffff' + + # Dim colors + # + # If the dim colors are not set, they will be calculated automatically based + # on the `normal` colors. + #dim: + # black: '#000000' + # red: '#8c3336' + # green: '#7a8530' + # yellow: '#97822e' + # blue: '#506d8f' + # magenta: '#80638e' + # cyan: '#497e7a' + # white: '#9a9a9a' + + # Indexed Colors + # + # The indexed colors include all colors from 16 to 256. + # When these are not set, they're filled with sensible defaults. + # + # Example: + # `- { index: 16, color: '#ff00ff' }` + # + #indexed_colors: [] + +# 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 +# color: '#ffffff' + +# Background opacity +# +# Window opacity as a floating point number from `0.0` to `1.0`. +# The value `0.0` is completely transparent and `1.0` is opaque. +#background_opacity: 1.0 + +#selection: + #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" + + # When set to `true`, selected text will be copied to the primary clipboard. + #save_to_clipboard: false + +# Allow terminal applications to change Alacritty's window title. +#dynamic_title: true + +#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. +# +# Default: +# - (macOS) /bin/bash --login +# - (Linux/BSD) user login shell +# - (Windows) powershell +#shell: +# program: /bin/bash +# args: +# - --login + +# Startup directory +# +# Directory the shell is started in. If this is unset, or `None`, the working +# directory of the parent process will be used. +#working_directory: None + +# WinPTY backend (Windows only) +# +# Alacritty defaults to using the newer ConPTY backend if it is available, +# since it resolves a lot of bugs and is quite a bit faster. If it is not +# available, the the WinPTY backend will be used instead. +# +# Setting this option to `true` makes Alacritty use the legacy WinPTY backend, +# even if the ConPTY backend is available. +#winpty_backend: false + +# Send ESC (\x1b) before characters when alt is pressed. +#alt_send_esc: true + +#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. + # + # When set to `None`, URL launching will be disabled completely. + # + # Default: + # - (macOS) open + # - (Linux/BSD) xdg-open + # - (Windows) explorer + #launcher: + # program: xdg-open + # args: [] + + # 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: None + +# Mouse bindings +# +# Mouse bindings are specified as a list of objects, much like the key +# bindings further below. +# +# To trigger mouse bindings when an application running within Alacritty captures the mouse, the +# `Shift` modifier is automatically added as a requirement. +# +# Each mouse binding will specify a: +# +# - `mouse`: +# +# - Middle +# - Left +# - Right +# - Numeric identifier such as `5` +# +# - `action` (see key bindings) +# +# And optionally: +# +# - `mods` (see key bindings) +#mouse_bindings: +# - { mouse: Middle, action: PasteSelection } + +# Key bindings +# +# Key bindings are specified as a list of objects. For example, this is the +# default paste binding: +# +# `- { key: V, mods: Control|Shift, action: Paste }` +# +# Each key binding will specify a: +# +# - `key`: Identifier of the key pressed +# +# - A-Z +# - F1-F24 +# - Key0-Key9 +# +# A full list with available key codes can be found here: +# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants +# +# Instead of using the name of the keys, the `key` field also supports using +# the scancode of the desired key. Scancodes have to be specified as a +# decimal number. This command will allow you to display the hex scancodes +# for certain keys: +# +# `showkey --scancodes`. +# +# Then exactly one of: +# +# - `chars`: Send a byte sequence to the running application +# +# The `chars` field writes the specified string to the terminal. This makes +# it possible to pass escape sequences. To find escape codes for bindings +# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside +# of tmux. Note that applications use terminfo to map escape sequences back +# to keys. It is therefore required to update the terminfo when changing an +# escape sequence. +# +# - `action`: Execute a predefined action +# +# - Copy +# - Paste +# - PasteSelection +# - IncreaseFontSize +# - DecreaseFontSize +# - ResetFontSize +# - ScrollPageUp +# - ScrollPageDown +# - ScrollLineUp +# - ScrollLineDown +# - ScrollToTop +# - ScrollToBottom +# - ClearHistory +# - Hide +# - Minimize +# - Quit +# - ToggleFullscreen +# - SpawnNewInstance +# - ClearLogNotice +# - ReceiveChar +# - None +# +# (macOS only): +# - ToggleSimpleFullscreen: Enters fullscreen without occupying another space +# +# - `command`: Fork and execute a specified command plus arguments +# +# The `command` field must be a map containing a `program` string and an +# `args` array of command line parameter strings. For example: +# `{ program: "alacritty", args: ["-e", "vttest"] }` +# +# And optionally: +# +# - `mods`: Key modifiers to filter binding actions +# +# - Command +# - Control +# - Option +# - Super +# - Shift +# - Alt +# +# Multiple `mods` can be combined using `|` like this: +# `mods: Control|Shift`. +# Whitespace and capitalization are relevant and must match the example. +# +# - `mode`: Indicate a binding for only specific terminal reported modes +# +# This is mainly used to send applications the correct escape sequences +# when in different modes. +# +# - AppCursor +# - AppKeypad +# - Alt +# +# A `~` operator can be used before a mode to apply the binding whenever +# the mode is *not* active, e.g. `~Alt`. +# +# Bindings are always filled by default, but will be replaced when a new +# binding with the same triggers is defined. To unset a default binding, it can +# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for +# a no-op if you do not wish to receive input characters for that binding. +# +# If the same trigger is assigned to multiple actions, all of them are executed +# at once. + +key_bindings: + # (Windows, Linux, and BSD only) + - { key: Return, mods: Control|Shift, action: SpawnNewInstance } + - { key: V, mods: Control|Shift, action: Paste } + - { key: C, mods: Control|Shift, action: Copy } + - { key: Insert, mods: Shift, action: PasteSelection } + - { key: Key0, mods: Control, action: ResetFontSize } + - { key: Equals, mods: Control, action: IncreaseFontSize } + - { key: Add, mods: Control, action: IncreaseFontSize } + - { key: Subtract, mods: Control, action: DecreaseFontSize } + - { key: Minus, mods: Control, action: DecreaseFontSize } + + # (Windows only) + #- { key: Return, mods: Alt, action: ToggleFullscreen } + + # (macOS only) + #- { key: Key0, mods: Command, action: ResetFontSize } + #- { key: Equals, mods: Command, action: IncreaseFontSize } + #- { key: Add, mods: Command, action: IncreaseFontSize } + #- { key: Minus, mods: Command, action: DecreaseFontSize } + #- { key: K, mods: Command, action: ClearHistory } + #- { key: K, mods: Command, chars: "\x0c" } + #- { key: V, mods: Command, action: Paste } + #- { key: C, mods: Command, action: Copy } + #- { key: H, mods: Command, action: Hide } + #- { key: M, mods: Command, action: Minimize } + #- { key: Q, mods: Command, action: Quit } + #- { key: W, mods: Command, action: Quit } + #- { key: F, mods: Command|Control, action: ToggleFullscreen } + + #- { key: Paste, action: Paste } + #- { key: Copy, action: Copy } + #- { key: L, mods: Control, action: ClearLogNotice } + #- { key: L, mods: Control, chars: "\x0c" } + #- { key: PageUp, mods: Shift, action: ScrollPageUp, mode: ~Alt } + #- { key: PageDown, mods: Shift, action: ScrollPageDown, mode: ~Alt } + #- { key: Home, mods: Shift, action: ScrollToTop, mode: ~Alt } + #- { key: End, mods: Shift, action: ScrollToBottom, mode: ~Alt } + +#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 + +# Base16-tomorrow-night +colors: + # Default colors + primary: + background: '0x1d1f21' + foreground: '0xc5c8c6' + + # Colors the cursor will use if `custom_cursor_colors` is true + cursor: + text: '0x1d1f21' + cursor: '0xc5c8c6' + + # Normal colors + normal: + black: '0x1d1f21' + red: '0xcc6666' + green: '0xb5bd68' + yellow: '0xf0c674' + blue: '0x81a2be' + magenta: '0xb294bb' + cyan: '0x8abeb7' + white: '0xc5c8c6' + + # Bright colors + bright: + black: '0x969896' + red: '0xde935f' + green: '0x282a2e' + yellow: '0x373b41' + blue: '0xb4b7b4' + magenta: '0xe0e0e0' + cyan: '0xa3685a' + white: '0xffffff' + +draw_bold_text_with_bright_colors: false + + +## base16-Atelier-dune +#colors: +# # Default colors +# primary: +# background: '0x20201d' +# foreground: '0xa6a28c' +# # Colors the cursor will use if `custom_cursor_colors` is true +# cursor: +# text: '0x20201d' +# cursor: '0xa6a28c' +# # Normal colors +# normal: +# black: '0x20201d' +# red: '0xd73737' +# green: '0x60ac39' +# yellow: '0xae9513' +# blue: '0x6684e1' +# magenta: '0xb854d4' +# cyan: '0x1fad83' +# white: '0xa6a28c' +# # Bright colors +# bright: +# black: '0x7d7a68' +# red: '0xb65611' +# green: '0x292824' +# yellow: '0x6e6b5e' +# blue: '0x999580' +# magenta: '0xe8e4cf' +# cyan: '0xd43552' +# white: '0xfefbec' +#draw_bold_text_with_bright_colors: false diff --git a/nvim/.config/nvim/init.vim b/nvim/.config/nvim/init.vim new file mode 100644 index 0000000..3d6cf67 --- /dev/null +++ b/nvim/.config/nvim/init.vim @@ -0,0 +1,332 @@ +"Balkian + +" Auto-install plug-vim +if empty(glob('~/.local/share/nvim/site/autoload/plug.vim')) + !curl -fLo $HOME/.local/share/nvim/site/autoload/plug.vim --create-dirs "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" + autocmd VimEnter * PlugInstall --sync | source $MYVIMRC +endif + +"set nocompatible " be iMproved +"filetype off " required! + + +call plug#begin(stdpath('data') . '/plugged') +echo stdpath('data') + +Plug 'gmarik/vundle' +Plug 'LaTeX-Box-Team/LaTeX-Box' +Plug 'tpope/vim-repeat' +Plug 'tpope/vim-unimpaired' +Plug 'tpope/vim-fugitive' +Plug 'tpope/vim-surround' +Plug 'tpope/vim-abolish' +Plug 'scrooloose/nerdtree' +Plug 'scrooloose/nerdcommenter' +Plug 'scrooloose/syntastic' +Plug 'ervandew/supertab' +Plug 'majutsushi/tagbar' +Plug 'MarcWeber/vim-addon-mw-utils' +" for vim-snippets +Plug 'tomtom/tlib_vim' +Plug 'honza/vim-snippets' +Plug 'garbas/vim-snipmate' +Plug 'mattn/webapi-vim' +Plug 'mattn/gist-vim' +Plug 'klen/python-mode' +Plug 'ivanov/vim-ipython' +Plug 'jamessan/vim-gnupg' +Plug 'Lokaltog/vim-easymotion' +Plug 'vim-scripts/YankRing.vim' +Plug 'kien/ctrlp.vim' +Plug 'sgur/ctrlp-extensions.vim' +Plug 'sjl/gundo.vim' +Plug 'bling/vim-airline' +Plug 'vim-airline/vim-airline-themes' +Plug 'xolox/vim-misc' +Plug 'xolox/vim-notes' +Plug 'beloglazov/vim-online-thesaurus' +Plug 'vim-scripts/ShowMarks' +Plug 'atweiden/vim-dragvisuals' +"Plug 'tomasr/molokai' +Plug 'chriskempson/base16-vim' +Plug 'elzr/vim-json' +Plug 'Rykka/riv.vim' +Plug 'niklasl/vim-rdf' +Plug 'lepture/vim-jinja' + +call plug#end() + +filetype plugin indent on " required! + +set hidden " To start working with buffers instead of tabs + +"highlight SpecialKey ctermfg=DarkGray +set listchars=tab:>-,trail:~ +set list +set tabstop=4 +set softtabstop=4 +set shiftwidth=4 +autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class +au FileType py set textwidth=79 +au FileType html set tabstop=2 shiftwidth=2 +autocmd Filetype javascript set ts=4 sts=4 sw=4 expandtab smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class +set expandtab +set smarttab +set autoindent +set smartindent +syntax on +set ignorecase +set smartcase +set number +"set paste +set mouse=a +set autochdir +set showmatch +set incsearch +set hlsearch + +set ruler +set wildmenu +set autoread + +" faster commands +noremap : +" Better Map Leader +let mapleader="," +noremap \ , + +" Commenting blocks of code. I don't need it with NerdCommenter +" autocmd FileType c,cpp,java,scala,javascript let b:comment_leader = '// ' +" autocmd FileType sh,ruby,python let b:comment_leader = '# ' +" autocmd FileType conf,fstab let b:comment_leader = '# ' +" autocmd FileType tex let b:comment_leader = '% ' +" autocmd FileType mail let b:comment_leader = '> ' +" autocmd FileType vim let b:comment_leader = '" ' +" noremap ,cc :silent s/^/=escape(b:comment_leader,'\/')/:nohlsearch +" noremap ,cu :silent s/^\V=escape(b:comment_leader,'\/')//e:nohlsearch +" +map p "+gp +map P "+gP +noremap :w +imap :w + +"Custom maps +noremap n :NERDTreeToggle +noremap t :TagbarOpen fj +noremap f :CtrlPMixed +noremap b :CtrlPBookmarkDir +noremap l :CtrlPLine +"Omni + +set completeopt=longest,menuone +inoremap pumvisible() ? "\" : "\u\" +inoremap pumvisible() ? '' : + \ '=pumvisible() ? "\Down>" : ""' +inoremap pumvisible() ? '' : + \ '=pumvisible() ? "\Down>" : ""' +inoremap (pumvisible() ? (col('.') > 1 ? 'i' : 'i') : '') . + \ '=pumvisible() ? "\C-n>\C-p>\Down>" : ""' +set spell spelllang=en_gb + +" tab navigation like firefox +nnoremap :tabprevious +nnoremap :tabnext +nnoremap :tabnew +inoremap :tabpreviousi +inoremap :tabnexti +"inoremap :tabnew +nnoremap dd :bd + + +" Save sessions +function! RestoreSession() +if argc() == 0 "vim called without arguments + execute 'source ~/.vim/Session.vim' + end +endfunction + +nmap Sq :mksession! ~/.vim/Session.vim:qa! +nmap SQ :mksession! ~/.vim/Session.vim:wqa +nmap SO :so ~/.vim/Session.vim + +set sessionoptions+=resize,winpos + +"autocmd VimEnter * call RestoreSession() + +"Make tabs and buffers work better +":se switchbuf=usetab,newtab + +" Color and shit +"set t_Co=256 +"set background=dark +"colo solarized +colo base16-tomorrow-night +"hi SpellBad ctermfg=Red + +"Statusline + +set statusline=%t%h%m%r%y%{fugitive#statusline()}\%=[%{strlen(&fenc)?&fenc:'none'},%{&ff}]\ \ %c,%l/%L\ %P +set laststatus=2 + +" Now that I use Airline, there is no need for this :) +"function! InsertStatuslineColor(mode) + "if a:mode == 'i' + "hi statusline guibg=Red ctermbg=Red guifg=White ctermfg=White + "elseif a:mode == 'r' + "hi statusline guibg=Blue ctermfg=White guifg=White ctermbg=Blue + "else + "hi statusline ctermbg=Yellow guibg=Yellow ctermfg=Black guifg=Black + "endif +"endfunction + +"call InsertStatuslineColor('') +"au InsertEnter * call InsertStatuslineColor(v:insertmode) +"au InsertLeave * call InsertStatuslineColor('') + +au BufRead,BufNewFile *.md set filetype=markdown + +"Diff the buffer and the original +command DiffOrig let g:diffline = line('.') | vert new | set bt=nofile | r # | 0d_ | diffthis | :exe "norm! ".g:diffline."G" | wincmd p | diffthis | wincmd p +nnoremap do :DiffOrig +nnoremap dc :q:diffoff:exe "norm! ".g:diffline."G" + +set guifont=DejaVu\ Sans\ Mono + +set foldmethod=syntax +set foldclose=all +set foldopen+=insert,jump +set nofoldenable + +" Matching for html +if !exists('g:loaded_matchit') && findfile('plugin/matchit.vim', &rtp) ==# '' + runtime! macros/matchit.vim +endif + +"""""""""""""""""""" +" GnuPG Extensions " +"""""""""""""""""""" + +" Tell the GnuPG plugin to armor new files. +let g:GPGPreferArmor=1 + +" Tell the GnuPG plugin to sign new files. +let g:GPGPreferSign=1 + +augroup GnuPGExtra +" Set extra file options. + autocmd BufReadCmd,FileReadCmd *.\(gpg\|asc\|pgp\) call SetGPGOptions() +" Automatically close unmodified files after inactivity. + autocmd CursorHold *.\(gpg\|asc\|pgp\) quit +augroup END + +function SetGPGOptions() +" Set updatetime to 1 minute. + set updatetime=60000 +" Fold at markers. + "set foldmethod=marker + setlocal foldmethod=expr + setlocal foldexpr=(getline(v:lnum)=~'^$')?-1:((indent(v:lnum)'.indent(v:lnum+1)):indent(v:lnum)) + set foldtext=getline(v:foldstart) + +" Automatically close all folds. + set foldclose=all +" Only open folds with insert commands. + set foldopen=insert +endfunction + +" CtrlP +" Do not clear the file cache on exit +let g:ctrlp_clear_cache_on_exit = 0 +let g:ctrlp_extensions = [ 'mixed' ] +let g:ctrlp_regexp = 0 +let g:ctrlp_cmd = 'CtrlPMixed' + +" Git things +nmap gs :Gstatus +nmap gd :Gdiff +nmap gl :Glog + +" Gundo magic +nnoremap u :GundoToggle + +" YankRing+Ctrl-P +map y :YRShow +let g:yankring_replace_n_pkey = '' +let g:yankring_replace_n_nkey = '' + + +let g:airline_left_sep='' +let g:airline_right_sep='|' +let g:airline#extensions#tabline#enabled = 1 +let g:airline#extensions#tabline#left_sep = ' ' +let g:airline#extensions#tabline#left_alt_sep = '|' +let g:airline_theme='base16' + +" Notes +:let g:notes_directories = ['~/Dropbox/Notes'] + +" Block move +vmap DVB_Drag('left') +vmap DVB_Drag('right') +vmap DVB_Drag('down') +vmap DVB_Drag('up') +vmap D DVB_Duplicate() + +function! s:get_visual_selection() + " Why is this not a built-in Vim script function?! + let [lnum1, col1] = getpos("'<")[1:2] + let [lnum2, col2] = getpos("'>")[1:2] + let lines = getline(lnum1, lnum2) + let lines[-1] = lines[-1][: col2 - (&selection == 'inclusive' ? 1 : 2)] + let lines[0] = lines[0][col1 - 1:] + return join(lines, "\n") +endfunction + +" Thesaurus +let g:online_thesaurus_map_keys = 0 +nnoremap k :OnlineThesaurusCurrentWord +vnoremap k :Thesaurus =get_visual_selection() + +" Resizing +nnoremap + :exe "resize " . (winheight(0) * 3/2) +nnoremap - :exe "resize " . (winheight(0) * 2/3) +nnoremap + :exe "resize " . (winheight(0) * 3/2) +nnoremap > :exe "vertical resize " . (winwidth(0) * 3/2) +nnoremap < :exe "vertical resize " . (winwidth(0) * 2/3) + +" Clipboard magic +if has('unnamedplus') + set clipboard=unnamed,unnamedplus +endif + +set cursorline + +set guioptions-=m "remove menu bar +set guioptions-=T "remove toolbar +set guioptions-=r "remove right-hand scroll bar +set guioptions-=L "remove left-hand scroll bar + +let g:pymode_rope_project_root = "~/.ropeprojects" + +" backup to ~/.tmp +set backup +set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp +set backupskip=/tmp/*,/private/tmp/* +set directory=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp +set writebackup + +" Easymotion +let g:EasyMotion_do_mapping = 0 " Disable default mappings + +" Bi-directional find motion +" Jump to anywhere you want with minimal keystrokes, with just one key binding. +" `s{char}{label}` +nmap s (easymotion-s) +nmap w (easymotion-bd-w) +" or +" `s{char}{char}{label}` +" Need one more keystroke, but on average, it may be more comfortable. +nmap s (easymotion-s2) + +" Turn on case sensitive feature +let g:EasyMotion_smartcase = 1 diff --git a/vim/.vim/bundle/vundle b/vim/.vim/bundle/vundle index 9a38216..8e9b933 160000 --- a/vim/.vim/bundle/vundle +++ b/vim/.vim/bundle/vundle @@ -1 +1 @@ -Subproject commit 9a38216a1c0c597f978d73547d37681fc689c90d +Subproject commit 8e9b933ed4a851ef1413bbd03560553c4339fb2f diff --git a/zsh/.zprezto-contrib/fzf-z b/zsh/.zprezto-contrib/fzf-z new file mode 160000 index 0000000..dfe6870 --- /dev/null +++ b/zsh/.zprezto-contrib/fzf-z @@ -0,0 +1 @@ +Subproject commit dfe68708007fa18a8446faf4a35dade4cbb064f6 diff --git a/zsh/.zpreztorc b/zsh/.zpreztorc index 027845b..f5432b8 100644 --- a/zsh/.zpreztorc +++ b/zsh/.zpreztorc @@ -23,6 +23,9 @@ zstyle ':prezto:*:*' color 'yes' # Set the Zsh functions to load (man zshcontrib). # zstyle ':prezto:load' zfunction 'zargs' 'zmv' + +zstyle ':prezto:load' pmodule-dirs $HOME/.zprezto-contrib + # Set the Prezto modules to load (browse modules). # The order matters. zstyle ':prezto:load' pmodule \ @@ -35,13 +38,16 @@ zstyle ':prezto:load' pmodule \ 'spectrum' \ 'utility' \ 'completion' \ - 'fasd' \ + 'fzf-z' \ 'pacman' \ 'git' \ 'autosuggestions' \ - 'syntax-highlighting' \ 'ssh' \ - 'prompt' + 'prompt' \ + 'syntax-highlighting' + +# 'fasd' \ + zstyle ':prezto:module:autosuggestions' color 'yes' diff --git a/zsh/.zshenv b/zsh/.zshenv index 3f226be..2f46d91 100644 --- a/zsh/.zshenv +++ b/zsh/.zshenv @@ -18,6 +18,7 @@ export VISUAL="myemacs -c" export ALTERNATE_EDITOR="" export PAGER='less' export TERMCMD='i3-sensible-terminal' +export FZFZ_RECENT_DIRS_TOOL=fasd # # Language