エスケープシーケンスで、既存の行、文字を書き換える

こんにちはー

Vim は、ターミナル上で動くアプリですが、カーソルの位置を変えて、
既存の行、文字の内容を上書きしたりできます。

こういうのって、どうやるのかなあと調べていたら、
どうやら、エスケープシーケンスというのを使うらしいです。

というわけで、使ってみました。

目的

  • ターミナル上の既存の行、文字を書き換える

方法

  • エスケープシーケンスを使用して、カーソルを動かす

カーソルを動かしてみる

絶対座標でカーソルを変更します。
次のような形です。

\e[行;列H"

今回は Ruby でやってみたいと思います。

# 左上から 2行、3列目にカーソルを移動
printf "\e[2;3H"

カーソルが移動されます。

書き換えてみる

この後、文字列を出力すれば、文字が上書きされるわけです。

実際のコードは次のようになります。


# 画面をクリアしておく
printf "\e[2J"

# 1行目1列に apple と出力
printf "\e[1;1H"
printf "apple"

sleep 1

# 1秒後、再び1行目1列に出力して上書きする
printf "\e[1;0H"
printf "banana"

2016-05-18 21h21_26

1行目1列は、ターミナルの左上なので、
文字がすでにある可能性があります。
そのため、上のコードでは、最初に \e[2J というエスケープシーケンスで、
ターミナルをクリアしておきます。

これを使って何かできそう

2016-05-18 21h22_47

| がある場所で、a キーを押すと、> がはね返るようにしました。
ゲームとかで応用できそうです。

参考

エスケープシーケンスを体感する - ザリガニが見ていた...。
エスケープシーケンス(escape sequence)とは、直訳すれば「エスケープに続く数列(文字コード列)」とい..

エスケープシーケンスの一覧が載っていて便利です。
今回は絶対座標で変更しましたが、「上にn行」みたいなずらし方の方法もあり、こちらに載っています。

WindowsのGVim をかっこよくする

仕上がり

2016-05-01_12h41_03
※ Vim-airline というプラグインを使用していますが、
  その方法はまた今度説明します。

各種設定をする

.vimrc に追加します。ない場合は、ホームディレクトリに、.vimrc というファイルを作ってください。

" 行番号を表示
set number
" 対応する()、{}、[]をハイライト
set showmatch

" 折りたたみ(任意)
" indent の数で折りたたむよう設定
set foldmethod=indent

.gvimrc に追加します。ない場合は、ホームディレクトリに、.gvimrc というファイルを作ってください。

" 日本語フォントを全角分のスペースにする
set ambiwidth=double

" ビープ音を消す(任意)
set visualbell t_vb=

いらないUIを消す

.gvimrc に追加します。

" 最初に追加
gui

" UIを消す
set guioptions-=m " remove menu bar
set guioptions-=T " remove tool bar
set guioptions-=r " remove right-hand scroll bar
set guioptions-=L " remove left-hand scroll bar

背景を半透明にする

.gvimrc に追加してください。

" 背景を透明にする
set transparency=200

colorschemeを変える

ぼくは、デフォルトで入っている koehler というものを使っています。

.gvimrc に追加してください。

colorscheme koehler

" 先ほど折りたたみの設定をした人向け
" 折りたたみの色を替える
highlight Folded guibg=black guifg=yellow

WindowsだけれどVim使ってみた

こんにちはー。

Vim、いいですよね~~~~
キーボードですべてが完結しちゃうところがかっこよくて、
僕も使いたくなりました。

今回は、Windows でかっこ良く Vim を使う方法を紹介します。

Vim を使う時の条件

Vim を使う方法はいくつかあります。
「かっこ良く」ということで、いくつか条件を用意しました。

  • 背景を透過できる
  • かっこいい colorscheme が使える(256色表示できる)
  • バグがない
  • プラグインを入れられる

ConEmuで使いたかった。

ConEmu という、コンソールをタブ化できたりするものがあるので、それでVimも使いたかったんです。

コマンドプロンプトをタブ化してくれる、「ConEmu」が便利!
 最近、GulpやNode.jsを使うようになって、「コマンドプロンプト」を使う機会が増えてきました。そのとき、いちいちcdコマンドを使うのはつらいので、ディレクトリ...

これでできるかなと思いましたが、

  • 256色表示できない
  • backspace で文字が表示から消えない(本当は消えている)

ということで、使えなかったです・・

Cygwinでやってみたが・・

プラグインを入れるとき、インストール先を指定する「expand()」という関数を使います。
しかし、そこで expand('/home/Shundroid/cygwin64/.vim/bundle/') と指定しましたが、
ルートがCドライブになっていて、Cドライブに合わせるように修正したら、今度はうまく認識しない・・という感じで・・
ややこしかったので無理でした。

普通にコマンドプロンプトで使う

  • 背景を透過できない

のでダメでした。

GVim を使う

ぼくが思っていた条件をすべて満たしているので、
これを使うことにしました。

  • 背景を透過できる
  • かっこいい colorscheme が使える(256色表示できる)
  • バグがない
  • プラグインを入れられる

では、次は GVim をかっこ良く使えるように設定していきます。

WindowsのGVim をかっこよくする
仕上がり※ Vim-airline というプラグインを使用していますが、  その方法はまた今度説明します。各種設定をする.vimrc に追加します。ない場合は、ホームディレクトリ...