Massive configuration overhaul
Currently paying the price of months of non-diligent git usage. Here's what has changed. - Theming support in Gvcci and wpgtk - Dropping support for i3 - Supporting EXWM - Many Elisp modules - Collapsed redundant directories in ./configs
This commit is contained in:
parent
a7c72adb2e
commit
6b456c1b7a
551 changed files with 88587 additions and 1392 deletions
|
|
@ -1,24 +0,0 @@
|
|||
# shadow
|
||||
shadow = true;
|
||||
shadow-radius = 7;
|
||||
shadow-offset-x = -7;
|
||||
shadow-offset-y = -7;
|
||||
|
||||
# opacity
|
||||
menu-opacity = 0.8;
|
||||
inactive-opacity = 0.8;
|
||||
|
||||
# transitions
|
||||
fading = true;
|
||||
fade-in-step = 0.07;
|
||||
fade-out-step = 0.07;
|
||||
|
||||
# lock screen
|
||||
# NOTE: Need this rule here because I set XSECURELOCK_NO_COMPOSITE=1 in
|
||||
# ~/.profile. Without this, the lock screen will adopt the opacity settings
|
||||
# above, which is a security risk if you lock your screen while it has sensitive
|
||||
# content on it.
|
||||
#
|
||||
# NOTE: For some reason, `100:class_g` doesn't work, so settling for
|
||||
# `99:class_g` instead.
|
||||
opacity-rule = [ "99:class_g = 'xsecurelock'" ];
|
||||
|
|
@ -1,279 +0,0 @@
|
|||
# Keymapping philosophy:
|
||||
# When I feel it's appropriate, I try to borrow existing KBDs from OSX or
|
||||
# Windows. For example, I use Ctrl+Alt+Del to start the screen lock, since this
|
||||
# is a really well-known KBD. One notable difference is that when I'm borrowing
|
||||
# OSX KBDs, I prefer using Alt instead of Super since the keyboard that I'm
|
||||
# using has the Alt key in the same location as the Super key on my mac
|
||||
# keyboard. I could rebind this, and I just may. But for now, that's worth
|
||||
# pointing out.
|
||||
# The reason behind borrowing from Windows and OSX is that some of these
|
||||
# keybindings are hardwired into my muscle memory. I also tend to work between
|
||||
# Linux and OSX quite often. Since OSX is much more difficult to remap KBDs
|
||||
# than it is in Linux, I prefer to support the OSX KBDs to reduce the number of
|
||||
# KBDs my feeble memory needs to store.
|
||||
|
||||
set $mod Mod1
|
||||
set $super Mod4
|
||||
|
||||
# Font for window titles. Will also be used by the bar unless a different font
|
||||
# is used in the bar {} block below.
|
||||
font pango:monospace 8
|
||||
|
||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
||||
floating_modifier $mod
|
||||
|
||||
# i3-gaps (depends on i3-gaps installation)
|
||||
gaps inner 20
|
||||
gaps outer 0
|
||||
smart_gaps on
|
||||
|
||||
bindsym $mod+Ctrl+plus gaps outer current plus 5
|
||||
bindsym $mod+Ctrl+minus gaps outer current minus 5
|
||||
bindsym $mod+Shift+plus gaps inner current plus 5
|
||||
bindsym $mod+Shift+minus gaps inner current minus 5
|
||||
|
||||
# KBD Principles:
|
||||
# $mod+Ctrl+<app_char> = starting an application
|
||||
# where <app_char> is a reserved character for a commonly used application.
|
||||
#
|
||||
# <app_char> definitions:
|
||||
# terminal = t, Return
|
||||
# emacs = e
|
||||
# chrome = c
|
||||
# spotify = s
|
||||
# intellij = i
|
||||
#
|
||||
# Vertical
|
||||
bindsym $mod+Ctrl+t exec st
|
||||
bindsym $mod+Ctrl+Return exec st
|
||||
bindsym $mod+Ctrl+e exec emacsclient --create-frame ~/programming
|
||||
bindsym $mod+Ctrl+c exec google-chrome
|
||||
bindsym $mod+Ctrl+s exec spotify
|
||||
bindsym $mod+Ctrl+i exec zsh -i -c intellij
|
||||
|
||||
# support dmenu-based bookmarks
|
||||
bindsym $mod+Ctrl+b exec dmenu <$DOTFILES/bookmarks.txt | xargs $BROWSER
|
||||
|
||||
bindsym $mod+Return exec st
|
||||
|
||||
# pass integration
|
||||
bindsym $mod+Ctrl+backslash exec ~/.config/i3/passmenu # mirroring the 1password KBD
|
||||
|
||||
# integrate with Emacs's org-mode
|
||||
bindsym $mod+o exec zsh -i -c org_capture
|
||||
for_window [class="GoogleEmacs" instance="org-protocol-capture"] floating enable
|
||||
|
||||
# ensure Spotify windows float
|
||||
for_window [class="Spotify"] floating enable
|
||||
|
||||
# ensure `lf` instances float
|
||||
for_window [title="lf"] floating enable
|
||||
|
||||
# ensure wallpaper
|
||||
exec --no-startup-id feh --bg-scale ~/.local/share/wallpaper/cartoon-outdoors.jpg
|
||||
|
||||
# ensure system service that run through XDG start
|
||||
exec dex -ae i3
|
||||
|
||||
# dmenu configuration
|
||||
bindsym $mod+space exec --no-startup-id dmenu_run
|
||||
bindsym $mod+t exec --no-startup-id ~/.config/i3/dmenu_timer.sh ~/.local/share/sounds/gong.mp3
|
||||
|
||||
# file manager
|
||||
bindsym $mod+n exec st -e lf ~/Dropbox
|
||||
|
||||
# clipboard manager
|
||||
# NOTE: Ctrl-c is already covered since `clipmenu` listens for X clipboard
|
||||
# events using `clipnotify`.
|
||||
# NOTE: `clipmenud` is started in `.xsessionrc.shared`
|
||||
# NOTE: This is a bit of a hack intended to support pasting in both the terminal
|
||||
# and in GUI applications. `st` expects `ctrl+Shift+v` while GUIs expect
|
||||
# `ctrl+v`. In the instances where GUIs don't support `ctrl+Shift+v` already, it
|
||||
# acts like `ctrl+v`, so it should "just work".
|
||||
bindsym Ctrl+$mod+v exec clipmenu && xdotool key --clearmodifiers ctrl+Shift+v
|
||||
|
||||
# Screenshot
|
||||
# TODO: find a better KBD for this
|
||||
bindsym $mod+s exec zsh -i -c snipit # note that this eclipses Tmux's M-s KBD for switching b/w session
|
||||
bindsym Ctrl+Print exec scrot ~/Pictures/screenshots/%b-%d-%Y_%T.png # Windows style
|
||||
# TODO: debug
|
||||
# bindsym $mod+Print exec scrot --focused ~/Pictures/screenshots/%b-%d-%Y_%T.png # Windows style
|
||||
|
||||
# online documentation
|
||||
bindsym $mod+Shift+slash exec google-chrome https://i3wm.org/docs/userguide.html
|
||||
|
||||
# no title bars
|
||||
for_window [class="^.*"] border pixel 2
|
||||
|
||||
# disable mouse hover focus
|
||||
focus_follows_mouse no
|
||||
|
||||
# kill focused window
|
||||
bindsym $mod+q kill
|
||||
|
||||
# GTK Themes
|
||||
exec --no-startup-id gnome-settings-daemon
|
||||
|
||||
# wireless selection mechanism
|
||||
exec --no-startup-id nm-applet
|
||||
|
||||
# set the split direction
|
||||
bindsym $mod+v split vertical
|
||||
# cannot bind $mod+h because of movement commands
|
||||
bindsym $mod+Shift+v split horizontal
|
||||
|
||||
# lock the screen (Window's famous Ctrl-Alt-Delete)
|
||||
bindsym $mod+Ctrl+Delete exec xsecurelock
|
||||
bindsym $mod+Shift+q exec xsecurelock
|
||||
|
||||
# sound applet
|
||||
exec --no-startup-id gnome-sound-applet
|
||||
|
||||
# change focus
|
||||
bindsym $mod+h focus left
|
||||
bindsym $mod+j focus down
|
||||
bindsym $mod+k focus up
|
||||
bindsym $mod+l focus right
|
||||
|
||||
# move focused window
|
||||
bindsym $mod+Shift+h move left 100
|
||||
bindsym $mod+Shift+j move down 100
|
||||
bindsym $mod+Shift+k move up 100
|
||||
bindsym $mod+Shift+l move right 100
|
||||
|
||||
# enable duplicating the current window vertically or horizontally
|
||||
# bindsym $mod+- split v exec terminator
|
||||
# bindsym $mod+\ split h exec terminator
|
||||
|
||||
# enter fullscreen mode for the focused container
|
||||
bindsym $mod+z fullscreen toggle
|
||||
|
||||
# change container layout (stacked, tabbed, toggle split)
|
||||
bindsym $super+e layout toggle split
|
||||
bindsym $super+s layout stacking
|
||||
bindsym $super+t layout tabbed
|
||||
|
||||
# toggle tiling / floating
|
||||
bindsym $mod+Shift+f floating toggle
|
||||
|
||||
# toggle stickiness
|
||||
bindsym $mod+Shift+s sticky toggle
|
||||
|
||||
# change focus between tiling / floating windows
|
||||
bindsym $mod+f focus mode_toggle
|
||||
|
||||
# focus the parent container
|
||||
bindsym $mod+a focus parent
|
||||
bindsym $mod+Shift+a focus child
|
||||
|
||||
# Define names for default workspaces for which we configure key bindings later on.
|
||||
# We use variables to avoid repeating the names in multiple places.
|
||||
set $ws1 "1"
|
||||
set $ws2 "2"
|
||||
set $ws3 "3"
|
||||
set $ws4 "4"
|
||||
set $ws5 "5"
|
||||
set $ws6 "6"
|
||||
set $ws7 "7"
|
||||
set $ws8 "8"
|
||||
set $ws9 "9"
|
||||
set $ws10 "10"
|
||||
|
||||
# jump to workspace
|
||||
bindsym $mod+1 workspace $ws1
|
||||
bindsym $mod+2 workspace $ws2
|
||||
bindsym $mod+3 workspace $ws3
|
||||
bindsym $mod+4 workspace $ws4
|
||||
bindsym $mod+5 workspace $ws5
|
||||
bindsym $mod+6 workspace $ws6
|
||||
bindsym $mod+7 workspace $ws7
|
||||
bindsym $mod+8 workspace $ws8
|
||||
bindsym $mod+9 workspace $ws9
|
||||
bindsym $mod+0 workspace $ws10
|
||||
|
||||
# move and follow focused container to workspace
|
||||
bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1
|
||||
bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2
|
||||
bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3
|
||||
bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4
|
||||
bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5
|
||||
bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6
|
||||
bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7
|
||||
bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8
|
||||
bindsym $mod+Shift+9 move container to workspace $ws9; workspace $ws9
|
||||
bindsym $mod+Shift+0 move container to workspace $ws10; workspace $ws10
|
||||
|
||||
# move focused container to workspace
|
||||
bindsym $mod+Ctrl+1 move container to workspace $ws1
|
||||
bindsym $mod+Ctrl+2 move container to workspace $ws2
|
||||
bindsym $mod+Ctrl+3 move container to workspace $ws3
|
||||
bindsym $mod+Ctrl+4 move container to workspace $ws4
|
||||
bindsym $mod+Ctrl+5 move container to workspace $ws5
|
||||
bindsym $mod+Ctrl+6 move container to workspace $ws6
|
||||
bindsym $mod+Ctrl+7 move container to workspace $ws7
|
||||
bindsym $mod+Ctrl+8 move container to workspace $ws8
|
||||
bindsym $mod+Ctrl+9 move container to workspace $ws9
|
||||
bindsym $mod+Ctrl+0 move container to workspace $ws10
|
||||
|
||||
# reload, restart i3
|
||||
bindsym $super+r exec cat ~/.config/i3/config.shared ~/.config/i3/config.device >~/.config/i3/config; reload
|
||||
bindsym $super+Shift+r exec cat ~/.config/i3/config.shared ~/.config/i3/config.device >~/.config/i3/config; restart
|
||||
|
||||
|
||||
# resize window (you can also use the mouse for that)
|
||||
mode "resize" {
|
||||
bindsym h resize shrink width 10 px or 10 ppt
|
||||
bindsym j resize shrink height 10 px or 10 ppt
|
||||
bindsym k resize grow height 10 px or 10 ppt
|
||||
bindsym l resize grow width 10 px or 10 ppt
|
||||
bindsym Return mode "default"
|
||||
bindsym Caps_Lock mode "default"
|
||||
bindsym $mod+Shift+r mode "default"
|
||||
}
|
||||
bindsym $mod+Shift+r mode "resize"
|
||||
|
||||
# passthrough mode to support Emacs, Tmux, Vim KBDs for window and pane management
|
||||
mode "passthrough" {
|
||||
bindsym $mod+Escape mode "default"
|
||||
}
|
||||
bindsym $mod+Escape mode "passthrough"
|
||||
|
||||
# Atom One Dark colors
|
||||
set $black #1e2127
|
||||
set $red #e06c75
|
||||
set $green #98c379
|
||||
set $yellow #d19a66
|
||||
set $blue #61afef
|
||||
set $magenta #c678dd
|
||||
set $cyan #56b6c2
|
||||
set $white #abb2bf
|
||||
set $bright_black #5c6370
|
||||
set $bright_red #e06c75
|
||||
set $bright_green #98c379
|
||||
set $bright_yellow #d19a66
|
||||
set $bright_white #ffffff
|
||||
set $bright_blue #61afef
|
||||
set $bright_magenta #c678dd
|
||||
set $bright_cyan #56b6c2
|
||||
set $selection #3a3f4b
|
||||
|
||||
# class # border # bg # text #indicator #child_border
|
||||
client.focused $red $red $red $magenta $bright_cyan
|
||||
client.focused_inactive $red $red $red $magenta $black
|
||||
client.unfocused $red $red $red $magenta $black
|
||||
|
||||
bar {
|
||||
status_command i3status
|
||||
position top
|
||||
# disable system tray icons
|
||||
tray_output none
|
||||
colors {
|
||||
background $black
|
||||
statusline $white
|
||||
separator $yellow
|
||||
focused_workspace $black $black $bright_cyan
|
||||
active_workspace $red $bright_blue $blue
|
||||
inactive_workspace $black $black $bright_black
|
||||
urgent_workspace $magenta $black $magenta
|
||||
}
|
||||
}
|
||||
|
|
@ -1,113 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Select common timer intervals with dmenu and play an alarm sound when
|
||||
# finished. Useful if you bind a KBD in a window manager such as i3. Pass the
|
||||
# path to the alarm mp3 as the only argument.
|
||||
#
|
||||
# Usage: ./dmenu_timer.sh path/to/alarm.mp3
|
||||
|
||||
times=$(cat <<EOF
|
||||
1 minute
|
||||
2 minutes
|
||||
3 minutes
|
||||
4 minutes
|
||||
5 minutes
|
||||
10 minutes
|
||||
15 minutes
|
||||
20 minutes
|
||||
30 minutes
|
||||
45 minutes
|
||||
1 hour
|
||||
2 hours
|
||||
EOF
|
||||
)
|
||||
selection=$(echo "$times" | dmenu)
|
||||
|
||||
case $selection in
|
||||
'1 minute')
|
||||
notify-send 'Timer' 'Set for 1 minute' && \
|
||||
sleep 1m && \
|
||||
notify-send 'Timer' 'Finished.' && \
|
||||
mpg123 $1 && \
|
||||
exit 0
|
||||
;;
|
||||
'2 minutes')
|
||||
notify-send 'Timer' 'Set for 2 minute' && \
|
||||
sleep 2m && \
|
||||
notify-send 'Timer' 'Finished.' && \
|
||||
mpg123 $1 && \
|
||||
exit 0
|
||||
;;
|
||||
'3 minutes')
|
||||
notify-send 'Timer' 'Set for 3 minutes' && \
|
||||
sleep 3m && \
|
||||
notify-send 'Timer' 'Finished.' && \
|
||||
mpg123 $1 && \
|
||||
exit 0
|
||||
;;
|
||||
'4 minutes')
|
||||
notify-send 'Timer' 'Set for 4 minutes' && \
|
||||
sleep 4m && \
|
||||
notify-send 'Timer' 'Finished.' && \
|
||||
mpg123 $1 && \
|
||||
exit 0
|
||||
;;
|
||||
'5 minutes')
|
||||
notify-send 'Timer' 'Set for 5 minutes' && \
|
||||
sleep 5m && \
|
||||
notify-send 'Timer' 'Finished.' && \
|
||||
mpg123 $1 && \
|
||||
exit 0
|
||||
;;
|
||||
'10 minutes')
|
||||
notify-send 'Timer' 'Set for 10 minutes' && \
|
||||
sleep 10m && \
|
||||
notify-send 'Timer' 'Finished.' && \
|
||||
mpg123 $1 && \
|
||||
exit 0
|
||||
;;
|
||||
'15 minutes')
|
||||
notify-send 'Timer' 'Set for 15 minutes' && \
|
||||
sleep 15m && \
|
||||
notify-send 'Timer' 'Finished.' && \
|
||||
mpg123 $1 && \
|
||||
exit 0
|
||||
;;
|
||||
'20 minutes')
|
||||
notify-send 'Timer' 'Set for 20 minutes' && \
|
||||
sleep 20m && \
|
||||
notify-send 'Timer' 'Finished.' && \
|
||||
mpg123 $1 && \
|
||||
exit 0
|
||||
;;
|
||||
'30 minutes')
|
||||
notify-send 'Timer' 'Set for 30 minutes' && \
|
||||
sleep 30m && \
|
||||
notify-send 'Timer' 'Finished.' && \
|
||||
mpg123 $1 && \
|
||||
exit 0
|
||||
;;
|
||||
'45 minutes')
|
||||
notify-send 'Timer' 'Set for 45 minutes' && \
|
||||
sleep 45m && \
|
||||
notify-send 'Timer' 'Finished.' && \
|
||||
mpg123 $1 && \
|
||||
exit 0
|
||||
;;
|
||||
'1 hour')
|
||||
notify-send 'Timer' 'Set for 1 hour' && \
|
||||
sleep 1h && \
|
||||
notify-send 'Timer' 'Finished.' && \
|
||||
mpg123 $1 && \
|
||||
exit 0
|
||||
;;
|
||||
'2 hours')
|
||||
notify-send 'Timer' 'Set for 2 hours' && \
|
||||
sleep 2h && \
|
||||
notify-send 'Timer' 'Finished.' && \
|
||||
mpg123 $1 && \
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
notify-send 'Timer' 'No supported time selected. Exiting...' && exit 1
|
||||
esac
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
shopt -s nullglob globstar
|
||||
|
||||
typeit=0
|
||||
if [[ $1 == "--type" ]]; then
|
||||
typeit=1
|
||||
shift
|
||||
fi
|
||||
|
||||
prefix=${PASSWORD_STORE_DIR-~/.password-store}
|
||||
password_files=( "$prefix"/**/*.gpg )
|
||||
password_files=( "${password_files[@]#"$prefix"/}" )
|
||||
password_files=( "${password_files[@]%.gpg}" )
|
||||
|
||||
password=$(printf '%s\n' "${password_files[@]}" | dmenu "$@")
|
||||
|
||||
[[ -n $password ]] || exit
|
||||
|
||||
if [[ $typeit -eq 0 ]]; then
|
||||
pass show -c "$password" 2>/dev/null
|
||||
else
|
||||
pass show "$password" | { IFS= read -r pass; printf %s "$pass"; } |
|
||||
xdotool type --clearmodifiers --file -
|
||||
fi
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
// vim:ts=4:sw=4:et
|
||||
{
|
||||
// splitv split container with 2 children
|
||||
"border": "normal",
|
||||
"floating": "auto_off",
|
||||
"layout": "splitv",
|
||||
"percent": 0.5,
|
||||
"type": "con",
|
||||
"nodes": [
|
||||
{
|
||||
"border": "pixel",
|
||||
"current_border_width": 3,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 925,
|
||||
"width": 1072,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"name": "emacs@wpcarro.lon.corp.google.com",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^GoogleEmacs$",
|
||||
"instance": "^emacs$",
|
||||
"title": "^google-emacs$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
},
|
||||
{
|
||||
"border": "pixel",
|
||||
"current_border_width": 3,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 484,
|
||||
"width": 724,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"name": "i3-save-tree",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^st\\-256color$",
|
||||
"instance": "^st\\-256color$",
|
||||
"title": "^st-term$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
{
|
||||
"border": "pixel",
|
||||
"current_border_width": 3,
|
||||
"floating": "auto_off",
|
||||
"geometry": {
|
||||
"height": 2125,
|
||||
"width": 1914,
|
||||
"x": 1923,
|
||||
"y": 32
|
||||
},
|
||||
"name": "i3: Layout saving in i3 - Google Chrome",
|
||||
"percent": 0.5,
|
||||
"swallows": [
|
||||
{
|
||||
"class": "^Google\\-chrome$",
|
||||
"instance": "^google\\-chrome$",
|
||||
"title": "Chrome",
|
||||
"window_role": "^browser$"
|
||||
}
|
||||
],
|
||||
"type": "con"
|
||||
}
|
||||
|
|
@ -1,175 +0,0 @@
|
|||
# It might be possible to attempt to share KBDs between `lf` and `dired`.
|
||||
# Currently shared KBDs with `dired`:
|
||||
# - D: delete file
|
||||
# - R: rename file
|
||||
# - +: create directory
|
||||
# - c: create file
|
||||
#
|
||||
# The following command prefixes are used by lf (taken from the docs):
|
||||
#
|
||||
# : read (default) builtin/custom command
|
||||
# $ shell shell command
|
||||
# % shell-pipe shell command running with the ui
|
||||
# ! shell-wait shell command waiting for key press
|
||||
# & shell-async shell command running asynchronously
|
||||
# / search search file in current directory
|
||||
# ? search-back search file in the reverse order
|
||||
#
|
||||
# `x` will be used as a generic prefix KBD for most of my user-defined KBDs. Do
|
||||
# not map anything to just `x`. Instead prefer `x<char>`. Mneumonically, "x" is
|
||||
# intended to resemble "eXecute".
|
||||
#
|
||||
# If `x<char>` does one thing; `x<uppercase-char>` should do the opposite when
|
||||
# possible. This is convenient for things that pass the round-trip test like
|
||||
# encrypt/decrypt, archive/unarchive.
|
||||
|
||||
# TODO: move most of these commands to function.zsh and call those functions
|
||||
# herein. Especially the `archive` and `extract` functions.
|
||||
#
|
||||
# TODO: consider integrations with `xdg-open` and configuring filetypes to
|
||||
# behave in expected "dwim" ways.
|
||||
#
|
||||
# TODO: learn more about the terms "archive", "compress", "decompress",
|
||||
# "expand", "extract", etc. See if a larger abstraction can be created on top
|
||||
# without sacrificing too much nuance. This might be the case of "serialize",
|
||||
# "deserialize", "pickle", "unpickle", "marshal", "unmarshal", "encode",
|
||||
# "decode" -- in which case, a broader abstraction would be nice to decrease the
|
||||
# surface area of the vocabulary.
|
||||
#
|
||||
# TODO: find a way to visualize all of the bound or unbound KBDs.
|
||||
#
|
||||
# TODO: support polymorphic way encrypt/decrypt a file or directory.
|
||||
#
|
||||
# TODO: support "toggle" for encryption/decryption that detects which function
|
||||
# to run based on the extension.
|
||||
#
|
||||
# TODO: support "toggle" for archive/unarchive that detects which function to
|
||||
# run based on the extension.
|
||||
|
||||
# Basic configuration
|
||||
set hidden on
|
||||
|
||||
# Arguably the most import function herein
|
||||
cmd help $lf -doc | less
|
||||
|
||||
# delete a file, dir
|
||||
map D delete
|
||||
|
||||
cmd rename %{{
|
||||
# Renames files, dirs.
|
||||
set -f
|
||||
if [ -e "$1" ]; then
|
||||
printf 'file exists'
|
||||
else
|
||||
mv "$f" "$1"
|
||||
fi
|
||||
}}
|
||||
map R push :rename<space>
|
||||
|
||||
cmd mkdir %{{
|
||||
mkdir -p "$1"
|
||||
}}
|
||||
map + push :mkdir<space>
|
||||
|
||||
cmd touch %{{
|
||||
# Create a file
|
||||
touch "$1"
|
||||
}}
|
||||
map c push :touch<space>
|
||||
|
||||
cmd encrypt_file %{{
|
||||
# Encrypts the file and deletes the cleartext version.
|
||||
# Run `decrypt_file` to return the file to its cleartext version.
|
||||
printf "recipient: "
|
||||
read recipient
|
||||
gpg --encrypt --recipient "$recipient" "$f" && rm "$f"
|
||||
}}
|
||||
map xe :encrypt_file
|
||||
|
||||
cmd decrypt_file %{{
|
||||
# Decrypts a file that was encrypted with `encrypt_file`.
|
||||
# Assumes encrypted files have the .gpg extension and decrypted files omit the
|
||||
# .gpg extension.
|
||||
# Deletes the original .gpg file when finished.
|
||||
|
||||
# check if file exists without .gpg extension
|
||||
if [ -e "${f%.gpg}" ]; then
|
||||
printf "${f%.gpg} exists. Consider deleting or renaming it. Aborting..."
|
||||
else
|
||||
gpg --decrypt "$f" >"${f%.gpg}" 2>/dev/null && rm "$f"
|
||||
fi
|
||||
}}
|
||||
map xE :decrypt_file
|
||||
|
||||
cmd archive %{{
|
||||
# Generic function for archiving directories.
|
||||
# TODO: support selections of multiple files.
|
||||
set -f
|
||||
printf "Which type of archive would you like to create? (tar,tar.gz,zip) "
|
||||
read answer
|
||||
case $answer in
|
||||
tar.gz) tar -czf "$f.tar.gz" "$(basename $f)"; rm -rf "$f";;
|
||||
tar) tar -cf "$f.tar" "$(basename $f)"; rm -rf "$f";;
|
||||
zip) zip -r "$f.zip" "$(basename $f)"; rm -rf "$f";;
|
||||
*) printf "\"$1\" is not a support archive. Aborting..."
|
||||
esac
|
||||
}}
|
||||
map xa :archive
|
||||
|
||||
cmd unarchive %{{
|
||||
# Generic function for extracting archived directories.
|
||||
# Assumes directories were archived with the `archive`.
|
||||
set -f
|
||||
case $f in
|
||||
*.tar.gz) tar -xzvf $f; rm "$f";;
|
||||
*.tar) tar -xvf $f; rm "$f";;
|
||||
*.zip) unzip "$f"; rm "$f";;
|
||||
# TODO: grab extension from $f and display it in `printf` call.
|
||||
*) printf "Unsupported archive type. Aborting..."
|
||||
esac
|
||||
}}
|
||||
map xA: unarchive
|
||||
|
||||
cmd tar %{{
|
||||
# tars a directory
|
||||
set -f
|
||||
printf "gzip? (y,n) "
|
||||
read answer
|
||||
case $answer in
|
||||
y) tar -czf "$f.tar.gz" "$(basename $f)"; rm -rf "$f";;
|
||||
n) tar -cf "$f.tar" "$(basename $f)"; rm -rf "$f";;
|
||||
*) printf "\"$answer\" is not a supported answer. Aborting...";;
|
||||
esac
|
||||
}}
|
||||
map xt :tar
|
||||
|
||||
cmd untar %{{
|
||||
# untars a directory tar'd with `tar`.
|
||||
set -f
|
||||
case $f in
|
||||
*.tar.gz) tar -xzvf $f; rm "$f";;
|
||||
*.tar) tar -xvf $f; rm "$f";;
|
||||
esac
|
||||
}}
|
||||
map xT :untar
|
||||
|
||||
cmd zip %{{
|
||||
# zip a directory
|
||||
set -f
|
||||
zip -r "$f.zip" "$(basename $f)"
|
||||
rm -rf "$f"
|
||||
}}
|
||||
map xz :zip
|
||||
|
||||
cmd unzip %{{
|
||||
# unzip a directory
|
||||
set -f
|
||||
unzip "$f"
|
||||
rm "$f"
|
||||
}}
|
||||
map xZ :unzip
|
||||
|
||||
# outputs the size of a particular file, dir
|
||||
# TODO: consider mapping this to a KBD
|
||||
cmd size %du -hs "$f"
|
||||
map xs :size
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
':/usr/local/google/home/wpcarro
|
||||
D:~/Dropbox
|
||||
c:~/Dropbox/dotfiles/configs
|
||||
d:~/Dropbox/dotfiles
|
||||
s:~/Pictures/screenshots
|
||||
|
|
@ -1,667 +0,0 @@
|
|||
" -- BEGIN: Vundle config --
|
||||
set nocompatible " be iMproved, required
|
||||
filetype off " required
|
||||
|
||||
" set the runtime path to include Vundle and initialize
|
||||
" share Vundle between vim and neovim
|
||||
set rtp+=~/.vim/bundle/Vundle.vim
|
||||
set rtp+=~/.config/nvim/bundle/Vundle.vim
|
||||
call vundle#begin()
|
||||
" alternatively, pass a path where Vundle should install plugins
|
||||
"call vundle#begin('~/some/path/here')
|
||||
|
||||
" let Vundle manage Vundle, required
|
||||
Plugin 'VundleVim/Vundle.vim'
|
||||
|
||||
" The following are examples of different formats supported.
|
||||
" Keep Plugin commands between vundle#begin/end.
|
||||
|
||||
" Displays git information in airline.
|
||||
Plugin 'tpope/vim-fugitive'
|
||||
|
||||
" easier file navigation
|
||||
Plugin 'tpope/vim-vinegar'
|
||||
|
||||
" Displays git-tracked C*UD ops within gutter.
|
||||
Plugin 'airblade/vim-gitgutter'
|
||||
|
||||
" Fuzzy-finder
|
||||
Plugin 'kien/ctrlp.vim'
|
||||
|
||||
" Grep file contents
|
||||
Plugin 'mileszs/ack.vim'
|
||||
|
||||
" JS support
|
||||
Plugin 'pangloss/vim-javascript'
|
||||
|
||||
" JSX support
|
||||
Plugin 'mxw/vim-jsx'
|
||||
|
||||
" Syntax Highlighting Support
|
||||
Plugin 'lambdatoast/elm.vim'
|
||||
|
||||
" Elixir Plugins
|
||||
Plugin 'elixir-lang/vim-elixir'
|
||||
Plugin 'slashmili/alchemist.vim'
|
||||
Plugin 'powerman/vim-plugin-AnsiEsc'
|
||||
|
||||
" TypeScript Plugins
|
||||
Plugin 'rschmukler/typescript-vim'
|
||||
|
||||
" Themes
|
||||
Plugin 'sickill/vim-monokai'
|
||||
Plugin 'altercation/vim-colors-solarized'
|
||||
Plugin 'mhartington/oceanic-next'
|
||||
|
||||
" Executes shell commands and pipes output into new Vim buffer.
|
||||
Plugin 'sjl/clam.vim'
|
||||
|
||||
" Multiple cursors for simultaneous edits.
|
||||
" NOTE: use <C-n> to run miltiple cursors not <C-d>
|
||||
Plugin 'terryma/vim-multiple-cursors'
|
||||
|
||||
" Visualize buffers
|
||||
Plugin 'vim-airline/vim-airline'
|
||||
Plugin 'vim-airline/vim-airline-themes'
|
||||
|
||||
" Visually align assignments
|
||||
Plugin 'godlygeek/tabular'
|
||||
|
||||
" Visually Highlight and comment code.
|
||||
Plugin 'tpope/vim-commentary'
|
||||
|
||||
" Macros for quotes, parens, etc.
|
||||
Plugin 'tpope/vim-surround'
|
||||
|
||||
" Allows Plugins to be repeated with `.` character
|
||||
Plugin 'tpope/vim-repeat'
|
||||
|
||||
" Pairs of mappings
|
||||
Plugin 'tpope/vim-unimpaired'
|
||||
|
||||
" LISPs support
|
||||
Plugin 'guns/vim-sexp'
|
||||
Plugin 'tpope/vim-sexp-mappings-for-regular-people'
|
||||
let g:sexp_enable_insert_mode_mappings = 0
|
||||
let g:sexp_filetypes = ''
|
||||
|
||||
" Seamlessly navigate Vim and Tmux with similar bindings.
|
||||
Plugin 'christoomey/vim-tmux-navigator'
|
||||
|
||||
" Async `:make` for code linting etc.
|
||||
Plugin 'neomake/neomake'
|
||||
|
||||
" Color pack
|
||||
Plugin 'flazz/vim-colorschemes'
|
||||
|
||||
" Better buffer mgt than CtrlP
|
||||
Plugin 'yegappan/mru'
|
||||
|
||||
Plugin 'zanglg/nova.vim'
|
||||
|
||||
" Emulates Emacs's Helm Swoop search
|
||||
Plugin 'pelodelfuego/vim-swoop'
|
||||
|
||||
" Fish Shell support
|
||||
Plugin 'dag/vim-fish'
|
||||
|
||||
" Gotham colorscheme
|
||||
Plugin 'whatyouhide/vim-gotham'
|
||||
|
||||
" Transparent encryption + decryption
|
||||
Plugin 'jamessan/vim-gnupg'
|
||||
|
||||
" Javascript auto-formatting
|
||||
Plugin 'prettier/vim-prettier', {
|
||||
\ 'do': 'yarn install',
|
||||
\ 'for': ['javascript', 'typescript', 'css', 'less', 'scss', 'json', 'graphql', 'markdown'] }
|
||||
|
||||
" Support Org mode
|
||||
Plugin 'jceb/vim-orgmode'
|
||||
|
||||
" ReaosnML
|
||||
Plugin 'reasonml-editor/vim-reason-plus'
|
||||
|
||||
" Autocompletion
|
||||
Plugin 'junegunn/fzf'
|
||||
|
||||
" Better JSON highlighting
|
||||
Plugin 'elzr/vim-json'
|
||||
|
||||
" Text objects made easy
|
||||
Plugin 'kana/vim-textobj-user'
|
||||
|
||||
" Elixir text objects
|
||||
Plugin 'andyl/vim-textobj-elixir'
|
||||
|
||||
" Making HTML editing faster
|
||||
Plugin 'mattn/emmet-vim'
|
||||
|
||||
" Snippets for all languages
|
||||
Plugin 'honza/vim-snippets'
|
||||
|
||||
" Automatic bracket insertion
|
||||
Plugin 'jiangmiao/auto-pairs'
|
||||
|
||||
" Linting & error warnings
|
||||
Plugin 'vim-syntastic/syntastic'
|
||||
|
||||
" Atom colorscheme
|
||||
Plugin 'rakr/vim-one'
|
||||
|
||||
" Nix syntax highlighting
|
||||
Plugin 'LnL7/vim-nix'
|
||||
|
||||
call vundle#end() " required
|
||||
filetype plugin indent on " required
|
||||
" Put your non-Plugin stuff after this line
|
||||
" -- END: Vundle config --
|
||||
|
||||
" Changes <leader> to <space> character.
|
||||
let mapleader = " "
|
||||
|
||||
|
||||
" Highlight column width
|
||||
set textwidth=80
|
||||
set colorcolumn=+0
|
||||
|
||||
" autoreload a file when it changes on disk
|
||||
set autoread
|
||||
|
||||
" default to case-insensitive searching
|
||||
set ignorecase
|
||||
|
||||
" JSX configuration
|
||||
let g:jsx_ext_required = 0
|
||||
|
||||
|
||||
autocmd FileType reason nnoremap <buffer> gd :call LanguageClient_textDocument_definition()<CR>
|
||||
autocmd FileType reason nnoremap <buffer> gf :call LanguageClient_textDocument_formatting()<CR>
|
||||
autocmd FileType reason nnoremap <buffer> gh :call LanguageClient_textDocument_hover()<CR>
|
||||
autocmd FileType reason nnoremap <buffer> gr :call LanguageClient_textDocument_rename()<CR>
|
||||
|
||||
" Replace <CR> with G for faster navigation
|
||||
nnoremap <CR> G
|
||||
|
||||
|
||||
" Syntastic configuration
|
||||
set statusline+=%#warningmsg#
|
||||
set statusline+=%{SyntasticStatuslineFlag()}
|
||||
set statusline+=%*
|
||||
|
||||
let g:syntastic_always_populate_loc_list = 1
|
||||
let g:syntastic_auto_loc_list = 1
|
||||
let g:syntastic_check_on_open = 1
|
||||
let g:syntastic_check_on_wq = 0
|
||||
let g:syntastic_javascript_checkers = ['eslint']
|
||||
let g:syntastic_javascript_eslint_generic = 1
|
||||
" this is a hack to prevent a false negative
|
||||
" https://github.com/vim-syntastic/syntastic/issues/1692
|
||||
let g:syntastic_javascript_eslint_exec = '/bin/ls'
|
||||
let g:syntastic_javascript_eslint_exe = 'npx eslint'
|
||||
let g:syntastic_javascript_eslint_args = '-f compact'
|
||||
|
||||
" javascript autocompletion
|
||||
autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
|
||||
autocmd FileType javascript nnoremap <buffer> gf :Prettier<CR>
|
||||
|
||||
" Maximize the current window
|
||||
" Similar to Tmux mapping alt-z in my tmux.conf
|
||||
nnoremap t% :tab sp<CR>
|
||||
|
||||
" Allow C-g to act like C-c the way it does in Emacs
|
||||
cnoremap <C-g> <C-c>
|
||||
|
||||
" Prettier configuration
|
||||
let g:prettier#exec_cmd_async = 1
|
||||
" force Prettier to run on files even without the @format pragma
|
||||
let g:prettier#autoformat = 0
|
||||
|
||||
|
||||
" Basic settings
|
||||
" Thin cursor on INSERT mode
|
||||
if has('nvim')
|
||||
let $NVIM_TUI_ENABLE_CURSOR_SHAPE = 1
|
||||
endif
|
||||
|
||||
set number
|
||||
set nowrap
|
||||
set tabstop=2
|
||||
set expandtab
|
||||
set shiftwidth=2
|
||||
set background=dark
|
||||
|
||||
syntax enable
|
||||
colorscheme one
|
||||
set background=dark
|
||||
|
||||
" Vim in terminal cannot have a different font from the one set within your
|
||||
" terminal. However, this setting will set the font for the GUI version.
|
||||
if has('gui_running')
|
||||
set guifont=Operator\ Mono:h12
|
||||
endif
|
||||
|
||||
if has('termguicolors')
|
||||
set termguicolors
|
||||
endif
|
||||
|
||||
if &term =~# '^screen'
|
||||
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
|
||||
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
|
||||
endif
|
||||
|
||||
set history=1000
|
||||
set undolevels=1000
|
||||
|
||||
set t_Co=255
|
||||
|
||||
" Support italics
|
||||
highlight Comment cterm=italic
|
||||
|
||||
|
||||
" quickly edit popular configuration files
|
||||
nnoremap <leader>ev :vsplit $MYVIMRC<CR>
|
||||
nnoremap <leader>ee :vsplit ~/.emacs.d/init.el<CR>
|
||||
nnoremap <leader>ez :vsplit ~/.zshrc<CR>
|
||||
nnoremap <leader>ea :vsplit ~/aliases.zsh<CR>
|
||||
nnoremap <leader>ef :vsplit ~/functions.zsh<CR>
|
||||
nnoremap <leader>el :vsplit ~/variables.zsh<CR>
|
||||
nnoremap <leader>ex :vsplit ~/.Xresources<CR>
|
||||
nnoremap <leader>ei :vsplit ~/.config/i3/config.shared<CR>
|
||||
|
||||
" quickly source your vimrc
|
||||
nnoremap <leader>sv :source $MYVIMRC<CR>
|
||||
|
||||
" quickly edit your snippets
|
||||
nnoremap <leader>es :vsplit<CR>:edit ~/.vim/bundle/vim-snippets/snippets/reason.snippets<CR>
|
||||
|
||||
|
||||
" Auto resize window splits
|
||||
autocmd VimResized * wincmd =
|
||||
|
||||
|
||||
" Neomake Settings
|
||||
autocmd! BufWritePost * Neomake
|
||||
|
||||
" Elixir linting
|
||||
let g:neomake_elixir_credo_maker = {
|
||||
\ 'exe': 'mix',
|
||||
\ 'args': ['credo', 'list', '%:p', '--format=oneline'],
|
||||
\ 'errorformat':
|
||||
\ '%W[F] %. %f:%l:%c %m,' .
|
||||
\ '%W[F] %. %f:%l %m,' .
|
||||
\ '%W[R] %. %f:%l:%c %m,' .
|
||||
\ '%W[R] %. %f:%l %m,' .
|
||||
\ '%I[C] %. %f:%l:%c %m,' .
|
||||
\ '%I[C] %. %f:%l %m,' .
|
||||
\ '%-Z%.%#'
|
||||
\ }
|
||||
|
||||
|
||||
let g:neomake_elixir_enabled_makers = ['mix', 'credo']
|
||||
|
||||
augroup my_error_signs
|
||||
au!
|
||||
autocmd ColorScheme * hi NeomakeErrorSign ctermfg=203 guifg=#ff5f5f
|
||||
autocmd ColorScheme * hi NeomakeWarningSign ctermfg=209 guifg=#ffaf00
|
||||
autocmd ColorScheme * hi NeomakeInfoSign ctermfg=183 guifg=#dfafff
|
||||
autocmd ColorScheme * hi NeomakeMessageSign ctermfg=27 guifg=#0087ff
|
||||
augroup END
|
||||
|
||||
|
||||
let g:neomake_error_sign = {
|
||||
\ 'text': '>>',
|
||||
\ 'texthl': 'NeoMakeErrorSign',
|
||||
\ }
|
||||
|
||||
let g:neomake_warning_sign = {
|
||||
\ 'text': '>>',
|
||||
\ 'texthl': 'NeoMakeWarningSign',
|
||||
\ }
|
||||
|
||||
let g:neomake_info_sign = {
|
||||
\ 'text': '>>',
|
||||
\ 'texthl': 'NeoMakeInfoSign',
|
||||
\ }
|
||||
|
||||
let g:neomake_message_sign = {
|
||||
\ 'text': '>>',
|
||||
\ 'texthl': 'NeoMakeMessageSign',
|
||||
\ }
|
||||
|
||||
function! <SID>LocationPrevious()
|
||||
try
|
||||
lprev
|
||||
catch /^Vim\%((\a\+)\)\=:E553/
|
||||
llast
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
function! <SID>LocationNext()
|
||||
try
|
||||
lnext
|
||||
catch /^Vim\%((\a\+)\)\=:E553/
|
||||
lfirst
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
nnoremap <Leader>[ :call <SID>LocationPrevious()<CR>
|
||||
nnoremap <Leader>] :call <SID>LocationNext()<CR>
|
||||
|
||||
|
||||
" Alchemist settings
|
||||
let g:alchemist#elixir_erlang_src = '/usr/local/share/src'
|
||||
|
||||
|
||||
" Airline Settings
|
||||
" Enables the list of buffers.
|
||||
let g:airline#extensions#tabline#enabled = 0
|
||||
|
||||
" Buffer numbers alongside files
|
||||
let g:airline#extensions#tabline#buffer_nr_show = 0
|
||||
|
||||
" Shows the filename only.
|
||||
let g:airline#extensions#tabline#fnamemod = ':t'
|
||||
|
||||
" Allow glyphs in airline
|
||||
let g:airline_powerline_fonts = 1
|
||||
|
||||
" Change Airline theme
|
||||
let g:airline_theme = 'hybrid'
|
||||
|
||||
|
||||
" Vim-Swoop Settings
|
||||
" Edits colorscheme
|
||||
let g:swoopHighlight = ["hi! link SwoopBufferLineHi Warning", "hi! link SwoopPatternHi Error"]
|
||||
|
||||
|
||||
" Jump to buffers.
|
||||
nmap <F1> :1b<CR>
|
||||
nmap <F2> :2b<CR>
|
||||
nmap <F3> :3b<CR>
|
||||
nmap <F4> :4b<CR>
|
||||
nmap <F5> :5b<CR>
|
||||
nmap <F6> :6b<CR>
|
||||
nmap <F7> :7b<CR>
|
||||
nmap <F8> :8b<CR>
|
||||
nmap <F9> :9b<CR>
|
||||
|
||||
|
||||
" It's the twenty-first century...no swaps.
|
||||
set noswapfile
|
||||
|
||||
|
||||
" Allow visual tab completion in command mode
|
||||
set wildmenu
|
||||
|
||||
|
||||
" Show Vim commands as they're being input.
|
||||
set showcmd
|
||||
|
||||
|
||||
" Code folding
|
||||
" set foldmethod=indent
|
||||
" set foldnestmax=10
|
||||
" set nofoldenable
|
||||
" set foldlevel=4
|
||||
|
||||
|
||||
" emulate ci" and ci' behavior
|
||||
nnoremap ci( f(%ci(
|
||||
nnoremap ci[ f[%ci[
|
||||
|
||||
|
||||
" extend functionality of <C-e> & <C-y> scrolling
|
||||
nnoremap <C-e> <C-e>j
|
||||
vnoremap <C-e> <C-e>j
|
||||
nnoremap <C-y> <C-y>k
|
||||
vnoremap <C-y> <C-y>k
|
||||
|
||||
|
||||
" Opens all folds within the buffer
|
||||
" nnoremap ZZ zR
|
||||
|
||||
" Closes all folds within the buffer
|
||||
" nnoremap zz zM
|
||||
|
||||
" Opens all folds beneath the cursor
|
||||
" NOTE: j is the character to go down
|
||||
" nnoremap zJ zO
|
||||
|
||||
" Opens single fold beneath the cursor
|
||||
" NOTE: j is the character to go down
|
||||
" nnoremap zj zo
|
||||
|
||||
" Opens single fold beneath the cursor
|
||||
" NOTE: k is the character to go down
|
||||
" nnoremap zK zC
|
||||
|
||||
" Opens single fold beneath the cursor
|
||||
" NOTE: k is the character to go down
|
||||
" nnoremap zk zc
|
||||
|
||||
|
||||
" Save shortcut
|
||||
nnoremap <C-s> :w<CR>
|
||||
|
||||
|
||||
" Switch to MRU'd buffer
|
||||
nnoremap <leader><leader> <C-^>
|
||||
|
||||
|
||||
" Alternative MRU to CtrlP MRU
|
||||
nnoremap <leader>b :MRU<CR>
|
||||
|
||||
|
||||
" Supports mouse interaction.
|
||||
set mouse=a
|
||||
|
||||
|
||||
" Highlights matches during a search.
|
||||
set hlsearch
|
||||
|
||||
" Clear highlight
|
||||
noremap <silent> <leader>h :nohlsearch<bar>:echo<CR>
|
||||
|
||||
|
||||
" backspace settings
|
||||
set backspace=2
|
||||
set backspace=indent,eol,start
|
||||
|
||||
|
||||
" Javascript specific variables
|
||||
let g:javascript_plugin_jsdoc = 1
|
||||
|
||||
" GlobalListchars
|
||||
set list
|
||||
set listchars=tab:··,trail:·,nbsp:·
|
||||
|
||||
|
||||
" Keeps everything concealed at all times. Even when cursor is on the word.
|
||||
set conceallevel=1
|
||||
set concealcursor=nvic
|
||||
|
||||
|
||||
" map jk to <Esc>
|
||||
inoremap jk <Esc>
|
||||
|
||||
|
||||
" Hybrid mode for Vim
|
||||
inoremap <C-a> <Esc>I
|
||||
inoremap <C-e> <Esc>A
|
||||
|
||||
inoremap <M-b> <S-Left>
|
||||
inoremap <M-f> <S-Right>
|
||||
|
||||
inoremap <C-b> <Left>
|
||||
inoremap <C-f> <Right>
|
||||
inoremap <C-p> <Up>
|
||||
inoremap <C-n> <Down>
|
||||
|
||||
|
||||
" Manage Vertical and Horizontal splits
|
||||
nnoremap sl <Esc>:vs<CR><C-w>l
|
||||
nnoremap sh <Esc>:vs<CR>
|
||||
nnoremap sj <Esc>:sp<CR><C-w>j
|
||||
nnoremap sk <Esc>:sp<CR>
|
||||
|
||||
|
||||
" Delete (i.e. "close") the currently opened buffer
|
||||
" TODO: unless it's a split window, which should be :q
|
||||
nnoremap <leader>q :bdelete<CR>
|
||||
|
||||
|
||||
" Set CtrlP runtime path
|
||||
set runtimepath^=~/.vim/bundle/ctrlp.vim
|
||||
|
||||
|
||||
" Pane movement
|
||||
let g:tmux_navigator_no_mappings = 1
|
||||
|
||||
nnoremap <silent> <M-h> :TmuxNavigateLeft<CR>
|
||||
nnoremap <silent> <M-j> :TmuxNavigateDown<CR>
|
||||
nnoremap <silent> <M-k> :TmuxNavigateUp<CR>
|
||||
nnoremap <silent> <M-l> :TmuxNavigateRight<CR>
|
||||
nnoremap <silent> <M-q> :q<CR>
|
||||
|
||||
" make Y do what is intuitive given:
|
||||
" D: deletes until EOL
|
||||
" C: changes until EOL
|
||||
" Y: (should) yank until EOL
|
||||
nnoremap Y y$
|
||||
|
||||
|
||||
" scrolling and maintaing mouse position
|
||||
" nnoremap <C-j> j<C-e>
|
||||
" nnoremap <C-k> k<C-y>
|
||||
|
||||
|
||||
" remap redo key that is eclipsed by `rotate` currently
|
||||
nnoremap U :redo<CR>
|
||||
|
||||
|
||||
" Define highlighting groups
|
||||
" NOTE: The ANSII aliases for colors will change when iTerm2 settings are
|
||||
" changed.
|
||||
highlight InterestingWord1 ctermbg=Magenta ctermfg=Black
|
||||
highlight InterestingWord2 ctermbg=Blue ctermfg=Black
|
||||
|
||||
" h1 highlighting
|
||||
nnoremap <silent> <leader>1 :execute '2match InterestingWord1 /\<<c-r><c-w>\>/'<CR>
|
||||
nnoremap <silent> <leader>x1 :execute '2match none'<CR>
|
||||
vnoremap <silent> <leader>1 :execute '2match InterestingWord1 /\<<c-r><c-w>\>/'<CR>
|
||||
|
||||
" h2 highlighting
|
||||
nnoremap <silent> <leader>2 :execute '3match InterestingWord2 /\<<c-r><c-w>\>/'<CR>
|
||||
nnoremap <silent> <leader>x2 :execute '3match none'<CR>
|
||||
|
||||
"clear all highlighted groups
|
||||
nnoremap <silent> <leader>xx :execute '2match none'<CR> :execute '3match none'<CR> hh
|
||||
|
||||
|
||||
" pasteboard copy & paste
|
||||
set clipboard+=unnamedplus
|
||||
|
||||
|
||||
" Manage 80 char line limits
|
||||
highlight OverLength1 ctermbg=Magenta ctermfg=Black
|
||||
highlight OverLength2 ctermbg=LightMagenta ctermfg=Black
|
||||
highlight OverLength3 ctermbg=White ctermfg=Black
|
||||
" match OverLength3 /\%81v.\+/
|
||||
match OverLength2 /\%91v.\+/
|
||||
" match OverLength3 /\%101v.\+/
|
||||
|
||||
nnoremap <leader>w :w<CR>
|
||||
|
||||
|
||||
" Resize split to 10,20,...,100 chars
|
||||
" Uncomment the next lines for support at those sizes.
|
||||
" These bindings interfere with the highlight groups, however.
|
||||
" Increases the width of a vertical split.
|
||||
" nnoremap <leader>1 :vertical resize 10<CR>
|
||||
" nnoremap <leader>2 :vertical resize 20<CR>
|
||||
nnoremap <leader>3 :vertical resize 30<CR>
|
||||
nnoremap <leader>4 :vertical resize 40<CR>
|
||||
nnoremap <leader>5 :vertical resize 50<CR>
|
||||
nnoremap <leader>6 :vertical resize 60<CR>
|
||||
nnoremap <leader>7 :vertical resize 70<CR>
|
||||
nnoremap <leader>8 :vertical resize 80<CR>
|
||||
nnoremap <leader>9 :vertical resize 90<CR>
|
||||
nnoremap <leader>0 :vertical resize 100<CR>
|
||||
|
||||
|
||||
" Increases the height of a horizontal split.
|
||||
nnoremap <leader>v1 :resize 5<CR>
|
||||
nnoremap <leader>v2 :resize 10<CR>
|
||||
nnoremap <leader>v3 :resize 15<CR>
|
||||
nnoremap <leader>v4 :resize 20<CR>
|
||||
nnoremap <leader>v5 :resize 25<CR>
|
||||
nnoremap <leader>v6 :resize 30<CR>
|
||||
nnoremap <leader>v7 :resize 35<CR>
|
||||
nnoremap <leader>v8 :resize 40<CR>
|
||||
nnoremap <leader>v9 :resize 45<CR>
|
||||
nnoremap <leader>v0 :resize 50<CR>
|
||||
|
||||
|
||||
" BOL and EOL
|
||||
nnoremap H ^
|
||||
vnoremap H ^
|
||||
nnoremap L $
|
||||
vnoremap L $
|
||||
|
||||
|
||||
" Search for visually selected text
|
||||
vnoremap // y/<C-r>"<CR>N
|
||||
|
||||
|
||||
" trim trailing whitespace on save
|
||||
autocmd BufWritePre *.{js,py,tpl,less,html,ex,exs,txt} :%s/\s\+$//e
|
||||
|
||||
|
||||
" Use .gitignore file to populate Ctrl-P
|
||||
let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files . -co --exclude-standard', 'find %s -type f']
|
||||
|
||||
|
||||
" Ignores dirs and files
|
||||
let g:ctrlp_custom_ignore = {
|
||||
\ 'dir': 'node_modules',
|
||||
\ 'file': '\v\.(exe|dll|png|jpg|jpeg)$'
|
||||
\}
|
||||
|
||||
|
||||
" WIP: Run elixir tests on that line
|
||||
" TODO: only register binding in *.exs? file extensions
|
||||
nnoremap <leader>t :call ExTestToggle()<CR>
|
||||
|
||||
|
||||
" Jumps from an Elixir module file to an Elixir test file.
|
||||
fun! ExTestToggle()
|
||||
if expand('%:e') == "ex"
|
||||
|
||||
let test_file_name = expand('%:t:r') . "_test.exs"
|
||||
let test_file_dir = substitute(expand('%:p:h'), "/lib/", "/test/", "")
|
||||
let full_test_path = join([test_file_dir, test_file_name], "/")
|
||||
|
||||
e `=full_test_path`
|
||||
|
||||
elseif match(expand('%:t'), "_test.exs") != -1
|
||||
|
||||
let test_file_name = expand('%:t:r')
|
||||
let offset_amt = strlen(test_file_name) - strlen("_test")
|
||||
let module_file_name = strpart(test_file_name, 0, offset_amt) . ".ex"
|
||||
let module_file_dir = substitute(expand('%:p:h'), "/test/", "/lib/", "")
|
||||
let full_module_path = join([module_file_dir, module_file_name], "/")
|
||||
|
||||
e `=full_module_path`
|
||||
|
||||
endif
|
||||
endfun
|
||||
|
||||
|
||||
" Creates intermediate directories and file to match current buffer's filepath
|
||||
fun! CreateNonExistingDirsAndFile()
|
||||
! echo "Creating directory..." && mkdir -p %:p:h && echo "Created directory." && echo "Creating file..." && touch %:t:p && echo "Created file."
|
||||
|
||||
" Write the buffer to the recently created file.
|
||||
w
|
||||
endfun
|
||||
|
|
@ -1 +0,0 @@
|
|||
rofi.theme: /usr/share/rofi/themes//lb.rasi
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
[global_config]
|
||||
[keybindings]
|
||||
[layouts]
|
||||
[[default]]
|
||||
[[[child1]]]
|
||||
parent = window0
|
||||
type = Terminal
|
||||
[[[window0]]]
|
||||
parent = ""
|
||||
type = Window
|
||||
[plugins]
|
||||
[profiles]
|
||||
[[default]]
|
||||
background_type = transparent
|
||||
cursor_color = "#aaaaaa"
|
||||
cursor_shape = ibeam
|
||||
font = Source Code Pro 12
|
||||
scrollbar_position = hidden
|
||||
show_titlebar = False
|
||||
use_system_font = False
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"detachKeys": "ctrl-i,e"
|
||||
}
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
servers = (
|
||||
{
|
||||
address = "chat.freenode.net";
|
||||
chatnet = "Freenode";
|
||||
port = "6697";
|
||||
use_tls = "yes";
|
||||
tls_verify = "yes";
|
||||
autoconnect = "no";
|
||||
},
|
||||
{
|
||||
address = "irc.corp.google.com";
|
||||
chatnet = "Google";
|
||||
port = "6697";
|
||||
use_tls = "yes";
|
||||
tls_verify = "yes";
|
||||
autoconnect = "no";
|
||||
server_reconnect_time = 5;
|
||||
}
|
||||
);
|
||||
|
||||
chatnets = {
|
||||
Freenode = {
|
||||
type = "IRC";
|
||||
autosendcmd = "/msg nickserv identify wpcarro ]3Fwus]YF7yXPB6Re/Me";
|
||||
};
|
||||
Google = {
|
||||
type = "IRC";
|
||||
};
|
||||
};
|
||||
|
||||
channels = (
|
||||
{ name = "#nixos"; chatnet = "Freenode"; autojoin = "No"; },
|
||||
{ name = "#i3"; chatnet = "Freenode"; autojoin = "No"; },
|
||||
{ name = "#pass"; chatnet = "Freenode"; autojoin = "No"; },
|
||||
);
|
||||
|
||||
settings = {
|
||||
core = {
|
||||
real_name = "William Carroll's account";
|
||||
user_name = "wpcarro";
|
||||
nick = "wpcarro";
|
||||
};
|
||||
"fe-text" = { actlist_sort = "refnum"; };
|
||||
"fe-common/core" = { theme = "default"; };
|
||||
};
|
||||
|
|
@ -1 +0,0 @@
|
|||
5c006ff1-cbf7-40ef-b117-5f8c46def8c9
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 502 KiB |
|
|
@ -1,8 +0,0 @@
|
|||
Host desktop
|
||||
Hostname wpcarro.lon.corp.google.com
|
||||
|
||||
Host cloudtop
|
||||
Hostname wpcarro.c.googlers.com
|
||||
|
||||
Match host *.corp.google.com
|
||||
ProxyCommand corp-ssh-helper %h %p
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
root = /usr/local/google/home/wpcarro/cloud
|
||||
root = ssh://cloudtop//usr/local/google/home/wpcarro/cloud
|
||||
auto = true
|
||||
batch = true
|
||||
backuploc = local
|
||||
backupsuffix = ~~
|
||||
ignore = Name *~
|
||||
Loading…
Add table
Add a link
Reference in a new issue