Vimが少しだけリッチになりましたね(なお、筆者の.vimrcをそのままコピーした方はこれ以降の章の.vimrcへの追記の項目はスキップして大丈夫です)ちなみに筆者の最新の.vimrcはこちらです。VimとEmacsのキーバインドと仲良くなろうVimの独特なキーバインドは慣れるまでは苦行のように感じるかもしれません。Vimに登場するモードという概念が他のエディターから移ってきた人を混乱させます。一度慣れてしまえばその強力なキーバインドに病みつきになってしまうでしょう。Vimのキーバインドを使いこなすためには練習あるのみです。筆者の場合は1週間Vim以外のエディターを使わないという縛りを課すことでVimに対する気持ち悪さを消すことができました。)この章の続きを読むはじめてVimの操作を学ぶにはチュートリアルが最適です。vimtutorコマンドを実行すると以下の画面が立ち上がり、Vimの操作方法を順序よく学ぶことができます。enとコマンドを実行すると言語を切り替えることができます(できました)。この章のタイトルは「VimとEmacsのキーバインドと仲良くなろう」でした。Emacs???と疑問に思われた方もいるのではないでしょうか。実はMacOSはデフォルトでEmacsライクなキーバインドが使えます。documentのファイルの中でEmacsキーバインドを使ってカーソルを移動させると上手く動作することが確認できます。覚えると便利なEmacsカーソル操作のキーバインドは以下です。$一見するとキーが散らばっていて難しく感じますが、単語の意味を考えると覚えやすいと思います。<C-r>=<SID>kill()<CR>コメントアウトの通りですが、上記の設定を追加するとInsertモードでEmacsキーバインドを利用したカーソル移動が可能になります。地味ですが、Normalモードに戻らずカーソルを操作できるのは便利です。dein.vimでプラグインを管理しよう幸せなことにインターネットの世界では私たちのVimを強化するプラグインを公開してくれている方々がいます。その恩恵を最大限に受けるためにもプラグインマネージャを使ってプラグインを効率的に管理しましょう。この章ではdein.vimの基本的な使い方を解説します。dein.vimを使ってプラグイン管理をはじめてみましょう。startに記載されている通りの手順を踏めばdein.vimの導入は簡単です。ここでは一歩踏み込んだ設定としてプラグインの設定をtomlファイルとして切り出す方法を紹介します。この章の続きを読むまずは以下のコマンドを実行してdein.vimをインストールしましょう。2つ目のコマンドではdein本体をインストールするディレクトリを自由に指定することができます。~/.local/share/deinなど他のディレクトリを指定することもできます。他のディレクトリを指定した場合はこれ以降の~/.vim/bundlesを自分の指定ディレクトリに合わせて変更してください。~/.vim/bundles次に、.vimrcに以下の設定を追加しましょう。------------------------------------------------------------ここでは.dein配下のdein.tomlとdein-lazy.tomlという2つのtomlファイルを読み込む設定をしています。したがって、.deinディレクトリをdotfiles直下に作り、ホームディレクトリ直下にシンボリックリンクを作成しておくと良さそうです。dein-lazy.tomlシンボリックリンクはファイルだけでなく、ディレクトリでも作成することが可能です。これによりdein-lazy.tomlには遅延読み込みが適用されます。プラグインをたくさん追加するとVimの起動は遅くなりがちですが、起動時に必要のないプラグインはdein-lazy.tomlで遅延読み込みさせることでこの問題を解決することができますまたプラグインごとの設定をhookで管理できるため.vimrcを散らかすことがなくなります。hookについてはこちらの記事が参考になります。便利な使い方tomlファイルは基本的に以下のように記述します。おすすめのプラグインを紹介しますこの章では開発効率をUPさせるVimのおすすめプラグインを幾つかピックアップして紹介します。プラグインを使用する上で必要なパッケージやツールのインストール方法と筆者のtomlファイルでの設定をまとめています。dein.tomlに設定を追記する。30<CR>'''筆者の設定では<C-a>でディレクトリツリーを表示、:qでディレクトリツリーを閉じます。NERDTreeにはメニューモード(ディレクトリツリー上でmを押す)で、子要素の追加や削除、リネームを簡単に行う機能があります。▽NERDTreeの操作方法についてはこちらの記事が参考になります。.でカレントディレクトリのファイル一覧を表示できます。fontsをインストールする。dein.tomlに設定を追記する。.vimrcに以下の設定を追記する。:bd<CR>vim-airlineには様々なテーマが用意されています。'onedark'を書き換えて好みテーマを指定しましょう。筆者の設定ではバッファタブを有効にしており、,を押すと次にタブ、.を押すと前のタブに移動することができます。不要になったタブはbdで削除できます。Vimにはデフォルトのタブ機能がありますが、筆者はvim-airlineのバッファタブを利用しているため使用していません。混乱を避けるためにデフォルトのタブ機能を使うかvim-airlineのバッファタブを使うか、どちらかを選んで利用するのが良いでしょう。dein.tomlに設定を追記する。ctermbg=240'''Vimのインデント可視化系のプラグインといえばvim-indent-guidesかindentLineがよく使われています。筆者はvim-indent-guideを落ち着いたカラーで利用するのが好きです。dein.tomlに設定を追記する。ctermfg=yellow'''行番号横に表示されるsignのおかげでどこを編集したのかすぐに確認することができます。利用したい言語のLinterをインストールし、設定ファイルなどの用意を済ませておく。dein.tomlに設定を追記する。dein.tomlに設定を追記する。/)を押すと選択した範囲をコメントアウトします。キーでコメントアウトしていた名残です。dein.tomlに設定を追記する。1'''対応する括弧が色付けされて視認性が上がります。dein-lazy.tomlに設定を追記する。https://github.com/ryanoasis/vim-deviconsvimの中でアイコンを表示してくれるプラグインです。dein.tomlに設定を追記する。ターミナルとフォントの設定についてはスクラップボックスに書いたのでこちらをご覧ください。操作に慣れるとVimでの開発効率は格段にUPします。この章では画面分割をビシバシっ!と決めれられるよう、便利なプラグインとキーバインドの設定を行います。この章の続きを読むデフォルトのVimではコマンドモードで:spや:vsといったコマンドを実行することで画面分割ができます。毎回コマンドを実行するのはすこし面倒なので、画面分割を簡単にするキーバインドを設定しましょう。:<C-u>vs<CR><C-w>l上記のキーバインドはPrefixとしてsキーを使用します。垂直方向へ画面を分割したい時はまずsを押してvを押します。水平方向へ画面を分割したい時はまずsを押してsを押します。画面分割については以下の記事が参考になります。画面の分割と移動が簡単にできるようになったので、次は画面サイズの変更も簡単に行いたくなってきました。そこで画面サイズの変更を簡単に行えるプラグインを導入します。dein.tomlに設定を追記する。'simeji/winresizer'simeji/winresizerの使い方は以下のようになります。lで画面サイズを自由に変更する。エンターキーで画面サイズを確定させる。簡単ですねこの章では画面の分割と移動、サイズの変更を簡単に行うための設定を紹介しました。tmuxは次章で紹介するtigと合わせて使うと便利です)強いエディター代表のVSCodeにはcommand+jで簡単にターミナルを起動できる機能があります。VSCodeは最強のエディターなのでしょうか?(心の声<はい、そうです。))いえ、必ずしもそうとは言えません。Vimでも同じようなことができますこの章の続きを読むVimを使い始めたころ、VSCodeが恋しくて仕方ありませんでした。ターミナル機能をVimで実現するにはどうすれば良いのかと悩んでいました。Vimをカスタマイズするのではなく、実行環境であるターミナルを使いやすくすれば良いのだ!と。tmuxで複数のターミナルを操作しようtmuxを使えば1つのウィンドウ(tmuxセッション)の中で複数のターミナル(独立した疑似端末/ペイン)を起動することができます。簡単に言えば「今まで別々のタブやウィンドウで起動していたターミナルを一つにまとめられるぞっ!」ということです。tmuxをインストールする。設定ファイル.tmux.confをdotfiles直下に用意し、ホームディクトリにシンボリックリンクを作成する。~/.tmux.conf.tmux.confに設定を記述する。こだわりがなければ以下の設定をコピペしてください。canceltmux起動のエイリアスを.zshrcに設定しておく。tmuxtmuxの使い方は簡単です。ターミナルでtmux(エイリアスを使う場合はt)とコマンドを入力しましょう。すると以下のように新規のtmuxセッションが作成されます。s)を使用しています。tmuxでは一つの画面のことをペインと呼びますが、新たなペインを立ち上げる場合は以下のように操作します。lキーで行うことができます。この操作は1つの前の章で紹介したVim内の画面分割と似ていますね!tmuxの画面分割はPrefixが<C-s>、Vim内での画面分割はPrefixがsで、コントロールキーを押すかどうかの違いだけですそして分割したペインはexitすることで閉じることができます。次に、ペインのサイズを変更してみましょう。Lキーで行うことができます。ペインの移動にshiftキーを加えただけです。Vim内での画面サイズ変更とは少し違いますが、使っていくうちにすぐに慣れるので大丈夫ですここまででtmuxでのペイン操作がスムーズにできるようになりましたこれからはtmuxセッションの中でVimを使った開発を行い、ターミナル操作をしたくなれば新たなペインを立ち上げ簡単にコマンドを実行できます。VSCodeのターミナル機能が恋しくなることはありません※ちなみに別ペインで操作した変更をVimで読み込む場合は:e!コマンド(再読み込み)で対応できます。tmuxについての余談Vim8からは:termでVimターミナルモードが使えるようになりました。筆者も素早くシェルを叩きたいときはたまにVimのターミナルモードを利用しています。tigを使ってターミナルからGitを高速で操作しようVimを使い始めてすぐに恋しくなったVSCodeの機能がありました。それはGitの差分をグラフィカルなUIで確認でき、直感的操作でステージングやコミットできる機能です。同じような操作性をVimに求めるのは難しいのでしょうか?実はtigを使ってターミナル環境を整えれば全て解決します。VSCodeよりも高速にGitの操作が可能です。この章の続きを読むtmuxの章でも書いたようにVimをカスタマイズするのではなく、実行環境であるターミナルを使いやすくすることが重要です。tigを導入してGitを操ろうtigはターミナル上でGitの差分をカラフルに表示したり、操作することができるツールです。tigをインストールする。設定ファイル.tigrcをdotfiles直下に用意し、ホームディクトリにシンボリックリンクを作成する。~/.tigrc.tigrcに設定を記述する。こだわりがなければ以下の設定をコピペしてください。boldtigはターミナル上でtigコマンドを実行することで起動します。tigにはいくつかのviewがあり、起動したあとに以下のキーでviewを切り替えることができます。viewでのコミットからリモートへのpushまでの操作を簡単に説明します。viewが表示されます。statusした時と同じような表示で違和感ないと思います。uでステージとアンステージを行うファイルをまるごとステージング、アンステージする場合はカーソルをファイルに合わせてuを押します。ファイル内のhunk(変更単位)ごとにステージング、アンステージする場合はファイルをエンターキーで選択し、hunk単位でuを押します。1行ずつステージ、アンステージする場合は1を押します。commit画面になりステージした内容をコミットできます。Pでリモートリポジトリへpushする最後に大文字のPで現在のブランチのコミットをリモートリポジトリへpushします。tigの終了はqです。tigはとても便利なツールですね具体的な使い方として前の章で紹介したtmuxと合わせ技をよく使います。Vimで作業中、理解できるでしょう。