generalistからspecialistへ

一点集中化計画

viコマンド & 1人レトロ

昨日のvim学習gameはおもしろかった。 ああいうの作る人ってほんとセンスありますね、、、

image.png

わたしはもっぱらゲームはプレイする方です。

以前darksoul3にはまって抜け出せなくなったので、最終奥義「PS4本体を売る」で、緊急脱出した経験があります。

メルカリで2万で売れました。

viコマンド学習

qiitaを参考にする

  • bで戻るが、geでも戻れる。eとgeの連打で行ったり戻ったり!

  • z + enterで現在カーソル位置を画面基準値にできる!

  • control + f / b / e / yで画面を上下に行ったり来たり。

  • %でカッコ、閉じカッコ({}, [], ())へ一気に移動!
    • という事は、rubyとかプログラム自体はviで書くということ? 通はすごい、、
    • 応用すると、ggVGで全選択
  • ciwcwでもいい。1単語を削除してinsertモードに
  • I / Aで行の先頭 / 末尾からinsert
    • S / Cで1行削除後、現在地から末尾まで削除後にinsert
  • o / Oで現在地の上、下に行を追加してinsert
  • f + 任意の文字でその行の指定した文字へ移動
  • J / gJで行の連結(visualモードで複数選択後)(スペースで区切り入れる / 入れないで連結)
  • control + vで矩形選択
  • >> / <<でインデント!
  • r / Rでinsertモードに入らずにrewrite.
    • 日本語では効かない??
  • u / Uで大文字小文字化。~で反転。
  • control + P / Nで単語補完

特殊

  • 数字インクリメントcontrol + a / xで増やしたり減らしたり
  • control + w s / w vでwindow分割
    • control + w wでwindow移動
    • :qでwindow閉じる
  • z fで折りたたみ(vで選択後)
    • spaceで戻す

カーソル位置

  • control + o / iで、以前、後のカーソル位置へ移動

検索

  • /で検索
    • 検索後* / #で、次 / 後の該当箇所へ
      • いきなり* / #で、現在カーソル上にある単語で次 / 後検索。連打でどんどん移動
      • このときg* / g#とすると、部分一致で検索できる(userならuser_nameも当てられる)
    • AAA\|aaaなら、AAAまたはaaa
    • ^\dで数字から始まる単語検索
    • ne\+dでneedヒット
      • v\ne+dでもneed当てられる。頭に\v付ければ該当箇所に\いらず。\vgo+gleとか。

置換

  • :s/old/new/gで、その行全てを置換
    • :%s/old/new/gで、そのファイル全体。gcなら確認を取りながら置換
    • :100,200s/old/new/gで、100~200行目を置換対象にする

viは合わせ技が得意

  • ywで1単語コピー(pで貼り付け)
  • gg/Gでファイルの一番上、下に移動だから、ggvGで全選択 みたいな。

検索設定周り

  • 検索してたら必要になった。:set number / nonumberで表示、非表示
    • 数字 + Gでその行へ移動
  • :set icで大文字小文字無視検索(ignore case)。戻すのはnoic
    • 単純に毎回検索時に/ignore\cでも同じ事
  • :set hls isで、全検索ワードハイライト(hign light search)
    • 解除は:nohlsearch

コマンド

  • :!lsなどで、viを起動しながらコマンド打てる
  • :e + control deで始まるコマンド候補を紹介してくれる

保存

  • :w ファイル名で、現在ファイルを別名で保存
  • vで選択後、:押して、w ファイル名で、選択部分をファイル保存できる
    • :r ファイル名(TEST)で、現在のファイルに外部ファイル(TEST)のテキストを読み込む

vimtutor

  • 一通り読んだあと、macvimtutorの続きをやる。最後まで完了。

vimプラグインをいじる

