プログラマーにとって Vim は最高峰のコード編集ツールですが、いざ長編小説やエッセイ、数万字に及ぶ本格的な文章を書こうとすると、Vim 特有の初期挙動に阻まれて挫折してしまうことが少なくありません。

  1. 折り返し段落でカーソルが数行分ジャンプする:Vim はデフォルトで物理行(改行コード \n)単位で移動するため、画面上で何行にも折り返された長文段落で j や k を押すと、段落全体を飛び越えてしまいます。
  2. 矢印キーや Backspace が行頭・行末で止まる:行頭で Backspace を押しても前の行と連結できず、左右の矢印キーで行を跨いで移動できないため、現代的なエディタのようなスムーズなタイピングが妨げられます。
  3. 行番号やUI表示が集中力を削ぐ:画面いっぱいに並ぶ行番号やステータスライン、警告表示は、執筆の没入感を損なうノイズになりがちです。
  4. 長文の見出し・章立てナビゲーションがない:万字を超える原稿では、Scrivener や Word のような目次アウトラインがなければ、目的の章を探すだけで膨大な時間を浪費してしまいます。

これらの課題を根本から解決するため、何でも屋が長年愛用・調整してきた**「長文・小説執筆専用の極簡 Vim 設定」**を公開します。いつでも再構築できるバックアップとして、また純粋なテキスト執筆を愛するすべての書き手の参考になれば幸いです。

関連記事:


一、 完全な .vimrc 設定ファイル(即戦力バックアップ)

以下の設定コードをホームディレクトリの ~/.vimrc にコピー&ペーストしてください:

" ==============================================================================
" 中文長文與小說創作專用極簡配置
" ==============================================================================

" --- 基礎環境與編碼 ---
syntax on                       " 啟用語法高亮
filetype plugin indent on       " 啟用外掛與縮排規則偵測
set encoding=utf-8
set fileencodings=utf-8,cp950,gbk,latin1
set termencoding=utf-8
set fileformat=unix
set noswapfile                  " 減少暫存檔干擾
set autoread                    " 外部修改自動重新讀取

" --- 顯示與視覺體驗 ---
set wrap                        " 自動折行(視覺折行,不寫入硬換行符號)
set linebreak                   " 不在單詞或特定符號中間斷開
set breakindent                 " 折行後保持與前行相同的縮排層級
set showbreak=↪\                " 折行標記,清楚辨識是否為同一段落
set nolist                      " 關閉空白字元與不可見字元顯示
set number                      " 保留行號供段落定位
set cursorline                  " 凸顯當前行
set scrolloff=5                 " 上下滾動時預留 5 行緩衝

" --- 中文寫作核心:視覺行跳轉 ---
nnoremap j gj
nnoremap k gk
nnoremap $ g$
nnoremap 0 g0
nnoremap ^ g^
vnoremap j gj
vnoremap k gk

" --- 編輯與排版流暢度 ---
set smarttab
set expandtab
set shiftwidth=2
set tabstop=2
set virtualedit=block           " 允許區塊選取超出文字範圍

" 1. 解除退格鍵(Backspace/Delete)限制
set backspace=indent,eol,start

" 2. 允許方向鍵與退格鍵跨行移動
set whichwrap+=<,>,h,l,[,]

" --- 搜尋設定 ---
set ignorecase
set smartcase
set incsearch
set hlsearch
nnoremap <silent> <Esc> :nohlsearch<CR>

" --- Markdown 寫作專用行為(自動觸發) ---
augroup WritingMode
  autocmd!
  autocmd BufRead,BufNewFile *.md set filetype=markdown
  autocmd FileType markdown,text setlocal spell spelllang=en_us
  autocmd FileType markdown,text setlocal textwidth=0
  autocmd FileType markdown setlocal conceallevel=2
augroup END

" ==============================================================================
" 外掛宣告與功能連動
" ==============================================================================

call plug#begin('~/.vim/plugged')
Plug 'junegunn/goyo.vim'            " 專注模式
Plug 'junegunn/limelight.vim'       " 段落聚光燈
Plug 'preservim/vim-markdown'       " Markdown 語法與摺疊支援
Plug 'preservim/tagbar'             " 大綱側邊欄
call plug#end()

