Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

専門学校でプログラミングを勉強する学生にささげる高効率学習環境[Vim]

はじめに

さて,当方は専門学校でASCII C,Java(Tomcat含む),OracleSQL等を勉強する学生である
今回はDOS窓で完結する超ウォークスルーな開発環境を
提案したいと思う
なお今回は初学者向けという事もあり使うのはプレーンなvimであることをご了承いただきたい
またNeoVimなどと違いインストーラーを公式でダウンロードしてインストールすればまずどこの環境でも動くので導入に関しては割愛する
但しVimのインストーラーはパスを通してくれないので
そこは適宜調べて設定してもらいたい
パスを通さないとコマンドラインで素直に動かないので後述する利点が半減してしまう

私の提案する開発環境はVimです

なぜvimなのか
* ヒントが無い
* 非常に軽い
* 異常終了系に強い
* デフォルトでSJISな事
* キーボードで完結する
* ほぼすべてのまともなLinuxデストリビューションでvimやviが入っている為慣れておくとサーバ系実習でリードできる

コードヒントが無いと何故良いのか

AtomやVSCodeを使っている民は経験があるかもしれないが超便利なコードヒントが出る
VSCodeなんかはmainと打っただけで

public void main(String[] args){
    /*中略*/
}

が自動入力されたり,コンパイルを通す前何か文法的なエラーがあるとごねてくれたりする
一見便利なように見えるが
この機能があるがために(文字打って/コンパイル通してエラー出して)覚えるという貴重なタイミングを逃してしまうのだ
人間とはなんと怠惰な生物なのだろう

非常に軽い

CUIベースのソフトウェアな事,コードヒント等裏で動く物が無い為GUIソフトよりも軽く
非力なネットブックを買ってしまっても安心してコードを書ける
またそれで実習等でDatabaseサーバなんかを起動してしまった場合でも安定して動かせることがとても大きい

異常終了系に強い

デフォルトのvimはswpファイルを自動的に生成するため万が一強制終了してしまってもRキーで復帰できることが多い
復帰できていることを確認したら
:wqコマンドで保存し,もう一度開いてDキーでswpファイルを消してしまおう
但しswpファイルなどはデフォルトで編集中のファイルと同じディレクトリで生成されてしまうため
ソースコードを置いているディレクトリやコンフィグが置いてあるディレクトリなどが雑然としてしまう難点が存在するが
設定ファイルを変更してバックアップファイルを生成するディレクトリを変更することをお勧めする

デフォルトでSJISな事

ここで???となった方も納得された方の二パターンに分かれたと思うが
javacやbccなどのコンパイラのデフォルトはShift-JISな為
AtomやVSCodeなどのグローバルなエディタではUTF-8なエディタだと
高確率で不可解かつ学習の面で見ても無意味なバグが発生する
無意味というのは少々言いすぎな感じも否めないが
文字エンコードに関して勉強するとき以外はこのエラーとは無縁でありたい
なおJavacでは-encodingオプションを用いればエンコードが指定できるが抜本的とは言えないし
Web系などを勉強するときを除いてUTF-8をデフォルトで使う言語コンパイラも少ないこと
本校ではWebはサクラエディタ,それ以外はTeraPadを推奨されている事情を鑑みても
WebとWeb以外のプログラミングではエディタを分けることを推奨したい(因みに私はNeoVimをWeb系用に用いている)

キーボードですべて解決すること

コマンドラインエディタの為当然CUIである
むしろここが慣れないという事で敬遠されがちだが
数個の基本操作とモード切替を覚えるだけで一応Vimを使えるようになったと
周りのクラスメイトに自慢できる
そればかりか
(メモ帳等を開く)→ (コーディングして保存)→ マウスを動かしてDOS窓を立ち上げて javac 某.java なんてやらずとも
(DOS窓を開く)vim 某.java → (コーディングして保存)→ javac 某.java で1手数の削減になる
高速なプログラムを作るにはデカい箇所で高速化するよりもループの中を一ミリ秒でも高速化した方が早いように
1手数を削減してより多くのコードやコーディングスタイルを学び,デバッグを進め
制作活動を高速化しよう!

おまけ

コマンドモード(vimを起動した直後のモード)
:w 保存
:w! 強制的に保存(vimrcを壊したときぐらいしか使い道が無い気がする)
:wq 保存して終了
:q 終了
:q! 保存せずに終了(:!qはダメ)
/検索したい文字列 検索
:%s/置換前/置換後/ 置き換え
:%s/置換前/置換後/g 全て置き換え
y コピー(vimではヤンクという)
そしてy その行をコピー
もしくは上下キー その行と上下の行をコピー
d 切りとり
そしてd その行を切りとり(ddは行削除にも使えるぞ!)
もしくは上下キー その行と上下の行を切りとり
p ペースト(貼りつけ)

編集モード(左下に編集と表示されてる時のモード)
Escキー コマンドモードに戻る

最後に

ここではVimの基本的な使い方とVim等のコマンドラインエディタがいかに効率的な物であるかという事を書いたつもりだが
どうだっただろうか
コードの書ける優秀な初心者も描けない駆け出し初心者も操作手数を減らせば確実に早くなれるので
VimやEmacsを頑張って使って幸せになってもらいたい

(突っ込まれそうなので追記)
なおGUIのエディタを使うなという話ではなく
GUIなエディタでも優秀なモノは多々あるし
自由に大きな範囲のコピペなどが出来るという利点は大きい
コードヒントも制作作業何かでは重宝するしあっても良い局面がある
一つだけ言えることは
新しく見たクラスやメソッドはきちんとリファレンスを引こうという事だけで
闇雲にコードヒントやコード補完に頼るのも良くないしVimとかを使うと手数が減るしサーバ系触るなら
絶対使えた方が良いのでVimって言うお話です

yakisizimi
へっぽこ学生C++・Javaプログラマ
http://yak.moe
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away