TextEdit

提供: MacWiki
移動: 案内検索

テキストエディット (TextEdit) とは?[編集]

Mac OS X に標準搭載されているテキストエディタで、リッチテキスト、標準テキスト(プレーンテキスト)、ワード、HTMLなどのフォーマットの文書を編集、表示できる。

編集モード[編集]

テキストエディットにはリッチテキストと標準テキストの編集モードがあり、フォーマットメニューの「標準テキストにする」あるいは「リッチテキストにする」で編集モードを切り替える。 新規文書の初期状態は、デフォルトではリッチテキスト、ウィンドウサイズ等になっているが、環境設定で変更することができる。

リッチテキストの編集モード[編集]

文字ごとにボールド(太字)、アンダーライン(下線)などの装飾、フォント、文字色、文字サイズなどのスタイルを設定でき、表、リスト、リンクの他、画像、動画、音声などを添付した文書も作成できる。(添付データ付き)リッチテキストの他、ワードやHTML等の文書フォーマットで保存できる。

  • 文字のスタイルはフォーマットメニューや文書ウィンドウ上部のスタイルメニューで設定できる。よく使うスタイルをスタイルメニューに登録するには、スタイルメニュー > その他を選択し、文書中の登録したいスタイルが表示された状態で「よく使う項目に追加」ボタンを押す。スタイルメニューから削除したい場合は、同様にスタイルメニュー > その他を選択し、よく使うスタイルのポップアップメニューから削除したいスタイルを選び「よく使う項目から取り除く」ボタンを押す。
  • 表やリストはフォーマットメニューから作成できる
  • WebブラウザSafari等)の表示ページ内のリンクは、ドラッグ&ドロップ操作すれば文書内へペーストできる
  • option + tabのキーボードショートカットで箇条書きのモードになり、さらにoption + tabを続ければ深い階層になる

標準テキストの編集モード[編集]

プレーンテキストとして文書を編集するモードで、文字ごとにスタイルを設定したり、表や画像等を添付することはできない。Unicode(UTF-8)、Unicode(UTF-16)、日本語(Mac OS)等のエンコーディングで保存できる。

  • HTMLやC言語等のソースコードは、標準テキストのモードで保存します。そのような目的でテキストエディットをよく使う場合、環境設定で保存時のエンコーディングをUnicode(UTF-8)などに設定しておくといいかもしれません。
  • HTMLやリッチテキスト書類を開くとデフォルトでは解釈して表示され、その後に編集モードを標準テキストに切り替えてもソースコードは表示されない。ソースコードをそのまま表示させるには環境設定でコマンドを無視するように設定する。
  • WebブラウザSafari等)の表示ページ内のリンク(URLの文字列)は、ドラッグ&ドロップ操作すれば文書内へペーストできる

キーボードショートカット[編集]

Emacsのようなショートカットキーが使える。文字色、フォントなどのスタイル設定のみをコピーやペーストすることもできる。

キーボードショートカットの例
ショートカット 機能 説明
control + F 前方へ一文字すすむ [→]
control + B 後方へ一文字もどる [←]
control + P 上の行へ [↑]
control + N 下の行へ [↓]
control + A 段落の最初へ 行頭へ
control + E 段落の最後へ 行末へ
control + V 下のページへ 文末へ
control + D 一文字削除 前方へすすむ デリート
control + H 一文字削除 後方へもどる バックスペース
control + T 文字の入れ替え カーソルの左右の文字を入れ替えます
control + Y カットされていたテキストが挿入される command + Vと使い分けると素晴らしい
control + K カーソル位置から行末までカット control + Yでカットされていたテキストが挿入される
control + O カーソル位置に改行を挿入 カーソルは移動しない
esc 単語の途中で候補を示す ヘルプにはOpt-ESCとあるが?
command + option + C スタイル設定のみをコピー
command + option + V スタイル設定のみをペースト
shift + command + T リッチテキストあるいは標準テキストにする
control + command + D 辞書パネルを表示する コンテクストメニューSpotlightDashboardを使ってもいいでしょう

AppleScript[編集]

  • 新規文書 (ウィンドウ) を作成
set theText to "* " & ((current date) as string) & return -- 新規文書に書き込む文字列(ここでは日時)
tell application "TextEdit"
	activate
	if not (exists front document) then make new document
	if text of front document is "" then
		set theDoc to front document
	else
		set theDoc to make new document
	end if
	set text of theDoc to theText -- 文字列を書き込む
	set properties of text of theDoc to {color:{65535, 0, 0}, size:12, font:"Osaka-Mono"} -- 文字のサイズなどを指定できる(この指定は維持されない)
end tell
  • 最前面の文書に新規段落を作成
-- set theText to "* " & ((current date) as string) -- 新規段落として書き込む文字列(ここでは日時)
set theText to "* " & (do shell script "date '+%F %R (%Z)'") -- date コマンドを利用
tell application "TextEdit"
	activate
	if not (exists front document) then make new document
	tell front document
		if (exists last character) and (last character is not return) then ¬
			make new character at after last character of it with data return -- at after last 何々 の代わりに at end of 何々s と書いてもいい
		make new paragraph at after last paragraph of it with data theText ¬
			with properties {size:14, color:{0, 65535, 0}, font:"ComicSansMS"} -- 新規段落の文字列を書き込む(この指定は維持される)
		make new character at after last character of it with data return ¬
			with properties {color:{0, 0, 0}, font:"Osaka-Mono"} -- 維持されている指定を変更
	end tell
end tell

