HendrikPetertje / vimify

Spotify integration for vim
100 stars 11 forks source link

vim config in the screenshot #1

Closed ricbermo closed 6 years ago

ricbermo commented 6 years ago

Hey, thanks for sharing this plugin, looks pretty neat. If you don't mind would u share your vim config? that's screenshot rocks!

Thanks

HendrikPetertje commented 6 years ago

Good question! Its a lot of stuff actually that I built over the years.

https://git.picodevelopment.nl/root/dot-nvim is my nvim dotfile (need to clean up some syntastic still, I ditched that)

then i put a bunch of custom config inside ~/.vimrc.after, though i still need to clean some syntastic out of this:

" # Basics
set shell=/usr/local/bin/zsh
syntax enable
set title
set autoread

" # Indentation
set expandtab
set shiftwidth=2
set softtabstop=2

" # Themes and styling
set background=dark
let base16colorspace=256
let g:enable_bold_font = 1
set cursorline
colorscheme base16-materia

" Base16 indentguides correction
let g:indent_guides_auto_colors = 0
autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd  guibg=gray   ctermbg=18
autocmd VimEnter,Colorscheme * :hi IndentGuidesEven guibg=darkgray   ctermbg=19

set colorcolumn=80

" ## Vim airline
let g:airline_powerline_fonts = 1
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#show_buffers = 0
let g:airline#extensions#tabline#show_close_button = 0
let g:airline_theme='base16'
autocmd VimEnter * AirlineRefresh

" ## Status line styling
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*

" # Nerdspace
let NERDSpaceDelims=1
let g:NERDDefaultAlign = 'left'

" # CTRL-P remap
let g:ctrlp_map = '<c-l>'
let g:ctrlp_cmd = 'CtrlP'
map <c-l> :CtrlP <CR>
let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files -co --exclude-standard']

" # Intialize CTRL-P buffer control
call ctrlp_bdelete#init()

" # Set eruby on html.erb files
autocmd BufRead,BufNewFile *.erb set filetype=eruby.html

" # Spellchecking
autocmd BufRead,BufNewFile *.md setlocal spell
set complete+=kspell
au BufRead,BufNewFile *.md setlocal textwidth=80

" Spotify
let g:spotify_token='NOTTELLINGYOU'

" # GUI settings
set guifont=Hack:h12

" Touchbar settings
" autocmd VimEnter * silent exec "!_setVimTouchPack"
" autocmd VimEnter * map <F2> :wq<CR>
" autocmd VimEnter * map <F3> :NERDTreeTabsToggle<CR>

So thats it for vim. need to go trough some config and clean out a few bits that I dont need anymore. good reminder of that

HendrikPetertje commented 6 years ago

Then as you might have noticed i have a fancy line underneath my terminal. I absolutely love Tmux for all kinds of reasons.

My custom tmux dotfile folder: https://git.picodevelopment.nl/root/tmux-mac (when installing, clone it to ~/.config/tmux-powerline)

Then the ~/.tmux.conf:

# Powerline
set-option -g status on
set-option -g status-interval 5
set-option -g status-justify "centre"
set-option -g status-left-length 60
set-option -g status-right-length 90

set-option -g status-left "#(~/.config/tmux-powerline/powerline.sh left)"
set-option -g status-right "#(~/.config/tmux-powerline/powerline.sh right)"
set -g default-terminal "screen-256color"
set-window-option -g window-status-format "#[fg=colour18, bg=colour19]#[fg=colour7, bg=colour19] #I  #W #[fg=colour19, bg=colour18]"
set-window-option -g window-status-current-format "#[fg=colour18, bg=colour0]#[fg=colour7, bg=colour0] #I  #W #[fg=colour0, bg=colour18]"

# Kil window
bind q killp

# Change b to < because ctrl-p in vim
unbind C-b
set-option -g prefix M-b

# clear the scren with ctrl+k
bind -n C-k clear-history

# Keyboard shortcuts on panes
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# Copy-paste integration
set-option -g default-shell /bin/zsh
set-option -g default-command "reattach-to-user-namespace -l zsh"

# Vim style navigation in copy mode
setw -g mode-keys vi
bind-key -Tcopy-mode-vi 'v' send -X begin-selection
bind-key -Tcopy-mode-vi 'y' send -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"

# Mousse panes
set -g mouse on

# Default colors
set -g status-bg "colour18"
set -g message-command-fg "colour231"
set -g status-justify "centre"
set -g status-left-length "100"
set -g status "on"
set -g pane-active-border-fg "colour254"
set -g message-bg "colour31"
set -g status-right-length "100"
set -g status-right-attr "none"
set -g message-fg "colour231"
set -g message-command-bg "colour31"
set -g status-attr "none"
set -g pane-border-fg "colour240"
set -g status-left-attr "none"
setw -g window-status-fg "colour250"
setw -g window-status-attr "none"
setw -g window-status-activity-bg "colour0"
setw -g window-status-activity-attr "underscore"
setw -g window-status-activity-fg "colour250"
setw -g window-status-separator ""
setw -g window-status-bg "colour19"