" --- Goyo 與 Limelight 連動設定 ---
autocmd! User GoyoEnter Limelight
autocmd! User GoyoLeave Limelight!
let g:limelight_default_coefficient = 0.7
let g:limelight_conceal_ctermfg = 240
let g:limelight_conceal_guifg = '#585858'

" --- vim-markdown 實用設定 ---
let g:vim_markdown_folding_disabled = 0
let g:vim_markdown_conceal = 2
let g:vim_markdown_frontmatter = 1

" --- Tagbar 支援 Markdown 標題解析 (相容 Universal Ctags 6.x) ---
let g:tagbar_ctags_bin = '/usr/local/bin/ctags'
let g:tagbar_type_markdown = {
    \ 'ctagstype' : 'markdown',
    \ 'kinds' : [
        \ 'c:chapter',
        \ 's:section',
        \ 'S:subsection',
        \ 't:subsubsection',
        \ 'T:l4subsection',
        \ 'u:l5subsection'
    \ ],
    \ 'sort' : 0
\ }

" --- 寫作快捷鍵設定 ---
nnoremap <silent> <F7> :Goyo<CR>
nnoremap <silent> <F8> :TagbarToggle<CR>

二、 設定の要点解説:なぜこの設定が文章執筆に最適なのか?

シンプルに見える設定ですが、文章執筆特有のストレスを解消するための重要な工夫が凝縮されています:

1. 執筆の生命線:表示行(Visual Line)移動へのマッピング

日本語や中国語の散文では、1つの段落が数百字に及ぶ長文になることが一般的です。

  • 標準設定の問題点:j や k を押すと「次の改行コードまで」一気に飛んでしまうため、折り返された段落内をスムーズに上下移動できません。
  • 解決策:
    nnoremap j gj
    nnoremap k gk
    nnoremap $ g$
    nnoremap 0 g0
    nnoremap ^ g^
    j と k を gj と gk に割り当てることで、画面上で実際に見えている行を基準にカーソルが移動するようになり、段落内の細やかな推敲が極めて快適になります。

2. 折り返しの美しさと段落の視認性

set wrap
set linebreak
set breakindent
set showbreak=↪\ 
  • set wrap:自動改行を挿入せず、画面上だけで折り返します。
  • set breakindent:折り返された行頭も、その段落のインデント幅をそのまま維持します。
  • set showbreak=↪\ :折り返し行の先頭に小さな矢印を表示し、「前の行と同じ段落であること」を一目で識別可能にします。

3. Backspace と矢印キーの行跨ぎ移動を許可

set backspace=indent,eol,start
set whichwrap+=<,>,h,l,[,]

Vim の初期状態では行頭で Backspace を押しても前の行と繋がりませんが、この設定によりモダンなテキストエディタと同様、スムーズに段落を統合したり前後の行を行き来したりできるようになります。

4. 自動ハード改行の無効化

autocmd FileType markdown,text setlocal textwidth=0

textwidth=0 に設定することで、文字数制限による意図しない強制改行(物理的な改行コードの挿入)を防止し、純粋な Markdown 文書を清潔に保ちます。


三、 事前準備:プラグインマネージャー「vim-plug」の導入

本設定では、動作が軽快で実績のある vim-plug を使用します。

ステップ 1:vim-plug のダウンロード

ご利用の OS のターミナルで以下のコマンドを実行してください:

  • macOS / Linux:

    curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
        https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  • Windows(PowerShell):

    iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
        ni $HOME/vimfiles/autoload/plug.vim -Force

四、 4つの厳選プラグイン解説と実践活用術

これら4つのプラグインが連携することで、ターミナル上の Vim は最高峰の執筆スタジオへと進化します。

1. Goyo.vim —— 画面のノイズを遮断するタイプライターモード

  • 基本機能:行番号、ステータスライン、タブバー、分割ウィンドウを一時的に非表示にし、エディタを画面中央に適度な幅でセンタリングします。
  • プラグイン宣言:
    Plug 'junegunn/goyo.vim'
  • 実践的な使い方:
    • <F7> キーに割り当ててあるため、ノーマルモードで <F7> を押すだけで瞬時に集中モードのオン/オフを切り替えられます。
    • 幅を調整したい場合は :Goyo 85 のように数値を指定して実行することも可能です。

