mi

提供: MacWiki
移動: 案内検索

mi とは?[編集]

プレーンテキストを扱う定番のエディタ。

紹介[編集]

  • フリーですが、任意の料金支払い歓迎
  • XHTML (HTML)、TeX、C/C++言語、Java、PerlAppleScript などのシンタックスカラーリングなどに対応したモードがあり、モード毎に設定をカスタマイズできる。
    • その他様々なモードを作者のウェブサイトを通してダウンロードすることができる
    • C言語モードでは、ローカル変数やグローバル変数を自動的に認識し色付けする
  • 正規表現による文字列の検索・置換が可能(複数ファイルにわたる検索置換もできる)
  • ツールと呼ばれる、強力なマクロ機能がある。様々な組み込み機能を用いた簡単なものから、AppleScript やシェルスクリプトを用いた複雑なものまで実行でき、独自のツールを作成できる。
  • キーワードの補完入力機能
  • 様々な文字コード、改行コードに対応(最新版(2.1.7b)でユニコード完全対応)
  • キーボードショートカットをほぼ完全にカスタマイズ可能。
  • (タブブラウザのような)タブ式ウインドウ表示対応。
  • { と } とで囲まれたブロック部分選択機能.
    • 他種の(各言語シンタックスの)ブロックに対しては部分選択機能は今のところないもよう.
  • htmlソースではタグで囲まれたブロック部分選択機能

AppleScript[編集]

  • 新規文書 (ウィンドウ) を作成
set theText to "* " & ((current date) as string) & return
tell application "mi"
	activate
	if not (exists front document) then make new document
	if content of front document is not "" then make new document
	set content of front document to theText
end tell
  • 最前面の文書の単語の数や文字数を数え上げる
tell front document of application "mi"
	if not (exists it) then return
	set theText to content of selection object 1 -- 選択範囲
	if theText is "" then set theText to content -- 選択されてなければ書類全体
	display dialog "ワードカウント結果" & return & return & ¬
		"文字数:" & number of every character of theText & return & ¬
		"単語数:" & number of every word of theText & return & ¬
		"段落数:" & number of every paragraph of theText
end tell
  • 開いているすべての文書の単語の数や文字数を数え上げインデックスウィンドウに結果を表示する
tell application "mi"
	activate
	set infoList to {}
	repeat with idx from 1 to number of every document
		repeat 1 times
			if not (exists file of document idx) then exit repeat
			set theText to content of document idx
			set charCount to number of every character of theText
			set wordCount to number of every word of theText
			set paraCount to number of every paragraph of theText
			set end of infoList to {doc:file of document idx, name:name of document idx, nchar:charCount, nword:wordCount, npara:paraCount}
		end repeat
	end repeat
	if infoList is {} then return
	if not (exists indexwindow 1) then
		make new indexwindow with properties {name:"ワードカウント結果"}
		tell indexwindow 1 to set comment of indexgroup 1 to "ファイル(" & (do shell script "date") & ")"
	else
		tell indexwindow 1 to make new indexgroup with properties {comment:"ファイル(" & (do shell script "date") & ")"} at it
	end if
	tell indexwindow 1
		repeat with aDoc in simple_sort(infoList) of me
			set docInfo to "文字数:" & nchar of aDoc & "," & ¬
				"単語数:" & nword of aDoc & "," & ¬
				"段落数:" & npara of aDoc
			make new indexrecord with properties {file:doc of aDoc, paragraph:npara of aDoc, comment:docInfo} at first indexgroup
		end repeat
	end tell
end tell
-- http://www.macosxautomation.com/applescript/sbrt/sbrt-05.html
on simple_sort(my_list)
	set index_list to {}
	set sorted_list to {}
	set check_list to {}
	repeat with my_item in my_list
		set end of check_list to (name of my_item) as text -- name でソート(name の代わりに nchar, nword, npara としてもいい)
	end repeat
	repeat (count items of my_list) times
		set low_item to ""
		repeat with idx from 1 to count items of my_list
			if idx is not in index_list then
				set this_item to item idx of check_list
				if low_item is "" then
					set low_item to this_item
					set low_item_index to idx
				else if this_item comes before low_item then
					set low_item to this_item
					set low_item_index to idx
				end if
			end if
		end repeat
		set end of sorted_list to item low_item_index of my_list
		set end of index_list to low_item_index
	end repeat
	return sorted_list
end simple_sort

参考になるサイト[編集]

Wiki内の関連ページ[編集]