# Make escape time 0 to speed up hitting escape
set -sg escape-time 0

# Open new windows in same PWD
bind '%' split-window -h -c '#{pane_current_path}'  # Split panes horizontal
bind '"' split-window -v -c '#{pane_current_path}'  # Split panes vertically
bind c new-window -c '#{pane_current_path}' # Create new window

# hook to refresh touch bar
set-hook -g after-select-pane 'run-shell "~/.dotfiles/tmux/zsh-iterm-touchbar/zsh-iterm-touchbar.tmux.sh #{pane_current_path}"'
set-hook -g after-select-window 'run-shell "~/.dotfiles/tmux/zsh-iterm-touchbar/zsh-iterm-touchbar.tmux.sh #{pane_current_path}"'

replace .dotfiles/tmux with ~/.config/tmux-powerline

then the tmux powerline needs some config for weather, the website checker and such:

# Default configuration file for tmux-powerline.
# Modeline {
#        vi: foldmarker={,} foldmethod=marker foldlevel=0 tabstop=4 filetype=sh
# }

# General {
        # Show which segment fails and its exit code.
        export TMUX_POWERLINE_DEBUG_MODE_ENABLED="false"
        # Use patched font symbols.
        export TMUX_POWERLINE_PATCHED_FONT_IN_USE="true"
        # The theme to use.
        export TMUX_POWERLINE_THEME="default"
        # Overlay directory to look for themes. There you can put your own themes outside the repo. Fallback will still be the "themes" directory in the repo.
        export TMUX_POWERLINE_DIR_USER_THEMES=""
        # Overlay directory to look for segments. There you can put your own segments outside the repo. Fallback will still be the "segments" directory in the repo.
        export TMUX_POWERLINE_DIR_USER_SEGMENTS=""
# }

# battery.sh {
        # How to display battery remaining. Can be {percentage, cute}.
        export TMUX_POWERLINE_SEG_BATTERY_TYPE="percentage"
        # How may hearts to show if cute indicators are used.
        export TMUX_POWERLINE_SEG_BATTERY_NUM_HEARTS="5"
# }

# date.sh {
        # date(1) format for the date. If you don't, for some reason, like ISO 8601 format you might want to have "%D" or "%m/%d/%Y".
        export TMUX_POWERLINE_SEG_DATE_FORMAT="%F"
# }

# earthquake.sh {
        # The data provider to use. Currently only "goo" is supported.
        export TMUX_POWERLINE_SEG_EARTHQUAKE_DATA_PROVIDER="goo"
        # How often to update the earthquake data in seconds.
        # Note: This is not an early warning detector, use this
        # to be informed about recent earthquake magnitudes in your
        # area. If this is too often, goo may decide to ban you form
        # their server
        export TMUX_POWERLINE_SEG_EARTHQUAKE_UPDATE_PERIOD="600"
        # Only display information when earthquakes are within this many minutes
        export TMUX_POWERLINE_SEG_EARTHQUAKE_ALERT_TIME_WINDOW="60"
        # Display time with this format
        export TMUX_POWERLINE_SEG_EARTHQUAKE_TIME_FORMAT='(%H:%M)'
        # Display only if magnitude is greater or equal to this number
        export TMUX_POWERLINE_SEG_EARTHQUAKE_MIN_MAGNITUDE="3"
# }

# hostname.sh {
        # Use short or long format for the hostname. Can be {"short, long"}.
        export TMUX_POWERLINE_SEG_HOSTNAME_FORMAT="short"
# }

# macos_notification_count.sh {
        # App ids to query in notification center, separated by space
        # To get the app id that is associated with a specific app run:
        # sqlite3 -list "/var/folders/7s/w7_7n8zd5d37kpgn0jlhkjn00000gn/0//com.apple.notificationcenter/db/db" 'select * from app_info'
        # The first column contains the app ids
        # "5" is the app id of Messages.app
        # Only "banner" notifications are supported (see settings in the notification center)
        export TMUX_POWERLINE_SEG_MACOS_NOTIFICATION_COUNT_APPIDS="5"
        # Notification symbol
        export TMUX_POWERLINE_SEG_MACOS_NOTIFICATION_COUNT_CHAR="💬"
# }

