summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vimrc34
1 files changed, 34 insertions, 0 deletions
diff --git a/vimrc b/vimrc
index 9427356..cc42079 100644
--- a/vimrc
+++ b/vimrc
@@ -34,3 +34,37 @@ noremap <down> gj
" toggle nerdtree with ctrl-o
map <C-o> :NERDTreeToggle<CR>
+
+" Toggle word-wrap mode
+" This will also fix movement keys so they move by visual
+" lines instead of physical lines in word-wrap mode.
+" See https://vim.fandom.com/wiki/Move_cursor_by_display_lines_when_wrapping
+noremap <silent> <leader>w :call ToggleWrap()<CR>
+function ToggleWrap()
+ if &wrap
+ echo "Wrap OFF"
+ setlocal nowrap
+ set virtualedit=all
+ silent! nunmap <buffer> <Up>
+ silent! nunmap <buffer> <Down>
+ silent! nunmap <buffer> <Home>
+ silent! nunmap <buffer> <End>
+ silent! iunmap <buffer> <Up>
+ silent! iunmap <buffer> <Down>
+ silent! iunmap <buffer> <Home>
+ silent! iunmap <buffer> <End>
+ else
+ echo "Wrap ON"
+ setlocal wrap linebreak nolist
+ set virtualedit=
+ setlocal display+=lastline
+ noremap <buffer> <silent> <Up> gk
+ noremap <buffer> <silent> <Down> gj
+ noremap <buffer> <silent> <Home> g<Home>
+ noremap <buffer> <silent> <End> g<End>
+ inoremap <buffer> <silent> <Up> <C-o>gk
+ inoremap <buffer> <silent> <Down> <C-o>gj
+ inoremap <buffer> <silent> <Home> <C-o>g<Home>
+ inoremap <buffer> <silent> <End> <C-o>g<End>
+ endif
+endfunction