emacsからvimに乗り換える3

grep

windowsとの併用を考えてagはやめ。

遅いかもしれないけど気にせずvim(vimgrep)にする。

:vim パターン 対象のファイル|cw

でquickfix起動。

まとめて修正したい時は

:qfreplace

して

:w

これでいいや。

qiita.com

 


emacsからvimに乗り換える2

ウインドウ分割

:split

:vsplit

しかし。。。

emacsと同じ使い心地を求めているようで、これでいいのか、と悩む。

そもそもvimってemacsみたいにパカパカとバッファを開いて使うものなのだろうか?

まあいいや。

間違ってるならそのうち気がつくだろう。

 

ウインドウの分割解除

:only

四文字打つのはめんどいなあ。

なにかにマップしようかしら。

 

ウインドウの移動

<C-w>wなのか。

<C-w>hjkl

でも移動できる、と。

バッファまわり

バッファリスト表示して、表示中のリストからバッファを選択したい。

探す。。。

unite.vimがよさげ。

blog.ruedap.com

 

 ここの設定をマルっとぱくる。

 

矩形選択

<C-v>で矩形選択モード

 

 

emacsからvimに乗り換える

少しvimを触ってみる。

escは遠い。

インサートモードでのjjをescに割り当てる。

qiita.com

 

モードとIMEのOn、Off状況を覚えてられない。

im_control.vim - <C-^>でIM切替が行える場合 - fudist

 

あと、jjをescにするとIME Onの時にjjして「っj」とかなって悲しい。

jjをやめてjfにする。

mba-hack.blogspot.jp

ファイルを開く

:e ファイル名

 

終了

:q

 

保存

:w

 

別名で保存

:w ファイル名

 

行頭へ移動

^

 

行末へ移動

$

 

検索

*

カーソルのある場所の単語を検索(便利)

 

/xxxxx

xxxxxを検索

正規表現で検索

/regexp

