I would like VIM to add a final new line when I save my text files. Oddly, searching for it I only find instructions on how to disable this behavior, however I explicitly want it.
This is my VIM installation:
$ vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar 18 2016 01:00:23)
MacOS X (unix) version
Included patches: 1-1525
Compiled by Homebrew
Huge version without GUI. Features included (+) or not (-):
+acl +farsi +mouse_netterm +tag_binary
+arabic +file_in_path +mouse_sgr +tag_old_static
+autocmd +find_in_path -mouse_sysmouse -tag_any_white
-balloon_eval +float +mouse_urxvt -tcl
-browse +folding +mouse_xterm +terminfo
++builtin_terms -footer +multi_byte +termresponse
+byte_offset +fork() +multi_lang +textobjects
+channel -gettext -mzscheme +title
+cindent -hangul_input +netbeans_intg -toolbar
-clientserver +iconv +packages +user_commands
+clipboard +insert_expand +path_extra +vertsplit
+cmdline_compl +job +perl +virtualedit
+cmdline_hist +jumplist +persistent_undo +visual
+cmdline_info +keymap +postscript +visualextra
+comments +langmap +printer +viminfo
+conceal +libcall +profile +vreplace
+cryptv +linebreak +python +wildignore
+cscope +lispindent -python3 +wildmenu
+cursorbind +listcmds +quickfix +windows
+cursorshape +localmap +reltime +writebackup
+dialog_con -lua +rightleft -X11
+diff +menu +ruby -xfontset
+digraphs +mksession +scrollbind -xim
-dnd +modify_fname +signs -xsmp
-ebcdic +mouse +smartindent -xterm_clipboard
+emacs_tags -mouseshape +startuptime -xterm_save
+eval +mouse_dec +statusline -xpm
+ex_extra -mouse_gpm -sun_workshop
+extra_search -mouse_jsbterm +syntax
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
2nd user vimrc file: "~/.vim/vimrc"
user exrc file: "$HOME/.exrc"
fall-back for $VIM: "/usr/local/share/vim"
Compilation: /usr/bin/clang -c -I. -Iproto -DHAVE_CONFIG_H -DMACOS_X_UNIX -Os -w -pipe -march=native -mmacosx-version-min=10.11 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Linking: /usr/bin/clang -L. -L/usr/local/lib -L/usr/local/lib -Wl,-headerpad_max_install_names -o vim -lm -lncurses -liconv -framework Cocoa -fstack-protector -L/System/Library/Perl/5.18/darwin-thread-multi-2level/CORE -lperl -framework Python -lruby.2.0.0 -lobjc
My .vimrc:
autocmd BufWritePost .vimrc source %
set nocompatible
filetype off
" Set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'altercation/vim-colors-solarized'
Plugin 'ctrlpvim/ctrlp.vim'
Plugin 'vim-airline/vim-airline'
call vundle#end()
filetype plugin indent on
syntax on
colorscheme solarized
set backspace=2
set textwidth=80
set colorcolumn=+1
set laststatus=2
set tabstop=4
set shiftwidth=4
set expandtab
set number
set hidden
set hlsearch
set incsearch
set mouse=a
" Use ag over grep
set grepprg=ag\ --nogroup\ --nocolor
" Use ag in CtrlP for listing files. Lightning fast and respects .gitignore
let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'
" ag is fast enough that CtrlP doesn't need to cache
let g:ctrlp_use_caching = 0
for dir in ['backup', 'swap', 'undo']
let path = $HOME . '/.vim/' . dir
if !isdirectory(path)
call mkdir(path, 'p')
endif
endfor
set backupdir=~/.vim/backup//
set directory=~/.vim/swap//
set undodir=~/.vim/undo//
let g:airline_powerline_fonts = 1
let mapleader=","
imap jj <Esc>
nnoremap ; :
" Yank text to the OS X clipboard
noremap <leader>y "*y
noremap <leader>yy "*Y
" Preserve indentation while pasting text from the OS X clipboard
noremap <leader>p :set paste<CR>:put *<CR>:set nopaste<CR>
" Disable arrow keys
map <up> <nop>
map <down> <nop>
map <left> <nop>
map <right> <nop>
" Easy window navigation
map <C-h> <C-w>h
map <C-j> <C-w>j
map <C-k> <C-w>k
map <C-l> <C-w>l
" Clear search
nmap <silent> ,/ :nohlsearch<CR>