https://qiita.com/jnchito/items/5141b3b01bced9f7f48f#2-6

  • vimrcファイル => run commandの略らしい
  • vimプラグイン管理ツール NeoBundle をinstall

    • NeoBundleに出てくるshコマンドってなんだ。。ここを参考に読み解く。
      • curl でファイル落としてきて、そのファイルをshで実行するわけだな。
      • と、ここまでして、まず一番最初に簡単なvimプラグインを入れる事を体験すべきと思いなおす。フォルダをツリー構造で表示するvimプラグインを入れてみよう。
      • 伊藤さんのvim プラグイン設定解説にはPlug 'scrooloose/nerdtree'って書いてあるから、そう書いたらPlugって何?Pluginじゃない?ってエラー出る。
    • 違いは何だろうと調べると、プラグインマネージャというのがあって、Pluginって書き方はVundle.vimで、Plugって書き方はvim-plugというマネージャらしい。今回はVundle.vimなのでPluginで書く。
    • .vimrcに書いて、vim +PluginInstall +qallで適用。

    • お、いけた。

      • image.png
  • ここで、neobundlevim plugって どっちがいいんだろう?と疑問が湧く。調べてみると、vim plugの方がかなりスターが多かったので、これを使うことにする。

    • vim plug install方法を参考にvim plugを入れた。
    • :PlugInstallでinstall
    • :PlugStatusプラグインの状態の確認
    • :PlugDiffで前回からのアップデートとの変更点を表示
    • vim plugは記述が少ないのが、個人的にイケてるおもた。

vimrcをgitで管理

  • シンボリックリンク設定 を参考に、gitでのvimrc管理を学習。
    • mvコマンドってmoveだけじゃなかった。。renameの意味もあるらしい。mv ~/.vimrc ~/dotfiles/_vimrc
    • lnコマンドシンボリックリンク設定か。なるほど。ln -s ~/dotfiles/_vimrc ~/.vimrcこれってファイルの実体はどこにあるのかな?~/.vimrcにアクセス来たら~/dotfiles/_vimrcにファイルの実体あるからそっち行ってね、って飛ばしてくれる感じかな。
  • おお、リンクができたぞ。vimプラグインもちゃんと起動した! image.png

Rails向けのvim プラグイン

UNIXLinux について知る

、、、

今日はここまで、明日は続きを。 というか、この「UNIXLinux について知る」の回、めちゃ長い気がする、、 本だけでも400ページあるがな、、 2~3週間を目処にじっくりやろう

というかこのプラクティスの課題で上がってる、「新しいLinuxの教科書 」 「なか見!」で400ページほぼ全部読めますね。

image.png


編集後記:

podcastrebuildっていうエンジニアの好きな番組があるんですけど、 その中のひろしまさんっていうぼやき担当(個人的に好き)の人がいて、この人が

「作りたいのがないのにプログラミングやりたいとか意味わからない」 って発言してたんですよね。

このフレーズ、ずーっと今までいろんなとこで聞いてきたんですけど、 自分は特に作りたいのないんですよね、、

いや、厳密にいうとあるんですけど、作ろうと思って調べると、すでに世の中にあるんですよ。

「ああ、もうあるのか」ってわかると、途端に作る気がなくなるんですよ、、 そういう人いません?

こういう時、なんとかオリジナル感出そうとしていろいろ考えるんですけど、 作るコスト考えたら、既存のサービス使ったらすぐに目的達成できるやんって思っちゃうんすよ。。

こないだも、会社のサーバーが攻撃食らったって話を聞いたから 「サーバー攻撃がいまどこで起こってるか知れるみたいなサービスがあったらおもろいな。なんなら世界中で!」

なんて思いついて、こういう場合、作るにはなにが必要なのかな〜、 そういう情報発信してるサイトがあって、apiとか提供してないかな〜

なんてワクワクするんですけど、ネットを探すと

すでにあるんすよ。しかも予想をはるかに上回る質で、すでに。

これトラウマで、毎回「何か作ってみたい」って調べると、ほぼ全てすでにあります。

作りたいって感情よりも、「すでにあるなら、それを使えばええがな」「その方が時短やがな」って考えるのは、生粋のエンジニアにはなれないのではないか、、

「特に作りたいのがない」のは、エンジニアになる資格がないのではないか、、

私はずっと悩んでおります。

今日これで悩んで半日おわった(:3 」∠)

追記: 会社が「こういう仕組み欲しい!」って言ってきた時は一気にテンション上がってやる気になります。 問題解決が第一なんですよね。その一点にフォーカスしてます。 ただ、目的を達成するのが目的で、作る過程を楽しむとかじゃないです。達成できたら楽しく思えますけど。

だけど、一緒に仕事してたプログラマの先輩は全く逆でした。過程が楽しくて、結果はあまり気にしてませんでした。

わたし個人としては、この先輩の方がエンジニアに向いてる気がしてならないのです

、、、

なんて、今まで何度も考えてきた事を、ひろしまさんの発言聞いて思い出しました。

もう気持ちの整理はついてるんですけどね(:3 」∠)