Untitled
unknown
plain_text
22 days ago
3.5 kB
7
Indexable
" ============================ " Vim Configuration for Writing " ============================ " ---------------------------- " Leader Key " ---------------------------- " Set leader key to space for easy access let mapleader = " " " ---------------------------- " Plugin Manager (vim-plug) " ---------------------------- call plug#begin('~/.vim/plugged') " Distraction-free writing Plug 'junegunn/goyo.vim' " Zen mode: centers text, hides UI Plug 'junegunn/limelight.vim' " Focus: dims everything except current paragraph Plug 'reedes/vim-pencil' " Smart prose editing: wrapping, reflow, cursor movement " Statusline Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' " File explorer Plug 'preservim/nerdtree' call plug#end() " ---------------------------- " Airline: Word Count in Statusline " ---------------------------- let g:airline#extensions#wordcount#enabled = 1 let g:airline#extensions#wordcount#filetypes = '\vnotes|help|markdown|rst|org|text|asciidoc|tex|mail' " ---------------------------- " Writer Mode Settings (Markdown/Prose) " ---------------------------- augroup writer_settings autocmd! " Apply writer-friendly setup to prose filetypes autocmd FileType markdown,text,asciidoc,org,tex call s:setup_writer() augroup END function! s:setup_writer() abort " Enable spell check setlocal spell spelllang=en_us " Color column at 80 chars as reference setlocal colorcolumn=80 " Vim-pencil settings let g:pencil#wrapMode = 'soft' " soft wrap (no hard newlines) let g:pencil#cursorMove = 'screen' " j/k move by screen lines setlocal textwidth=80 " max width for reflow (gq) " Limelight defaults let g:limelight_paragraph_mode = 0 " 0 = sentence mode, 1 = paragraph mode endfunction " ---------------------------- " Goyo Auto-Center " ---------------------------- augroup center_cursor autocmd! " Center the cursor line when entering/exiting Goyo autocmd User GoyoEnter normal! zz autocmd User GoyoLeave normal! zz augroup END " ---------------------------- " Convenience Mappings " ---------------------------- " <leader>w → Toggle Goyo + Limelight + spellcheck nnoremap <leader>w :<C-u>call ToggleWriterMode()<CR> function! ToggleWriterMode() abort if exists(':Goyo') && !exists('g:goyo_active') Goyo let g:goyo_active = 1 Limelight if &filetype =~# 'markdown\|text\|asciidoc\|org\|tex' setlocal spell spelllang=en_us endif else Goyo! Limelight! unlet g:goyo_active endif endfunction " <leader>r → Toggle vim-pencil wrap mode (soft/hard) nnoremap <leader>r :<C-u>call ToggleWrapMode()<CR> function! ToggleWrapMode() abort if get(g:, 'pencil#wrapMode', 'soft') ==# 'soft' let g:pencil#wrapMode = 'hard' echo "Pencil wrap mode: HARD" else let g:pencil#wrapMode = 'soft' echo "Pencil wrap mode: SOFT" endif endfunction " <leader>n → Toggle NERDTree nnoremap <leader>n :NERDTreeToggle<CR> " ---------------------------- " Optional Manuscript Ruler (72 chars) " ---------------------------- highlight ColorColumn ctermbg=235 guibg=#2E2E2E set colorcolumn=72 " ---------------------------- " Spellcheck Toggle " ---------------------------- " Press <leader>s (space + s) to toggle spellcheck on/off " Works only in the current buffer nnoremap <leader>s :setlocal spell!<CR> " Optional: display ON/OFF message when toggling " nnoremap <leader>s :setlocal spell!<CR>:echo "Spellcheck: " . (&spell ? "ON" : "OFF")<CR>
Editor is loading...
Leave a Comment