有馬総一郎のブログ

(彼氏の事情)

2016年07月29日 00:50:00 JST - 2 minute read - Vim

vim 覚書 amazonの曲情報を整形する

vim 覚書

書いてたら、パソコンとまったー。なので簡略。

  • 現在の行の文字列を取得
getline(".")
  • 最終行番号を取得
line("$")
  • 先頭から最後の行までの行番号でループ
for i in range(1, line("$"))
endfor
  • 文字列の長さを取得
strlen("あい4")

文字数でなくて、文字コードに合わせたバイト数を取得するので、上のケースでは7となる。

  • 検索文字の位置を取得。第3引数は、検索開始位置。
match("abchogedefg", "hoge", 0)

位置は0からなので、上のケースでは3となる。

  • 文字列の切り抜き
abあい"[0:4]

strlenと同じくバイト数での切り抜きとなるので、上のケースでは"abあ"となる。開始位置を省略した場合は、0として頭から切り抜き。終了位置を省略した場合は、以降の文字を全て切り抜きとなる。

  • 行の文字列を置換
call setline(".", "abc")

上のケースでは実行した行がabcとなる。

  • vim スクリプトの簡単な実行

スクリプトを書いた行をヤンクして(例えばクリップボードにヤンク)

:@*

とすれば実行

  • vimスクリプトやコマンドの結果をヤンク
:redir @*>
:silent echo "hello"
:redir end

上のコマンドを実行後、"*pとすれば

hello

を貼り付けられる。

以上を踏まえて…

最近、amazonでは、以下のような形式で曲情報を掲載することが増えて、整形しづらくなった。

上のをコピペすると、

ディスク:1
再生: バンビーナ 1. バンビーナ
再生: 8 BEATのシルエット 2. 8 BEATのシルエット
再生: BEAT EMOTION 3. BEAT EMOTION
再生: サイバーシティーは眠らない 4. サイバーシティーは眠らない
再生: POISON 5. POISON
再生: STILL ALIVE 6. STILL ALIVE
再生: DIVING WITH MY CAR 7. DIVING WITH MY CAR
再生: NOCTURNE No.9 8. NOCTURNE No.9
再生: スリル 9. スリル
再生: CAPTAIN ROCK 10. CAPTAIN ROCK
再生: CHANGE YOURSELF! 11. CHANGE YOURSELF!
再生: 風の銀河へ 12. 風の銀河へ
再生: CIRCUS 13. CIRCUS
再生: Don’t Give Up! 14. Don’t Give Up!
再生: RUSSIAN ROULETTE 15. RUSSIAN ROULETTE
再生: IDENTITY 16. IDENTITY
再生: 嵐が丘 17. 嵐が丘

となる。なので、以下のようなvimマクロを作成。

for i in range(1, line("$"))
let strline = getline(i)
let found = match(strline, '^再生: ', 0)
if found == 0
let strline = strline[8:]
let num = ((strlen(strline)) / 2) + 2
let strline = strline[num:]
endif
call setline(i, strline)
endfor
%s/^ \+//ge
%s/^\n//ge
%!nkf -Z0
%s/ / /ge
%s/~/\~/ge
%s/“/"/ge
%s/’/'/ge

スクリプトをかませれば、以下のようになる。

ディスク:1
バンビーナ
8 BEATのシルエット
BEAT EMOTION
サイバーシティーは眠らない
POISON
STILL ALIVE
DIVING WITH MY CAR
NOCTURNE No.9
スリル
CAPTAIN ROCK
CHANGE YOURSELF!
風の銀河へ
CIRCUS
Don't Give Up!
RUSSIAN ROULETTE
IDENTITY
嵐が丘

Tags: Vim

NW-ZX100でのアルバムアート表示 Handbrakeで字幕に日本語(Japanese)が選択できない