web小説礼賛記

さらなる俺 TUEE をあなたに!

Vim入門 #2: リソース/拡張の基本

 大幅な改稿を予定

 先にキーリピートを最速にしておくのがオススメです(OSの設定)。追記予定。

 Spacemacsのことは考慮しません。

入門法

$ vimtutor$ vimtutor jp

「20~30分で終わる」チュートリアルです。

mobaは途中で止めてしまいました

:helpVimの中で)

 キー操作や用語解説などが見られます。

チートシート

 を印刷したり、自作するのが効率的だと思います。

Vim入門 #3

 執筆中です。操作法のリファレンスになる予定です。

本(紙媒体)

 買っておくと、時間的に得をします。

実践Vim 思考のスピードで編集しよう!

 一通り操作に慣れたら、この本によって更なる改善を見込めます。入門者が読むにはハードルが高いと思います。

 序章でリピートキー.;n@を導入し、次章からvimゴルフが始まります。

読み物(web)

 一応リンクを貼りましたが、Vimをプログラミングに使わないなら、必要な知識はぐっと減ります。キー操作を覚えるだけでも十分かもしれません。特にGVimを使うなら、タブ関連の操作すら、ブラウザと同じにできます。

Vim のすゝめ - SOUM/misc

 サクッと読めます。良文でした。

Vim-Galore : Vimについて知っておくべき全てのこと (1~5)

 翻訳記事です。視野を広げるのにいいかもしれません。URLの番号を1~5に変えることで、シリーズの他の記事に移動できます。

Vimの生産性を高める12の方法

 翻訳記事です。良いキーマップの例が少しだけ載っています。

.vimrcの設定

 執筆中です。ページを分ける?

.vimrcの役割

 Vimの起動時に実行されるコマンド(run commands)の集まりです。Vim Scriptで記述されます。

Exコマンド:command

 Vimの中で: commandとして実行されるものです。Vim Scriptは、先頭の:を省略したコマンドの集まりと言えます。

 歴史的には、Vimよりも前に、Exというエディタがありました。

.vimrcの位置

~/.vimrc

~/.vim/.vimrc

ファイル分け
GitHubとの連携

Vim Script の基本

 %は現ファイル。

基本的な設定

 やはり記事を分ける?

日本語入力のための設定

文字数カウントを常駐表示(ステータスライン)

 試していないのでアレですが、set statusline='%{wordcount().chars}'で表示できると思います。

 g<C-g>:! wc -m %からも確認できます。キーマッピングを作っても良いでしょう。

 プラグインの項では、airlineというリッチなステータスラインに常駐表示させています。

normalモードに戻った時の全角/半角の扱い

強制的に半角
他のモードでは全角/半角状態を維持

テキストブロックを設定

スクロールなど

タイプライタースクロール(自動半画面スクロール)
フォーカスモード(現段落以外を暗くする)
余白行
検索結果を画面中央に表示(上端ではなく)

 wikiを参照。

不可視記号の可視化

半角記号
全角スペース

マッピング(キーバインディング

設定の確認

  :mapで一覧が出ます。:help ^aでCTRL-aの操作が出ます。

 既存のマッピングと被ると、意図しない動作が発生するので気をつけます。

設定法

 詳しい話は:help map-overviewから。

キーの表記

 同時押しは山括弧<>で表現します。例: Ctrl+Shift+aは<C-S-a>

Leader

 キーマッピングに使用できる変数です。デフォルトでは\になっていますが、mobaはSpaceキーにしています。

let mapleader=' '
" 以後のマッピングで、<Leader>はスペースキーを表す

 キーマッピングを変えたくなったとき、Leaderの値を変えれば、操作がまとまって変わるというわけです。普通にSpaceキー(<Space>)を使ったマッピング書いても構いません。

nnoremap (LHS) (RHS)

 一連のキーストローク (LHS) を別のキーストローク (RHS) に翻訳してくれます。

LHS: left hand side; 左辺 RHS: right hand side; 右辺

 xmapのxは、どのモードで働くかを表します(x = n: normal, v: visual, ..)。mapは一度マッピングしたら修理しますが、noremapはマッピングの入れ個を許します。

設定例

 .vimrcに以下のように書いています。何かのプラグインと衝突すると思うので、自分で設定した方がいいです。

 ハイライトの切り替えは、この回答をコピーしました。

" ############### MAPPING ###############
let mapleader=' '

" .vimrcの編集用
nnoremap <leader>v :tabnew ~/.vimrc<CR>
nnoremap <leader>s :source ~/.vimrc<CR>

" ハイライトの切り替え
:nnoremap <silent><expr> <Leader>h (&hls && v:hlsearch ? ':nohls' : ':set hls')."\n"

" プラグインの設定
let g:NERDTreeWinPos = 'right' " エクスプローラを右側に表示(お好みで)

" プラグインの呼び出し
" vnoremapだとNeovimでは動かない(なぜ? 要改稿)
vmap v <Plug>(expand_region_expand)
vmap <C-v> <Plug>(expand_region_shrink)
nnoremap <leader>t :NERDTreeToggle<CR>
nnoremap <leader>g :Goyo<CR>

nnoremap <leader>w f。
nnoremap <leader>b F。
nnoremap <leader><C-w> f、
nnoremap <leader><C-b> F、

 句読点へのジャンプには、マシなマッピング法があるはずです。要改稿。

normalモードに戻ったら半角入力にする

 調査中です。もしくは全角入力でも操作できるようにする?

プラグイン

 ユーザが書いた拡張を導入します。

マネジャ

 プラグイン管理を便利にしてくれる拡張を使います。種類は色々ありますが、多過ぎるので一つに絞って紹介します。

vim-plug

 最も簡単なプラグインマネジャです。リンク先の指示に従ってダウンロード後、.vimrcにcallコマンドを書きます。

" ############### Plugin #################
call plug#begin('~/.vim/plugged') " vim-plug
" ここでプラグインをインストールする。書式は、
" Plug 'GitHub-user-account/repository-name'
call plug#end

 Vimの中で :PlugInstall とすれば、Plug宣言したプラグインのインストールが始まります。(必要ならば、その前に:source ~/.vimrcを忘れずに)

おすすめプラグイン

call plug#begin('~/.vim/plugged') " vim-plug
Plug 'scrooloose/nerdtree'
Plug 'junegunn/goyo.vim'
Plug 'terryma/vim-expand-region'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
call plug#end

NERDTree

 擬似エクスプローラです。画面分割したウィンドウで開かれます。ウィンドウの切り替えは、主に<C-w>w

" NERDTree(詳しくは:help NERDTree)
let g:NERDTreeWinPos = 'right'
let g:NERDTreeNaturalSort=1
"let g:NERDTreeWinSize=30
" let g:NERDTreeShowLineNumbers=1

Goyo

 執筆モードを生み出すプラグインです。主に、ウィンドウに余白を作ります。

 現在のウィンドウをフル画面表示するコマンドだと思えば、NERDTreeの閲覧にも有用です。

行あたり文字数を設定する

 調査中です。

ウィンドウのリサイズに対応する

 調査中です。ショートカット?

行数やステータスラインを表示する

 調査中です。

expand-region

 visualモードの選択範囲を、段階的に増やすか減らす操作を追加してくれます。

全角括弧()や句点。を範囲に入れる方法

 調査中です。

airline

 ステータスバーとタブバーを、機能的かつ美しくするプラグインです。マニュアルはこちら、もしくはダウンロード後に:help airline。helpを読むのに、早速goyaプラグインが役立つかもしれません。

改稿