# mailcount.sh {
        # Mailbox type to use. Can be any of {apple_mail, gmail, maildir, mbox, mailcheck}
        export TMUX_POWERLINE_SEG_MAILCOUNT_MAILBOX_TYPE=""

        ## Gmail
        # Enter your Gmail username here WITH OUT @gmail.com.( OR @domain)
        export TMUX_POWERLINE_SEG_MAILCOUNT_GMAIL_USERNAME=""
        # Google password. Recomenned to use application specific password (https://accounts.google.com/b/0/IssuedAuthSubTokens) Leave this empty to get password from OS X keychain.
        # For OSX users : MAKE SURE that you add a key to the keychain in the format as follows
        # Keychain Item name : http://<value-you-fill-in-server-variable-below>
        # Account name : <username-below>@<server-below>
        # Password : Your password ( Once again, try to use 2 step-verification and application-specific password)
        # See http://support.google.com/accounts/bin/answer.py?hl=en&answer=185833 for more info.
        export TMUX_POWERLINE_SEG_MAILCOUNT_GMAIL_PASSWORD=""
        # Domain name that will complete your email. For normal GMail users it probably is "gmail.com but can be "foo.tld" for Google Apps users.
        export TMUX_POWERLINE_SEG_MAILCOUNT_GMAIL_SERVER="gmail.com"
        # How often in minutes to check for new mails.
        export TMUX_POWERLINE_SEG_MAILCOUNT_GMAIL_INTERVAL="5"

        ## Maildir
        # Path to the maildir to check.
        export TMUX_POWERLINE_SEG_MAILCOUNT_MAILDIR_INBOX="/Users/peter/.mail/inbox/new"

        ## mbox
        # Path to the mbox to check.
        export TMUX_POWERLINE_SEG_MAILCOUNT_MBOX_INBOX=""

        ## mailcheck
        # Optional path to mailcheckrc
        export TMUX_POWERLINE_SEG_MAILCOUNT_MAILCHECKRC="/Users/peter/.mailcheckrc"
# }

# now_playing.sh {
        # Music player to use. Can be any of {audacious, banshee, cmus, itunes, lastfm, mocp, mpd, mpd_simple, pithos, rdio, rhythmbox, spotify, spotify_wine, file}.
        export TMUX_POWERLINE_SEG_NOW_PLAYING_MUSIC_PLAYER="spotify"
        # File to be read in case the song is being read from a file
        export TMUX_POWERLINE_SEG_NOW_PLAYING_FILE_NAME=""
        # Maximum output length.
        export TMUX_POWERLINE_SEG_NOW_PLAYING_MAX_LEN="40"
        # How to handle too long strings. Can be {trim, roll}.
        export TMUX_POWERLINE_SEG_NOW_PLAYING_TRIM_METHOD="trim"
        # Charcters per second to roll if rolling trim method is used.
        export TMUX_POWERLINE_SEG_NOW_PLAYING_ROLL_SPEED="2"

        # Hostname for MPD server in the format "[password@]host"
        export TMUX_POWERLINE_SEG_NOW_PLAYING_MPD_HOST="localhost"
        # Port the MPD server is running on.
        export TMUX_POWERLINE_SEG_NOW_PLAYING_MPD_PORT="6600"
        # Song display format for mpd_simple. See mpc(1) for delimiters.
        export TMUX_POWERLINE_SEG_NOW_PLAYING_MPD_SIMPLE_FORMAT="%artist% - %title%"
        # Song display format for rhythmbox. see "FORMATS" in rhythmbox-client(1).
        export TMUX_POWERLINE_SEG_NOW_PLAYING_RHYTHMBOX_FORMAT="%aa - %tt"

        # Username for Last.fm if that music player is used.
        export TMUX_POWERLINE_SEG_NOW_PLAYING_LASTFM_USERNAME=""
        # How often in seconds to update the data from last.fm.
        export TMUX_POWERLINE_SEG_NOW_PLAYING_LASTFM_UPDATE_PERIOD="30"
        # Fancy char to display before now playing track
        export TMUX_POWERLINE_SEG_NOW_PLAYING_NOTE_CHAR="♫"
# }

# pwd.sh {
        # Maximum length of output.
        export TMUX_POWERLINE_SEG_PWD_MAX_LEN="40"
# }

# time.sh {
        # date(1) format for the time. Americans might want to have "%I:%M %p".
        export TMUX_POWERLINE_SEG_TIME_FORMAT="%H:%M"
# }

# uptime.sh {
        # Name of GNU grep binary if in PATH, or path to it.
        export TMUX_POWERLINE_SEG_UPTIME_GREP="/usr/local/bin/grep"
# }

# weather.sh {
        # The data provider to use. Currently only "yahoo" is supported.
        export TMUX_POWERLINE_SEG_WEATHER_DATA_PROVIDER="yahoo"
        # What unit to use. Can be any of {c,f,k}.
        export TMUX_POWERLINE_SEG_WEATHER_UNIT="c"
        # How often to update the weather in seconds.
        export TMUX_POWERLINE_SEG_WEATHER_UPDATE_PERIOD="600"
        # Name of GNU grep binary if in PATH, or path to it.
        export TMUX_POWERLINE_SEG_WEATHER_GREP="/usr/local/bin/grep"

        # Your location. Find a code that works for you:
        # 1. Go to Yahoo weather http://weather.yahoo.com/
        # 2. Find the weather for you location
        # 3. Copy the last numbers in that URL. e.g. "http://weather.yahoo.com/united-states/california/newport-beach-12796587/" has the numbers "12796587"
        export TMUX_POWERLINE_SEG_WEATHER_LOCATION="906742"
# }

# server_stats.sh {
  export TMUX_SERVER_STATS_SERVERS="https://www.test.se https://test.test.se https://git.test.test"
  export TMUX_SERVER_STATS_ICONS="ⓐ ⓢ ⓖ"
# }
HendrikPetertje commented 6 years ago

Lastly I use:

ricbermo commented 6 years ago

@HendrikPetertje thank you so much :)