Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

vi

vim 256 color リスト確認スクリプト

コマンドラインでの vim の hilight 設定(ctermfg, ctermbg)で、256色の色を数字で指定する場合の色を確認するスクリプト

vim256color.vim

let num = 255
call append(0, '')
while num >= 0
    let num_format = printf("%03d",num)
    exec 'hi col_'.num_format.' ctermbg='.num.' ctermfg='.num
    exec 'syn match col_'.num_format.' "__'.num_format.'__" containedIn=ALL'
    call append(0, num_format.'__'.num_format.'__')
    let num_tmp=6
    while num_tmp >= 0
        let num = num - 1
        let num_format = printf("%03d",num)
        exec 'hi col_'.num_format.' ctermbg='.num.' ctermfg='.num
        exec 'syn match col_'.num_format.' "__'.num_format.'__" containedIn=ALL'
        let line = getline(1)
        call setline(1, num_format.'__'.num_format.'__  '.line)
        let num_tmp = num_tmp - 1
    endwhile
    let num = num - 1
endwhile
call append(0, '=========== vim 256 color list ===========')

上記ファイルをvimで開いて 「:source %」 でスクリプトを実行すると、vimの画面の上部に色見本一覧が表示されます。

vim256color

なお、256色未対応の8色ターミナルだとこのように表示されます。数字が異なっても同じ色で表示される箇所が多数あることがわかります。

vim8color

vimでシンタックスのハイライトがおかしくなる

vim では、テキストファイルの種類に応じて色をつけてくれる機能(ハイライト機能)がありますが、スクロールすると色がおかしくなることが多々あります。これは、ハイライト機能機能が、ファイル全体を読み込んで構文解析しているわけではないのが原因です。

このように色がおかしくなってしまった場合は、Ctrl + l を押すと直ります。

vimで検索語をハイライトする@さくらインターネット

普通vimで検索すると、検索語がハイライトされるのですが、さくらインターネットにログインして、vimで検索するとハイライトされずに凄く見づらかったので、設定してみました。

以下のコマンドで可能です。

:set hlsearch

常に設定しておきたい場合は、~/.vimrc に追記してあげてください。

viで特定文字列を改行に置換

viでは改行へ置換する場合 Ctrl+v Enterを使用して改行を指定します。

例えばhogeを改行したい場合

:s/hoge/Ctrl+v Enter/g

となります。

vimで改行に置換

viで改行を置換(削除)するには、

:%s/\\n//g

とすればよいですが、改行に置換するには置換先に\nを入れても置換できません。

:%s/hoge/\\n/g

Debian Etchでは

hoge12hoge34
hoge56hoge78

^@12^@34
^@56^@78

となってしまいました。

\nの代わりにCtrl-v に続いてリターンを入力すると改行コード(^M)を挿入できます。

:%s/hoge/^M/g
hoge12hoge34
hoge56hoge78

は無事

12
34

56
78

になりました。

vim (vi) でマッチした文字列の一部を置換

vim (vi)の置換のお話です。

全行のoldをnewに置換したい場合は普通こうしますよね。

:%s/old/new/g

しかしoldで始まってnewで終わる単語のoldをnewにしたい場合、つまりold○○○newoldxxxnewnew○○○newnewxxxnewに置換したい場合は置換対象の文字列に正規表現を使うため、上記のように単純な置換で実現できません。よって、○○○やxxxの部分を変数のように扱う必要がでてきます。これは以下のようにして実現できます。

:%s/old\(.*\)new/new\1new/g

"(" と  ")" で囲まれた部分はホールドバッファと呼び、9つまで使うことができ、\1~\9として呼び出すことができます。つまりold・・・・newの・・・・の部分を正規表現".*"でマッチさせて\1として扱えるため、上記を実行するとnew・・・・newに置換されます。

ホールドバッファは何度でも呼びさせるため、以下のような置換もできます。

:%s/old\(.*\)new/new\1new\1/g

これでold○○○newoldxxxnewnew○○○new○○○newxxxnewxxxに置換されます。

ソースコードのインデントを整形する@vim

vimでソースコードを編集していてインデントが崩れてしまった場合の整形の方法。

ggで先頭行に移動し、=Gで最終行まで整形

gg=G

おそらく、括弧のないpythonでは使えません。

viで制御コードの入力

.vimrcといった設定ファイルを書いていると、制御コードを入力したいときがあります。これは、Ctrl-v を押した後に目的のキー、またはCtrl+○で入力すればできるようです。

制御コードの参考 : http://ash.jp/code/ctrltbl.htm]

cygwin上のvimでは、デフォルトでBackspaceがうまく動作しません。日本語も表示できないため、~/.vimrcに以下を追記してあげましょう。Hはもちろん制御コードです

noremap <BS> ^H
noremap! <BS> ^H

set encoding=japan
このブログについて
プライバシーポリシー・お問い合わせ等
購読する(RSS)
記事検索
アーカイブ
カテゴリー
  • ライブドアブログ