emacsからvimに乗り換える2
ウインドウ分割
:split
:vsplit
しかし。。。
emacsと同じ使い心地を求めているようで、これでいいのか、と悩む。
そもそもvimってemacsみたいにパカパカとバッファを開いて使うものなのだろうか?
まあいいや。
間違ってるならそのうち気がつくだろう。
ウインドウの分割解除
:only
四文字打つのはめんどいなあ。
なにかにマップしようかしら。
ウインドウの移動
<C-w>wなのか。
で
<C-w>hjkl
でも移動できる、と。
バッファまわり
バッファリスト表示して、表示中のリストからバッファを選択したい。
探す。。。
unite.vimがよさげ。
ここの設定をマルっとぱくる。
矩形選択
<C-v>で矩形選択モード
スプラトゥーン
スプラトゥーン試射会
emacsからvimに乗り換える
少しvimを触ってみる。
escは遠い。
インサートモードでのjjをescに割り当てる。
モードとIMEのOn、Off状況を覚えてられない。
あと、jjをescにするとIME Onの時にjjして「っj」とかなって悲しい。
jjをやめてjfにする。
ファイルを開く
:e ファイル名
終了
:q
保存
:w
別名で保存
:w ファイル名
行頭へ移動
^
行末へ移動
$
検索
*
カーソルのある場所の単語を検索(便利)
/xxxxx
xxxxxを検索
正規表現で検索
ただし(とかエスケープしないといけない(面倒)
/(call)+ <-ダメ
/\(call\)+ <-OK
エスケープしないといけない文字が覚えられない。
very magicでなんとかする
/\v(call)+ <-OK
置換
:%s/置換前/置換後/g
確認しながらは
:%s/置換前/置換後/gc
正規表現するなら以下
:%s/\v置換前/置換後/gc
区切りは/じゃなくて;でもいいらしい
:%s;\v(call)+;called;gc
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にする。
:Ag パターン ファイル
でgrep
Quickfixリストが開くから
:qfreplace
で置換用バッファを開いて書き換え。
:w
で保存。
と思ったら。widowsではag使えない。
使えなくないけど、シェルがワイルドカードを展開してくれないから同じ使い勝手にならない。macとwindowsで使い方変えたくないんだけどなあ。。。
しょうがないからwindowsではgrep(中身はfindstr)して:cw -> :qfreplace -> :wで行くか。
vimrc再読み
:source ~/.vimrc
バッファを閉じる
:bd
バッファの移動
<C-w>h
<C-w>j
<C-w>k
<C-w>l
オペレータとモーション
力尽きた
入力補完
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のスーパーセット。
入れるといってもダウンロードして展開するだけ。
eclipseにscala 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/
につないでみる。
みれるはず。