カテゴリー別アーカイブ: プログラミング

くだらないUnix技まとめ

(便利で)くだらないUnix技は?のまとめです。

元スレそのままだと、見にくいのと、どういう結果が起こるのか分かりにくいのと、実行すると危ないコマンドがあるのでまとめてみました。全部羅列している訳じゃないので全部読みたい人は元スレをば。

  • eject – CD-ROMドライブなどを開いたり閉じたりする
  • type – コマンドの種類の説明を表示する
    • type ls すると ls is an alias for ls -F –color=tty
    • type echo すると echo is a shell builtin
    • type makeすると make is /usr/bin/make
  • look – 指定した文字列で始まる行を表示
    • look nano とすると nanograms, nanomelus, nanometer…といった単語が出てくる。
  • init 0 – システムを停止させる
  • echo ^O – バイナリファイルを表示したりしておかしくなった画面を直す
    • ^OはCtrl+V Ctrl+Oで入力できる
    • # ぼくはresetコマンドをよく使います。
  • echo ^G – ベルを鳴らす
    • ^Gの入力方法は、Ctrl+V Ctrl+Gと入力する
  • sudo beep -f 500 -l 100 ; sleep 0.9s ; sudo beep -f 500 -l 100 ; sleep 0.9s ; sudo beep -f 500 -l 100 ; sleep 0.9s ; sudo beep -f 1000 -l 2000
    • ごめんなさい、CentOSなので試せませんでした。
    • 試せた人、連絡ください。
  • echo ‘C16P16P4.C16P16P4.C16P16P4.>C2’ >/dev/speaker
    • これも試せませんでした。

    ping hogehoge | sed -e ‘s/bytes from/^Gbytes from/’

    • pingで繋がっていたら音を出す
    • # 同じことが引数で出来た気がするけど記憶違いかな?
  • bc – 電卓ソフト
  • dc – RPN形式の計算ソフト
    • 2 3 + 4 *とか・・・。pで印字。
  • tail -f ファイル名 – 追っかけ表示
  • echo $[2#1111+1]
  • cal – カレンダー表示
  • grep –数字数字行だけ前後も表示
  • diff –side-by-side – diffの2カラム表示
    • # 僕はvimdiffが好きです。
  • find – ファイル検索
    • たくさんあるんで割愛
  • ^Z, jobs, fg, bg – コマンドのサスペンド、一覧、フォアグラウンド実行、バックグラウンド実行
  • cd – 前回のディレクトリへ移動
  • !! – 直前のコマンドを実行
    • タブで展開できます
  • cat /dev/urandom > /dev/dsp
    • 実行してません。ホワイトノイズ再生だと。
    • 自己責任で。
  • man ascii – アスキーコード表
  • man console_codes – エスケープシーケンス一覧
  • sl – 入ってない方はWikipediaのslを参照。
  • banner – 文字を大きく表示
    • CentOSに入ってなかったので試してません。
  • aptitude moo
  • aptitude -v moo
  • aptitude -vv moo
  • 以下略
    • Debian/Ubuntuの方はどうぞご自身でお試しください。
  • yes 永遠に’y'(または指定した文字)を表示
    • yes | yum install みたいに使えます。
  • seq 数値 – 数列の印字

DreamSparkが日本でも始まった!学生ならVisual Studioとかが無償になってる!

Microsoft DreamSparkがいつのまにか日本でも開始してる!
開始の時点では日本ではサービスが開始していなくて、とても歯がゆい思いをしたのですが、ついに始まったんですね。
サービスの対象は

大学生、短大生、大学院生、専門学校 (本科生)、高等専門学校の 4、5 年生が該当

みたいです。

現在は

Microsoft Visuak Studio 2008 Prof.
SQL Server 2005 Dev.
Expression Studio
xna Game Studio (よく知らない)
Windows Server 2003 Std.
Microsoft Visuak Studio 2005 Prof.

が無償で提供されている(CDイメージのダウンロード)みたい!
すごいね、太っ腹だね。

Windows Liveのアカウントはもちろんですが、学生であることの証明のために国際学生証ってのが必要みたい。

国際学生証ってどこに申し込めばいいのかと思ったら、偶然にも僕の大学生協は受け付けていました。自分の大学の生協になくても(もしくは生協のない学校でも)、最寄りの国際学生証発行場所で申し込むか、東京か大阪のセンターに郵送で申し込むことができるみたい。
料金は1,430円で申請書と写真と学生証コピーが必要。
早速明日にでも行ってきます。発行までどれくらいかかるのかなぁ。

screenrc

注意

この記事はobsoleteです。あたらしいscreenrcが僕がMacBookで必ず使う43のソフトウェア達にありますのでそちらをご参照ください。

 

最後、短いけど。

.screenrc

 


# kcrt


multiuseron


startup_messageoff


vbelloff


shell

 zsh
backtick

0560

 /bin/sh -c

“test ‘$MAIL‘ &&test -s $MAIL && echo -n ‘ MAIL'”

backtick

1560

 $HOME/etc/script/cpuload.sh

hardstatus

 alwayslastline

“%{wb}%{Wg} [%H] %{-}%0` %-w%{+bs .Wb}¥¥%{+u} %n %t %?(%u)%?%{-}/%{-}%+w %=%{WB} %1` : %m/%d %A %C”


caption

 splitonly
bell

“^G Beep!! in %”


defscrollback3000


altscreenon# 画面復帰を有効に(vim終了時などに画面を戻す)


# キー設定


 

zshrc

注意

この記事はobsoleteです。あたらしいzshrcが僕がMacBookで必ず使う43のソフトウェア達にありますのでそちらをご参照ください。

 

一回じゃ入らんからエントリ分けるよ・・・

 

.zshrc

 


#


# kcrt’s .zshrc file for Fedora/Debian


# Written by kcrt <kcrt__atmark__kcrt.net>


# Nanoseconds Hunter “http://www.kcrt.net


# Id: $Id$


#


# —– とりあえず

stty

stop

 undef

# ^Sとかを無効にする。


# —– 色宣言


typeset

 -A hostcolors

typeset

 -A hostblacks
hostcolors

=(

kuro green fro cyan sphe yellow pele magenda

)

hostblacks

=(

kuro

001100

 fro

001111

 sphe

001111

 pele

110000)

hostcolor

=

blue

if[[$hostcolors[$HOST]=“”]];then

hostcolor

=

blue
hostblack

=“000000”


else

hostcolor

=$hostcolors[$HOST]

hostblack

=$hostblacks[$HOST]


fi


export

 hostcolor

export

 hostblacks

# —– xterm(screen上以外での起動)だと思われる


if[[$TERM==“xterm”]];then


# 色の個別設定 – うまく動かない端末もあります


echo-n“^[]R”# first, reset the palette


echo-n“^[]P0$hostblack# black


echo-n“^[]P1FF0000″# red


echo-n“^[]P200CC00″# green


echo-n“^[]P3CCCC00″# yellow


echo-n“^[]P45555FF”# blue


echo-n“^[]P5FF00FF”# magenta


echo-n“^[]P600FFFF”# cyan


echo-n“^[]P7CCCCCC”# white


echo-n“^[]P8888888″# BLACK


echo-n“^[]P9FFAAAA”# RED


echo-n“^[]PA88FF88″# GREEN


echo-n“^[]PBFFFFAA”# YELLOW


echo-n“^[]PC7777FF”# BLUE


echo-n“^[]PDFFCCFF”# MAGENTA


echo-n“^[]PE88FFFF”# CYAN


echo-n“^[]PFEEEEEE”# WHITE


# タイトルバーの文字列


if[[$SSH_CONNECTION!=“”]];then


# ssh接続

tmpTitle

=`echo -n $SSH_CONNECTION | sed -e ‘s/¥(.*¥) .* ¥(.*¥) .*/¥1 –> ¥2/g’`


echo“^[]2;$HOST($tmpTitle, ssh)¥a


elif[[$REMOTEHOST!=“”]];then


# おそらくtelnet


echo-n“^[]2;$REMOTEHOST –> $HOST¥a;


else


# ローカルと見た


echo-n“^[]2;$HOST(local)¥a


fi


fi


# —– 環境変数


export

 EDITOR

=“vim”# やっぱりvimだねっ


export

 COLOR

=“tty”


# —– 色関係


autoload

 colors

# $color[red]とかが使えるようになる。

colors

eval`dircolors -b`

zstyle

‘:completion:*’

 list-colors

${(s.:.)LS_COLORS}# 補完も色つける


# —– autoloadたち


autoload

 -U compinit
compinit

-u


autoload

 zmv

autoload

 zargs

autoload

 zsh/files

# 設定はNOを頭につけると逆の意味になるよ!


# —– 補完


LISTMAX=200# 表示する最大補完リスト数


setopt

 auto_list

# 曖昧な補完で自動的にリスト表示


setopt

 NO_menu_complete

# 一回目の補完で候補を挿入(cf. auto_menu)


setopt

 auto_menu

# 二回目の補完で候補を挿入


setopt

 magic_equal_subst

# (?) –include=/usr.. などの=補完を有効に


setopt

 NO_complete_in_word

#

TODO

:よくわからない


setopt

 list_packed

# 補完候補をできるだけつめて表示する


setopt

 NO_list_beep

# 補完候補表示時にビープ音を鳴らす


setopt

 list_types

# ファイル名のおしりに識別マークをつける


# —– 履歴


HISTFILE=$HOME/.zhistory”# 履歴保存先


HISTSIZE=1000# 使用する履歴数


SAVEHIST=1000# 保存する履歴数


setopt

 hist_ignore_space

# スペースで始まるコマンドを記録しない


setopt

 hist_ignore_all_dups

# 重複した履歴を記録しない


setopt

 share_history

# ターミナル間の履歴を共有する


setopt

 append_history

# 履歴を追記する


# —– ファイル操作関連


setopt

 auto_cd

# ディレクトリ名でcd


setopt

 auto_remove_slash

# 不要なスラッシュをはずす


setopt

 auto_pushd

# 自動的にpushd


setopt

 pushd_ignore_dups

# 重複したディレクトリスタックを記録しない


setopt

 correct

# コマンドのスペル補正


setopt

 correct_all

# コマンド以外もスペル補正


setopt

 equals

# =zshとかが置換される


setopt

 extended_glob

# 拡張グロブ有効


# —– そのほかの設定


setopt

 print_eight_bit

# 8ビット文字表示


setopt

 prompt_subst

# プロンプトでのコマンド置換などを有効に


setopt

 beep

# エラー時にはBeep音


setopt

 NO_emacs

# viが一番!


setopt

 NO_flow_control

# ^S/^Qを有効に


# —– プロンプト


# PROMPT=’%{^[[%(!.31.32)m%}[%n@%m]%# %{^[[m%}’


PROMPT=‘%{%(!.$fg[red].$fg[$hostcolor])%}[%n@%m]%# %{$reset_color%}’


# 最後に実行したプログラムがエラーだと反転するよ。


RPROMPT=‘ %{%(?.$fg[cyan].$bg[cyan]$fg[black])%} [%~] %{$reset_color%}’


# —– キー


bindkey

 -v

bindkey‘^z’

    push-line

bindkey‘^y’

    run-help

bindkey‘^[[A’

   up-line-or-history

bindkey‘^[[B’

   down-line-or-history

# —– 自分用関数

ShowStatus()

{


# モードの切り替え時に右上にモードを表示


integer

 Cursor_X

integer

 Cursor_Y

integer

 StrLength
StrLength

=

$

(echo-n$1|

 wc -m

)

Cursor_X

=

$

[COLUMNS

-

$StrLength]# 場所はお好みで

Cursor_Y

=1


echo-n“^[[s”# push pos


echo-n“^[[$[$Cursor_Y];$[$Cursor_X]H”# set pos


echo-n“^[[07;37m$1^[[m”# print


echo-n“^[[u”# pop pos


}


# viins <-> vicmd {{{

Vi_ToCmd()

{

ShowStatus

“– NORMAL –“


builtin

 zle .vi-cmd-mode

}

Vi_Insert()

{

ShowStatus

“– INSERT –“


builtin

 zle .vi-insert

}

Vi_InsertFirst()

{

ShowStatus

“– INSERT –“


builtin

 zle .vi-insert-bol

}

Vi_AddNext()

{

ShowStatus

“– INSERT –“


builtin

 zle .vi-add-next

}

Vi_AddEol()

{

ShowStatus

“– INSERT –“


builtin

 zle .vi-add-eol

}

Vi_Change()

{

ShowStatus

“– INSERT –“


builtin

 zle .vi-change

}

zle -N Vi_ToCmd
zle -N Vi_Insert
zle -N Vi_InsertFirst
zle -N Vi_AddNext
zle -N Vi_AddEol
zle -N Vi_Change

bindkey

 -M viins

“^[“

 Vi_ToCmd

bindkey

 -M vicmd

“i”

 Vi_Insert

bindkey

 -M vicmd

“I”

 Vi_InsertFirst

bindkey

 -M vicmd

“a”

 Vi_AddNext

bindkey

 -M vicmd

“A”

 Vi_AddEol

bindkey

 -M vicmd

“c”

 Vi_Change

bindkey

 -M vicmd

“/”

 history-incremental-search-backward

bindkey

 -M vicmd

“^P”

 vi-repeat-search

bindkey

 -M vicmd

“^N”

 vi-rev-repeat-search

# vi-repeat-search


bindkey“^Q”

 self-insert

# }}}


# —– 関数


function

 _w3m()

{

:title w3m

$1


if[[$1==“”]];then

w3m http://www.google.co.jp

else

w3m

$@


fi

:title

$SHELL


}


function

 :whatsnew()

{

vimdiff

$1=(

svn cat --revision HEAD

$1)


}

fucntion :whatchanged()

{

vimdiff

$1=(

svn cat --revision PREV

$1)


}


function

 trash()

{


if[$#=0];then


command

 rm

return1


fi


if[

 !

-d

 ~/.trash

];then


echo“ERROR : ~/.trash not found!”


return1


fi

mv

$@

 ~/.trash

||return


if[$#=1];then


echo‘$1’ was moved into trash!”


else


echo$# files were moved into trash!”


fi


}


# —– エイリアス


# コマンド置き換え


alias

 vi

=‘vim -p’


alias

 rm

=‘trash’


alias

 w3m

=‘_w3m’


# 引数


alias

 ls

=‘ls -F –color=tty’


alias

 du

=‘du –human-readable -s ./*’


alias

 df

=‘df –human-readable’


alias

 grep

=‘grep –color -a’


alias

 less

=‘less –ignore-case –status-column –prompt=”?f%f:(stdin).?m(%i/%m files?x, next %x.). ?c<-
%c-> .?e(END):%lt-%lb./%Llines” –hilite-unread –tabs=4 –window=-5’


alias

 pstree

=‘pstree -p’


alias

 cal

=‘cal -3’


alias

 zmv

=‘noglob zmv -W’


alias

 zcp

=‘noglob zmv -C’


alias

 zln

=‘noglob zmv -L’


# 省略とか


alias

 la

=‘ls -F -a –color=tty’


alias

 ll

=‘ls -F -la –color=tty –sort=time –reverse’


alias

 hist

=‘history’


alias

 :q

=‘exit’


alias

 su

=‘su -s =zsh’


alias

 hexdump

=‘od -Ax -tx1z -v’


alias

 beep

=‘print “¥a”‘


alias

 cls

=‘clear’


alias

 ...

=‘cd ../..’


alias

 ....

=‘cd ../../..’


alias

 .....

=‘cd ../../../..’


alias

 :kuro

=‘ssh kuro’


if[[-x

 /usr/bin/man

]];then

compdef _man w3mman

alias

 man

=‘w3mman’


fi


# —– suffix alias (関連づけ)


alias-s

 txt

=‘cat’


alias-s

 log

=‘tail -f -n20’


alias-s

 html

=‘w3m’


function

 viewxls()

{

w3m -T text/html

=(

xlhtml

$1)


}


alias-s

 xls

=‘viewxls’


# —– root用の設定


if[[$USER!=‘root’]];then


alias

 updatedb

=“sudo updatedb; beep”


alias

 taillog

=‘sudo tail -f -n20 /var/log/syslog’


# Fedoraはデフォルトで設定されてない

zstyle

‘:completion:*:sudo:*’command

-

path

 /usr/sbin /usr/bin /sbin /bin /usr/

local

/sbin

exportPATH=$PATH

:/usr/sbin:/sbin:/usr/

local

/sbin

fi


# —– Abstraction (予定)


alias

 :

suspend=“sudo /usr/sbin/pm-suspend”


alias

 :hibernate

=“sudo /usr/sbin/pm-hibernate”


if[[-x

 /usr/bin/yum

]];then


alias

 :package_update

=“sudo yum update”


alias

 :package_install

=“sudo yum install”


elif[[-x

 /usr/bin/aptitude

]];then


alias

 :package_update

=“sudo aptitude update; sudo aptitude upgrade”


alias

 :package_install

=“sudo aptitude install”


alias

 :package_list

=“”


alias

 :package_search

=“sudo aptitude show”


fi


# —– cygwin 固有設定


if[[$OSTYPE=

 *cygwin*

]];then


alias

 updatedb

=“updatedb –prunepaths=‘/cygdrive’


alias

 open

=‘cmd /c start ‘


alias

 start

=‘explorer . &’


fi


# —– screen 使うことにしたよ


if[[-x

 /usr/bin/screen

]];then


function

 :title()

{


# 1 : 普通の起動


# 2 : screen上 -> TERM = “screen”


# 3 : ssh または screen上でのssh -> SSH_CLIENTが空でない


# 4 : ssh上でのscreen -> SSH_CLIENTが空でない かつ STYが空でない


# rootの場合**を付ける


if[[$USER==“root”]];then


1=“*$1*”


fi


if[[-n$SSH_CLIENT]];then


if[[-n$STY]];then


# 4 : ssh上でのscreen


else


# 3 : ssh または screen上でのssh


# マシン名を付け加える


1=$HOST:$1


fi


elif[[$TERM==“screen”]];then


# 2 : screen上 -> TERM = “screen”


else


# 1 : 普通の起動


fi


echo-n“^[k$1^[¥¥


}


alias

 :split

=‘screen -X split’


alias

 :taillog

=‘screen -t syslog sudo tail -f /var/log/syslog’


alias

 :tailapachelog

=‘screen -t syslog sudo tail -f /var/log/apache2/error.log’


alias

 :top

=‘screen -t top top’


alias

 :displays

=‘screen -X displays’


# よく使いそうなやつ

IsScreen

=`expr $TERM : screen`


if[[$IsScreen!=0]];then


# —– スクリーンだよ!

preexec()

{


# derived from http://nijino.homelinux.net/diary/200206.shtml#200206140


# and modified by kcrt

emulate

-L

 zsh

local-a

 cmd

;

cmd

=(${(z)2})


case$cmd[1]in


fg)


if(($#

cmd

==1));then

cmd

=(`builtin jobs -l %+`)


else

cmd

=(`builtin jobs -l $cmd[2]`)


fi


;;

%*

)

cmd

=(`builtin jobs -l $cmd[1]`)


;;

ls

)


local-a

 wd

;

wd

=(`builtin dirs`);

:title

$wd[0];


;;


cd)

:title

$cmd[2];


;;

sudo

)

:title

“*$cmd[2]*”;


;;

*

)

:title

$cmd[1];


;;


esac


#local -A jt; jt=(${(kv)jobtexts})


#$cmd >>(read num rest


#cmd=(${(z)${(e):-¥$jt$num}})


#echo -n “^[k$cmd[1]:t^[¥¥”) 2>/dev/null


}


else

screen

-r


fi


else


echo[kcrt] : screen not found.”


fi


 

vimrc

注意

この記事はobsoleteです。あたらしいvimrcが僕がMacBookで必ず使う43のソフトウェア達にありますのでそちらをご参照ください。

なんだか最近vimrcとか、環境をさらすのがはやってるらしいね。というわけで公開いたします。検索から来た人の役に少しでも立ってくれれば、と。
かなり特殊なところが多い・・・ですが、とてもおもしろい部分も多いと思うので是非見てやってください。あ、でも変なこともしてるので理解せずそのまま使うのはあんまりおすすめできない・・・かも。
あ、あとDebianでしか試してないんで、Fedoraだとここはこうだよ、的なことがあったら是非教えてください。

vimrc(このエントリ)・zshrcscreenrc

スクリーンショット

vimrc

.vimrc

 


” .vimrc


” kcrt <kcrt kcrt.net>



scriptencoding

 utf

8


setnocompatible” 拡張機能を有効にする


” —– 最初から入ってる奴 ———————–


if

 &t_Co

>2||has(“gui_running”)” カラーディスプレイ


syntaxon


endif


filetypepluginindenton


augroup

 vimrcEx

autocmdFileType

 text

setlocaltextwidth

=78

autocmdBufReadPost

 *

¥if

 line(

“‘¥””

)

>0&&

 line(

“‘¥””

)

<=

 line(

“$”

) |

¥

   exe

“normal g`¥””

 |

¥endif


augroup

 END

" ===== ユーザーインターフェース関係 =============

” —– 設定 ————————————-


setbackspace

=2

” <BS>の動作設定


sethistory

=50

” :コマンドの履歴数


setshowcmd” コマンド表示


setlaststatus

=2

” 最下部情報行の行数


setstatusline

=%h%w%f¥ %m%#RO#%r%#StatusLine#%y%{'['.(&fenc!=''?&fenc

:

&enc).']['.&ff.']'}%=%4v¥ %l/%L¥ (%p%%)

sethlsearch” 検索時ハイライト有効


” —– マウス ———————————–


if

 &term

==“screen”


setmouse

=a

” マウス有効


setttymouse

=xterm2

endif


” —– タブインターフェース(またはバッファ) —–


map

 Q gq

” C-Tabでタブが使えるときはタブを切り替え


” 使えない場合はバッファの切り替えを行う


if(

exists

(“:tab”))


nmap<C-Tab>

       :tabn

<CR>


nmap<C-S-Tab>

     :tabprev

<CR>


else


nmap<C-Tab>

       :bn

<CR>


nmap<C-S-Tab>

     :bp

<CR>


endif


“C-→とC-←をC-Tab, C-S-Tabと同様の操作にする


nmap^[

[C

<C-Tab>


nmap^[

[D

<C-S-Tab>


” タブラインの表記


settabline

=%!MyTabLine()

“後述


” —– コマンド略記——————————


ca

 man

help


” —– 補完 ————————————-


setcomplete

 =.

,

w

,

k

,

b

,

u

,

t

,

i

if(

exists

(‘*pumvisible’)&&

 has

(“gui”))


inoremap<expr><CR>

 pumvisible() ? "

¥<c-y>

" : "

¥<c-g>

u

¥<cr>

"

inoremap<expr><Esc>

 pumvisible() ? "

¥<C-E>

":"

¥<Esc>

"

” inoremap <expr> <c-n> pumvisible() ? “¥<lt>c-n>” : “¥<c-n>¥<c-r>=pumvisible() ? ¥”¥¥<lt>down>¥” : ¥”¥”¥<lt>cr>”


endif


if(

exists

(‘&omnifunc’))


imap<C-Space><C-X><C-O>


else


imap<C-Space><C-N>


endif


” —– その他のキー設定 ————————-


map<F1>

 K

nnoremap<UP>

 gk

nnoremap<DOWN>

 gj

" ===== 編集に関連する設定 =======================

” —– 文字エンコードの設定 ———————


setfileencodings

=utf-8

,

shift_jis

,

euc-jp

setfileencoding

=utf-8

” デフォルトのファイルエンコーディング


setambiwidth

=double

” 幅未定義MBSCの幅


” —– 親切設定 ———————————


setshowmatch” 対応する括弧を強調表示


setdisplay

=lastline

” @@@表示


” —– 検索 ————————————-


setincsearch” インクリメンタルサーチ


setignorecase” 検索時大文字・小文字無効


setsmartcase” 検索時大文字・小文字自動判別


” 見つかったアイテムを自動的に中央に


nmap

 n nzz

nmap

 N Nzz

” —– タブとインデント ————————-


settabstop

=4

” <Tab>に対応する空白数


setshiftwidth

=4

” インデントに使われる空白数


setsofttabstop

=4

” タブとして使われる空白数


setautoindent” 自動インデント


setsmartindent” スマートインデント


" ===== 動作設定 =================================

” —– バックアップ —————————–


setbackup” バックアップ有効


 TODO

:フォルダがあるかどうか調べる


ifhas(“win32”)


setbackupdir

=d

:

/kt/Backup

else


setbackupdir

=~/.backup

endif


” —– クリップボード —————————


nmap<C-R>

*

<C-O>

"*p

nmap

 "*yy   V"*y

ifhas(“win32unix”)” cygwinの事です


nnoremap

 "*p :r!getclip

<CR>


vnoremap

 "*y :!putclip

<CR>

u:echo 'copyed'

<CR>


elseifhas(“unix”)


if$TERM==“screen”


nnoremap

 "*p  i

<C-O>

:!screen -X paste .

<CR>


vnoremap

 "*y  :w! ~/tmp/vim-clipboard

<CR>

:!screen -X readbuf ~/tmp/vim-clipboard

<CR>

:echo 'copyed'

<CR>


else


nnoremap

 "*p  :r ~/tmp/vim-clipboard

<CR>


vnoremap

 "*y  :w! ~/tmp/vim-clipboard

<CR>

:echo copyed'

<CR>


endif


endif


” —– screen関係の設定 ————————-


if

 &term

=~“screen”


augroup

 IsTerminal

autocmdVimLeave

 *

silent

! exe

‘!echo -n “^[k’.

  &

shell.‘^[¥¥”‘


autocmdBufEnter

 *

silent

! exe

‘!echo -n “^[k’.“vim:%”.‘^[¥¥”‘


augroup

 END

endif


" ===== 印刷設定 =================================

” set printfont=”ヒラギノ” -> gvimrc


" ===== ファイル関連設定 =========================

” —– テンプレート —————————–


augroup

 LoadTemplate

autocmdBufNewFile

 *.pl

0

r ~/etc/template/template

.

pl

autocmdBufNewFile

 *.php

0

r ~/etc/template/template

.

php

autocmdBufNewFile

 *.cpp

0

r ~/etc/template/template

.

cpp

autocmdBufNewFile

 *.h

0

r ~/etc/template/template

.h


augroup

 END

” —– ファイル別設定 —————————


augroup

 filetypedetect

autocmdBufNewFile

,

BufRead

 *.txt :

setf

 txt

autocmdBufNewFile

,

BufReadPre

 *.howm :

setfileformats

=dos

,

unix

autocmdBufNewFile

,

BufReadPost

 *.pl :

setfiletype

=perl

autocmdBufNewFile

,

BufReadPost

 *.pm :

setfiletype

=perl

autocmdBufNewFile

,

BufRead

 *.pl :map

<F5>

 :!perl

%:p

<CR>

autocmdBufNewFile

,

BufRead

 *.pm :map

<F5>

 :!perl

%:p

<CR>

autocmdBufNewFile

,

BufRead

 *.php :map

<F5>

 :!php

%:p

<CR>

autocmdBufNewFile

,

BufRead

 *.tex :map

<F5>

 :

call

 PreviewTeX()

<CR>


augroup

 END

let

 php_baselib

=1


let

 php_htmlInString

=1


let

 php_folding

=1


" ===== プラグイン設定 ===========================

” —– howm ————————————-


ifhas(“win32”)


let

 g:howm_dir

=“d:/kt/howm/”


else


let

 g:howm_dir

=“~/howm/”


endif


let

 g:howm_filename

=“%Y-%m.howm”


let

 g:howm_fileencoding

=“utf-8”


let

 g:howm_removeEmpty

=1


let

 g:howm_instantpreview

=1


” —– PHPManual ——————————–


auBufNewFile

,

BufRead

 *.php

map

 K ¥P

” —– その他のプラグイン ———————–


runtime

 ftplugin/man

.vim


let

 keisen_type

=2


" ===== 色設定 ===================================

sett_Co

=16

ifhas(“gui”)

gui

endif


colorscheme

 torte

” —– 色の宣言(上書き) ————————-


hi

 StatusLine

guibg

=

#4242ffguifg

=white

gui

=

bold


hi

 Title

guibg

=lightblue

guifg

=white

ctermbg

=lightblue

ctermfg

=white

gui

=

bold


hi

 Comment

ctermfg

=darkgreen

guifg

=lightgreen

hi

 Statement

guifg

=lightyellow

hi

 Type

ctermfg

=blue

guifg

=lightcyan

hi

 Label

guifg

=

#eeee55guibg

=

#333300ctermbg

=darkyellow

ctermfg

=white

hi

 Pmenu

ctermbg

=darkgray

ctermfg

=white

guibg

=darkgray

guifg

=white

hi

 PmenuSel

ctermbg

=lightblue

ctermfg

=white

guibg

=lightblue

guifg

=white

hi

 PmenuSbar

ctermbg

=darkgray

ctermfg

=lightgray

guibg

=darkgray

guifg

=lightgray

hi

 PmenuThumb

ctermbg

=darkgray

ctermfg

=lightgray

guibg

=darkgray

guifg

=lightgray

hi

 TabLine

ctermbg

=black

ctermfg

=darkgray

gui

=

bold


hi

 TabLineFill

ctermbg

=darkgray

ctermfg

=black

gui

=

underline


hi

 TabLineSel

ctermbg

=blue

ctermfg

=white

” —– 色の宣言(オリジナル) ———————


hi

 Label2

guifg

=

#e0b611ctermfg

=yellow

hi

 Label3

guifg

=

#b08d33ctermfg

=darkyellow

hi

 Bold

gui

=

bold


hi

 Italic

gui

=

italic


hi

 Striken

guifg

=

#ddddddctermfg

=gray

hi

 HR

guifg

=gray

ctermfg

=darkgray

hi

 SuperHR

guifg

=lightgray

guibg

=darkcyan

gui

=

italicctermfg

=lightgray

ctermbg

=blue

hi

 Citation

guibg

=

#222200guifg

=lightyellow

ctermbg

=darkyellow

ctermfg

=black

hi

 TabCloseBox

ctermbg

=darkred

ctermfg

=white

hi

 RO

ctermbg

=red

ctermfg

=white

guifg

=white

guibg

=magenta

” —– 文法定義(見出し) ————————-


auSyntax

 *

syntaxmatch

 Label

display“^¥* .*”


auSyntax

 *

syntaxmatch

 Label2

display“¥t¥* .*”


auSyntax

 *

syntaxmatch

 Label3

display“¥t¥t¥* .*”


auSyntax

 *

syntaxmatch

 Label2

display“^[¥t  ]*[・□■○●][^・].*”


auSyntax

 *

syntaxmatch

 Label

display“^[・□■○●][^・].*”


auSyntax

 *

syntaxmatch

 Label2

display“^[¥t  ]*¥*¥* .*”


auSyntax

 *

syntaxmatch

 Label3

display“^[¥t  ]*¥*¥*¥* .*”


” au Syntax * syntax match HR display “.*—–.*”


auSyntax

 * syntax match SuperHR display ".*=====.*"

” —– 文法定義(ハイライト) ———————


auSyntax

 *

syntaxmatch

 Bold

display“¥*¥*.*¥*¥*”


auSyntax

 *

syntaxmatch

 Bold

display<b>.*<¥/b>”


auSyntax

 *

syntaxmatch

 Italic

display“__.*__”


auSyntax

 *

syntaxmatch

 Italic

display<i>.*<¥/i>”


auSyntax

 *

syntaxmatch

 Striken

display<s>.*<¥/s>”


auSyntax

 * syntax region Citation display start=".*>>>" end="<<<"

" ===== 以下、関数 ===============================

” —– タブライン ——————————-


function

 MyTabLine

()


let

 s

=


let

 tabname

=


for

 i

inrange(

tabpagenr

(‘$’))


let

 tabname

=(

i

+1).‘:’.bufname(

tabpagebuflist

(

i

+1)

[tabpagewinnr

(

i

+1)1

]

)


let

 s

.=‘%’.(

i

+1).‘T’“マウスクリック用


if

 i

+1==tabpagenr()


let

 s

.=‘%#TabLineSel#/ ‘.

 tabname

.‘ %#TabCloseBox#%999X[X]%X%#TabLineSel# ¥’


else


let

 s

.=‘%#TabLine#/ ‘.

 tabname

.‘ %’.(

i

+1).‘X[X]%X ¥’


endif


endfor


let

 s

.=‘%#TabLineFill#%T%=vim 7.0’


return

 s

endfunction


function

 PreviewTeX

()


exec“!platex -kanji=utf8 -output-directory=”.

 &backupdir

.” “.

 expand

(“%:p”)


exec“silent ! start “.

 &backupdir

.“/”.

 expand

(“%:t:r”).“.dvi”


endfunction


					

Subversion利用時に”Can’t recode string”エラーが発生することに対する対処法。

 Windows機にあったレポジトリをDebian機に移行したところ、日本語を含むファイルが通信できなくなりました。
 リポジトリの再配置やチェックアウトを行おうとすると、

svn: Can’t recode string

というエラーが出ます。ただ、Debian側で

# svnlook tree /mnt/repos/書類

とすると、ファイルが表示されてるので、ちゃんとリポジトリには格納されているみたいです。(Debian-surgeのzshは現在Unicodeに対応していないので「書類」の部分は化けますが大丈夫です。無理だったら、"svnlook?"だけ書いたshファイルを作って試してみるといいかも。)

良くインターネット上に書いてある対処法に

# export LANG=ja_JP.eucJP

すれば良い、と書いてありますのでまずはこれを試してみます。

 とりあえず、inetd経由で起動することになっているsvnを止めます。
% sudo vi /etc/inetd.conf

# svn stream tcp nowait svn /usr/sbin/tcpd /usr/bin/svnserve -i -r /mnt/repos
(コメントアウトする)

% sudo killall -HUP inetd
んで、daemonとして起動してみる。
% su
# LANG=ja_JP.UTF-8 /usr/bin/svnserve -d -r /mnt/repos

 これで日本語ファイルも通信できました。LANG=ja_JP.UTF-8にするためにはDebianにUTF-8ロケールを追加しなければいけません。方法はこのページが詳しいです。
 またdaemonとして起動するために、引数は-dと成ってるのに注意してください。

 で、これで日本語ファイルも扱えるようになったんですが、ただでさえメモリの少ない機(というか玄箱)なので、daemonではなくてinetd経由でどうしても起動したいのです。
 が、ここで迷う。svnserveはユーザーsvnとして起動するのですが、どこでLANGを設定すればいいんだろう。ホームディレクトリすらないしなぁ。
/etc/profileはbashだよなぁ。/etc/environmentもja_JP.UTF-8になってる。

 というわけで、いろいろ試してみたけど分かりませんでした。もっと調べても良かったんですけど、etchに成ったときに変わるかもしれないみたいなんで、断念。

とりあえずの対処法を書いておきます。
% su
# vi /system/svnservejp.sh (どこでもいいです)

#!/bin/sh

export LANG=”ja_JP.UTF-8″
/usr/bin/svnserve -i -r /mnt/repos

# chmod u+x /system/svnservejp.sh
# vi /etc/inetd.conf

svn stream tcp nowait svn /usr/sbin/tcpd /system/svnservejp.sh

# killall -HUP inetd

これでよし。接続のたびにシェルが一個無駄だけど、まぁ仕方ないか。この方法はcronやメールスクリプトでも使えるので覚えておいて損はないですよ。

「正規表現」と「ポート一覧」

「正規表現」と「ポート一覧」のCheat sheetを公開しました。

http://www.kcrt.net/projA4

こんな時間に書き込んでるけど、今まで起きてたわけではなく、むしろその逆で(以下略

ktLyrics 超α v.0.01

Download file

というわけで、ktLyricsの超α版です。カスタマイズ機能くらい作りたかったけど、時間がなくて出来なかったよ……。内部的には出来てるんで、あとは設定ファイルの読み込み組むだけなんだけど、前回のエントリから一週間たったので公開。未保証です。

正式な完成はいつになるんだろう…。

The Code Project – API hooking revealed – System

APIフックの方法らしい。英語なんで読むのたるいため未確認。

2004-06-02

■ [prog] プログラマの進化 (The Evolution of a Programmer)
http://apollo.u-gakugei.ac.jp/~sunaoka/misc/evolution/evolution_jp.txt
進化って言うか退化だねぇ。

■ [link] The Condom Dress
http://www.bizarrenews.com/condom/dress.asp
コンドームで出来たドレス。すっげーぬるぬるしてそう…。新婚さんにぜひ。

■ [link] Legal Age of Consent
http://www.ageofconsent.com/ageofconsent.htm
国別性交制限年齢表。
チリでは12才から。

■ [link] こどもの事典 人体解剖図鑑
http://www.yujin-net.com/item/gacha_200405_017.html
これをほしがる子供は病んでいると思う。

■ [link] 3食マクドナルドだけで過ごしたらどうなる?という映画がヒット中
http://www.eiga.com/buzz/040601/06.shtml
どうなるって…割と普通に死にますよ。

■ [link] 日本アニメ『ヒカルの碁』が韓国に
http://japanese.joins.com/html/2004/0528/20040528162309700.html

同アニメは韓国の事情に合わせ、日本色の強いシーンなどが修正される。また主人公も、ヒカルはシン・ジェハに、サイはチャランという名に変えて放映される。

……(‘Д`);

■ [link] 「天才」の真意どこに ウィニー開発者起訴
http://www.asahi.com/kansai/news/OSK200405310029.html

ウィニーの紹介もしてきた上中級者向け雑誌「ネットランナー」発行元のソフトバンクパブリッシング広報は

↑誤植発見