2. Limelight.vim —— 執筆段落を照らし出すスポットライト

  • 基本機能:カーソルが置かれている段落だけを明るく表示し、前後の段落を淡くフェードアウト(薄暗く)させるツールです。
  • プラグイン宣言:
    Plug 'junegunn/limelight.vim'
  • Goyo との連動設定:
    autocmd! User GoyoEnter Limelight
    autocmd! User GoyoLeave Limelight!
    let g:limelight_default_coefficient = 0.7
    <F7> で Goyo を起動すると、自動的に Limelight も点灯します。0.7 の係数により前後の文脈が程よく薄まるため、現在のセンテンスに集中しながらも文脈の流れを見失いません。

3. vim-markdown —— 見出しの折りたたみと Frontmatter 対応

  • 基本機能:Markdown 文書の構造を最適化し、見出し階層ごとの折りたたみ(Folding)や YAML メタデータ(Frontmatter)の正常な解析を提供します。
  • プラグイン宣言:
    Plug 'preservim/vim-markdown'
  • ショートカットと操作:
    • 見出し折りたたみ:
      • za:カーソル位置の見出し段落を展開/折りたたみ。
      • zr:見出しを1段階ずつ展開。
      • zm:すべての見出しを一括折りたたみ。
    • Frontmatter 保護:記事先頭のメタデータ記述が崩れず、正しく認識されます。

4. Tagbar —— リアルタイム章立てアウトラインサイドバー

  • 基本機能:ファイル内の H1〜H6 見出しを自動解析し、右側に目次ツリーを表示します。
  • 必須前提ツール(Universal Ctags): Tagbar は見出し解析に ctags を使用するため、事前にインストールが必要です:
    • macOS (Homebrew):
      brew install universal-ctags
      (※ Apple Silicon Mac の場合、Homebrew のパスが /opt/homebrew/bin/ctags になることがあります。which ctags を確認し、必要に応じて .vimrc の g:tagbar_ctags_bin を変更してください)
    • Ubuntu / Debian:
      sudo apt install universal-ctags
  • プラグイン宣言:
    Plug 'preservim/tagbar'
  • 実践的な使い方:
    • <F8> を押すことでサイドバーの表示/非表示を切り替えられます。
    • アウトライン上で移動したい章を選んで Enter を押せば、メイン画面が一瞬でその章へジャンプします。

五、 初心者向けセットアップ手順(5分で完了)

環境を構築する際は、以下のステップを順番に実行してください:

  1. Universal Ctags の導入:ターミナルで brew install universal-ctags を実行。
  2. vim-plug の導入:前述の curl コマンドを実行。
  3. 設定の保存:本稿の設定コードを ~/.vimrc に保存。
  4. プラグインのインストール:
    • Vim を起動:
      vim
    • コマンドラインで実行:
      :PlugInstall
    • 完了後、:q でインストーラー画面を閉じます。
  5. 執筆の開始:
    • 任意の Markdown ファイルを開く(vim novel.md)。
    • <F7> でタイプライターモードを起動。
    • <F8> で章立てアウトラインを呼び出し、心ゆくまで執筆をお楽しみください。

おわりに:思考と文字が直結する至高の執筆体験

複雑な機能やポップアップ通知に溢れる現代のワードプロセッサと比べ、Vim の黒い画面に向き合う時間は驚くほど静寂で贅沢です。

この設定は、長年の悩みであった折り返しのぎこちなさを解消し、Goyo、Limelight、vim-markdown、Tagbar によって洗練されたタイピング空間を提供します。自分用の記録として、そしてこれから言葉を紡ぐすべてのクリエイターの力になれば幸いです。

✦ 独立した報道 · 読者サポート ✦

独自の視点と客観的な報道を、あなたの温かい支援で

表面的なトレンドやアルゴリズムに流されず、事実と深い洞察に基づいた独立した記事をお届けし続けるために。

質の高いオリジナル記事と独立した運営を続けるため、1回のみ、または毎月のご支援をGoogleの安全な決済でお願いいたします。

お支払いはGoogleにより安全に処理されます · いつでも管理・解約できます

タグVim執筆環境Markdown小説執筆生産性向上vim-plugGoyoTagbarテキストエディタ