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
嵐が丘