コード内で指定している文字色などのスタイル情報は、新規文書に調べたい適当な色、フォントの文字列を入力してから以下のようなスクリプトをAppleScriptエディタ(スクリプトエディタ)で実行することで調べられます(結果のところに表示される)。attribute run は同じ属性の文字の連なり(スタイル情報が同じ文字列?)のことで、最前面の文書(front document)の最初(first)の文字列を調べている(もちろん attribute run のところを代わりに character や word などとしてもいい)

tell front document of application "TextEdit" to get properties of first attribute run
  • 単語の数や文字数を数え上げる
tell front document of application "TextEdit"
	set charCount to number of characters -- characters の代わりに every character でもいい
	-- set charCount to count characters -- count を使ってもいい
	set wordCount to number of words -- words の代わりに every word でもいい
	-- set wordCount to count words
	set paraCount to number of paragraphs -- paragraphs の代わりに every paragraph でもいい
	-- set paraCount to count paragraphs
	display dialog "ワードカウント結果" & return & return & ¬
		"文字数:" & charCount & return & ¬
		"単語数:" & wordCount & return & ¬
		"段落数:" & paraCount
end tell
  • 最前面の文書を保存
set theName to "untitled.rtfd" -- デフォルトのファイル名(添付データ付きリッチテキスト)
-- set theName to "untitled.rtf" -- リッチテキスト(iText Express や Jedit X など他のソフトウェアでも扱えるフォーマット)
-- set theName to "untitled.txt" -- 標準テキスト
tell application "TextEdit"
	activate
	save front document in (path to desktop folder as string) & theName -- パスを指定して保存(同名のファイルがあれば上書きされる)
	-- save front document in (choose file name default name theName) -- ファイル名を尋ねる
	-- save front document in (choose file name default name theName default location (path to desktop folder)) -- ファイル名を尋ねる(保存場所を指定)
end tell
set theName to "untitled" -- デフォルトのファイル名(拡張子含まない)
tell application "TextEdit"
	activate
	set name of front document to theName
	set path of front document to POSIX path of ((path to desktop folder as string) & theName)
end tell
tell application "System Events"
	keystroke "s" using {shift down, command down} -- 別名で保存(Dvorak-Qwertyだとsの代わりにo)
	
	-- システム環境設定でキーボード操作など設定を変更すればポップアップメニューも操作できる
	(*
	set leftArrow to ASCII character 28
	set rightArrow to ASCII character 29
	set upArrow to ASCII character 30
	set downArrow to ASCII character 31
	repeat 7 times -- タブキーでフォーマットのポップアップメニューまで移動
		keystroke tab
	end repeat
	repeat 3 times -- 矢印キーでWebページ(.html)を選択
		keystroke downArrow
	end repeat
	keystroke return -- ポップアップメニューの選択の決定
	*)
	
	(*
	tell menu bar 1 of application process "TextEdit"
		tell menu "フォーマット" of menu bar item 5
			if exists menu item "標準テキストにする" then pick menu item "標準テキストにする"
		end tell
	end tell
	-- keystroke "t" using {shift down, command down}
	tell sheet 1 of window 1 of application process "TextEdit"
		if exists static text "標準テキストに変換しますか?" then click button "OK"
	end tell
	*)
	
	keystroke return -- デフォルトの保存ボタンを実行
end tell
  • HTML文書に変換する(HTMLのソースコードを表示する)

textutil コマンドを利用して最前面の文書からHTML文書を生成します。表のHTMLコードを作成するときなどに便利かもしれません。

tell application "TextEdit"
	activate
	if not (exists front document) then return
	if not (exists path of front document) then
		-- 最前面の文書が未保存の新規文書の場合 temporary items フォルダに保存
		set tmpName to "TextEdit_tmp" & (do shell script "date '+%Y%m%d'") -- 保存ファイル名(拡張子含まない)
		-- set tmpName to do shell script "uuidgen"
		save front document in (path to temporary items from user domain as string) & tmpName
	else
		-- 最前面の文書が既存の文書の場合
		save front document
	end if
	set thePath to path of front document -- 保存した処理対象のファイルのパス
	set newText to do shell script "textutil -convert html -stdout " & quoted form of thePath
	set newDoc to make new document -- 新規文書として作成する場合
	-- set newDoc to front document -- 元の文書と置き換える場合
	set text of newDoc to newText
end tell
tell application "TextEdit"
	activate
	if not (exists front document) then return
	if not (exists path of front document) then
		-- 最前面の文書が未保存の新規文書の場合 temporary items フォルダに保存
		set tmpName to "TextEdit_tmp" & (do shell script "date '+%Y%m%d'") -- 保存ファイル名(拡張子含まない)
		-- set tmpName to do shell script "uuidgen"
		save front document in (path to temporary items from user domain as string) & tmpName
	else
		-- 最前面の文書が既存の文書の場合
		save front document
	end if
	set thePath to path of front document -- 保存した処理対象のファイルのパス
	-- open コマンド(-fオプション)を利用する
	-- テキストエディットで開く場合、HTMLソースを解釈してしまい期待する動作にならないかもしれません
	do shell script "textutil -convert html -stdout " & quoted form of thePath & " | open -tf"
end tell

関連するソフトウェア[編集]

  • rtfd2html

RTFD(添付データ付きリッチテキスト)ファイルをhtmlファイルに変換するアプリケーション。textutilコマンドのラッパー。

http://pencilsoftware.com/rtfd2html.html

  • Whisker

テキストファイルのエンコーディングを推測するアプリケーション。PerlのEncode::Guess を利用している。

http://tama-san.com/?p=1924

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