ただし(とかエスケープしないといけない(面倒)

/(call)+ <-ダメ

/\(call\)+ <-OK

エスケープしないといけない文字が覚えられない。

very magicでなんとかする

/\v(call)+ <-OK

deris.hatenablog.jp

 

置換

:%s/置換前/置換後/g

確認しながらは

:%s/置換前/置換後/gc

正規表現するなら以下

:%s/\v置換前/置換後/gc

 区切りは/じゃなくて;でもいいらしい

:%s;\v(call)+;called;gc

qiita.com

grep、置換する。

:grep 検索文字 対象ファイル

:grep 検索文字 対象ファイル|cw

でQuickfixウィンドウが開くはずなんだけど、

「余分な文字が後ろにあります」

 

と怒られる。

:grep xxx後に:cwでお茶を濁す。

 

置換の時が面倒。

:args /temp/xxx/**/*.*

して

:argdo %s/\vxxx/xxx/g|update

なにがいやって、grepと置換でやること違う。

それと、内容確認してから置換ができない。

 

vim(vimgrep)も考えたけど遅いのが気に入らない。

 ので

The Silver Searcher + Ag.vim +qfreplaceにする。

qfreplace.vimなるものを作ってみた - 永遠に未完成 

 

:Ag パターン ファイル

grep

Quickfixリストが開くから

:qfreplace

で置換用バッファを開いて書き換え。

:w

で保存。

 

と思ったら。widowsではag使えない。

使えなくないけど、シェルがワイルドカードを展開してくれないから同じ使い勝手にならない。macwindowsで使い方変えたくないんだけどなあ。。。

しょうがないからwindowsではgrep(中身はfindstr)して:cw -> :qfreplace -> :wで行くか。

 

vimrc再読み

:source ~/.vimrc

d.hatena.ne.jp

 

バッファを閉じる

:bd

 

バッファの移動

<C-w>h

<C-w>j

<C-w>k

<C-w>l

 

オペレータとモーション

 力尽きた

Vim documentation: motion

Vim のテキスト編集 〜基礎編〜 - Vim のブログ

今更聞けないvimの話

Vimのオペレーターとモーションについて ‹ 技術の犬小屋

 

入力補完

NeoCompleteで

 

Undo、Redo

uとctrl+r

herokuでscalaでplayでpostgresql

つづき。

postgresqlにつないでみる。

デフォでherokuにpostgresのアドオンは入ってる。

ので、追加はしなくてよい。

 

herokuのpostgresqlに付いないでテーブルを作っておく。

アプリのルートでheroku pg:psqlすればherokuのpostgresqlにつながる。

ローカルにもpsqlがいるので注意。

つながったら適当にテーブルを作ってデータ入れとく。

 

herokuアプリのルートフォルダにProcfileを作って以下を書いとく。

 

web: target/universal/stage/bin/[アプリ名] -Dhttp.port=${PORT} -DapplyEvolutions.default=true -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=${DATABASE_URL}

 

build.sbtにjdbc追加。

name := """アプリ名"""

 

version := "1.0-SNAPSHOT"

 

lazy val root = (project in file(".")).enablePlugins(PlayScala)

 

scalaVersion := "2.11.1"

 

libraryDependencies ++= Seq(

  jdbc,

  anorm,

  cache,

  ws,

  "org.postgresql"  %  "postgresql"  %  "9.3-1102-jdbc41"

)

 

build.sbtに追加後、update。必要なのかどうか分かってないので一応やっておく。

./activator update

 

ついでにeclipse用のプロジェクトも作りなおしておいた。これも必要か分かってない。

./activator eclipse

 

適当にselect してみる。

  def index = Action {

    

    val dbUri = new URI(System.getenv("DATABASE_URL"))

    val username = dbUri.getUserInfo().split(":")(0)

    val password = dbUri.getUserInfo().split(":")(1)

    val dbUrl = "jdbc:postgresql://" +

      dbUri.getHost() +

      ':' +

      dbUri.getPort() +

      dbUri.getPath() +

      "?user=" + username +

      "&password=" + password +

      "&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory"

 

      val con = DriverManager.getConnection(dbUrl)

    try {

      con.setAutoCommit(false)

      

      val sql = "select * from testtb0 order by id"

      val st = con.createStatement()

      val rs = st.executeQuery(sql)

      var msg = ""

      while(rs.next) {

        // データ取得

        val r = for(n <- 1 to 2) yield rs.getObject(n)

        msg += r

      }

      Ok(views.html.index(msg))

    }finally{

      con.close()

    }

  }

 

その他。

H10が出て参った。

heroku logsでログを見れる。

printlnしとけばログに出る。

heroku config でDBの接続情報が見れる。

herokuでscalaでplay

typesafe-activatorを入れる。

activatorはsbtのスーパーセット。

入れるといってもダウンロードして展開するだけ。

 

eclipsescala ideを入れとく。

Download the 4.0 Release of the Scala IDE for Eclipse - Scala IDE for Eclipse

ここからurlコピーして

eclipse>ヘルプ>新規ソフトウェアのインストール

の作業対象にコピって入れればOK。

 

herokuのアカウントを作っておく。

普通につくればOK。

 

heroku toolbeltを入れる。

普通に入れればOK。

 

playframeworkのプロジェクトを作る。

./activator new アプリ名 play-scala

scalaのプロジェクトができる。

 

動かしてみる

./activator run

で動く。

localhost:9000

を叩けばscaffoldしたアプリが見れる。

 

eclipseデバッグできるようにする

とりあえず起動しておく。

./activator -jvm-debug 9999 run

で起動しておく。ポート9999につないでeclipseデバッグできる。

 

eclipseにプロジェクトをインポートできるようにする。

./acrivator eclipse

でインポートできるようにしてくれる。

eclipseでファイル>インポート>一般>既存のプロジェクトをワークスペース

で取り込む。

コンパイルするとコケる。

ビルドパス>ビルドパスの構成

にある「クラスフォルダの追加」をクリックして

アプリ名/target/scala-2.11/classes_managed/

を追加。

これでたぶん大丈夫。

 

デバッガをアタッチ

実行>デバッガの構成>リモートjavaアプリケーション

で接続タイプ「標準(ソケット接続)」、ホスト「localhost」、ポート「9999」にしてデバッグをクリック。

ブレークポイントとかはれる。

 

gitローカルリポジトリを作る

アプリのディレクトリで

git init

 

herokuにアプリを作る

heroku create アプリ名

 

git addとgit commit

addしてcommitする。

build.sbt

app/

conf/

project/build.properties

project/plugins.sbt

public/

test/

あたりをaddすればいい。はず。

 

herokuにpush

git push heroku master

でpush

 

つないでみる。

https://アプリ名.herokuapp.com/

につないでみる。

みれるはず。