<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E3%81%8C%E3%81%8A%E3%81%B3%E3%82%93</id>
	<title>ArchWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E3%81%8C%E3%81%8A%E3%81%B3%E3%82%93"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/%E3%81%8C%E3%81%8A%E3%81%B3%E3%82%93"/>
	<updated>2026-04-14T04:29:27Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Wayland&amp;diff=40188</id>
		<title>Wayland</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Wayland&amp;diff=40188"/>
		<updated>2025-04-18T13:59:19Z</updated>

		<summary type="html">&lt;p&gt;がおびん: /* コンポジタ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィカルユーザーインターフェイス]]&lt;br /&gt;
[[en:Wayland]]&lt;br /&gt;
[[es:Wayland]]&lt;br /&gt;
[[pt:Wayland]]&lt;br /&gt;
[[ru:Wayland]]&lt;br /&gt;
[[zh-hans:Wayland]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|カーネルモード設定}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|スクリーンショットの取得#Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://wayland.freedesktop.org/ Wayland] はディスプレイサーバープロトコルです。[[Xorg|X Window System]] の後継となることを目指しています。[[Wikipedia:Wayland_(display_server_protocol)#Differences_between_Wayland_and_X|Wikipedia に Wayland と Xorg の比較]] が掲載されています。&lt;br /&gt;
&lt;br /&gt;
Wayland プロトコルを使用するディスプレイサーバは、[[Wikipedia:ja:コンポジット型ウィンドウマネージャ|コンポジット型ウィンドウマネージャ]] としても機能するため、&#039;&#039;&#039;コンポジタ&#039;&#039;&#039; と呼ばれます。以下に[[#コンポジタ|Wayland コンポジタのリスト]]を示します。&lt;br /&gt;
&lt;br /&gt;
ネイティブな X11 アプリケーションをシームレスに動かすための後方互換性として、[[#Xwayland|Xwayland]] を使うことができます。これは Wayland に X サーバを提供します。&lt;br /&gt;
&lt;br /&gt;
== 要件 ==&lt;br /&gt;
&lt;br /&gt;
ほとんどの Wayland コンポジタは、[[カーネルモード設定]]を利用しているシステムでのみ動作します。Wayland それ自体はグラフィカルな環境を提供しません。ゆえに、Wayland に加えてコンポジタ (以下のセクションを参照)、あるいは、コンポジタを含むデスクトップ環境 (例: [[GNOME]]、[[Plasma]]) が必要となります。&lt;br /&gt;
&lt;br /&gt;
GPU ドライバと Wayland コンポジタは、同一のバッファ API に対応している場合に互換性があります。主要な API は2つ存在します: [[Wikipedia:Generic Buffer Management|GBM]] と [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=XDC2016-Device-Memory-API EGLStreams] です。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! バッファ API !! GPU ドライバーのサポート !! Wayland コンポジタのサポート&lt;br /&gt;
|-&lt;br /&gt;
| GBM || [[NVIDIA]] &amp;lt; 495* 以外の全てのドライバー || 全て&lt;br /&gt;
|-&lt;br /&gt;
| EGLStreams || [[NVIDIA]] || [[GNOME]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: * Nvidia ≥ 495 は EGLStreams と GBM の両方をサポートします。[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=NVIDIA-495.44-Linux-Driver]&lt;br /&gt;
&lt;br /&gt;
NVIDIA が GBM のサポートを導入して以来、NVIDIA ≥ 495 で多くのコンポジタ (Mutter と KWin を含む) がデフォルトで GBM を使用し始めました。GBM は一般的にベターでより幅広いサポートがあると考えられています。EGLStreams がサポートされていた理由は、NVIDIA GPU をプロプライエタリドライバで Wayland 下で使用する代替の方法を NVIDIA が提供しなかったからだけです。さらに、GBM が NVIDIA に導入された後、KWin は [https://invent.kde.org/plasma/kwin/-/merge_requests/1638 EGLStreams のサポートを打ち切りました]。&lt;br /&gt;
&lt;br /&gt;
人気なデスクトップ環境/コンポジタと、NVIDIA によってまだサポートされている GPU を使用している場合、おそらくすでに GBM バックエンドを使用しています。確認するには、次を実行してください: {{ic|journalctl -b 0 --grep &amp;quot;renderer for&amp;quot;}}。GBM をバックエンドとして強制的に使用させるには、次の[[環境変数]]を設定してください:&lt;br /&gt;
&lt;br /&gt;
 GBM_BACKEND=nvidia-drm&lt;br /&gt;
 __GLX_VENDOR_LIBRARY_NAME=nvidia&lt;br /&gt;
&lt;br /&gt;
== コンポジタ ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;タイル型&#039;&#039;&#039;, &#039;&#039;&#039;スタック型&#039;&#039;&#039;, &#039;&#039;&#039;ダイナミック型&#039;&#039;&#039; の違いについては、[[ウィンドウマネージャ#種類]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== スタック型 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Enlightenment]]|[[Enlightenment]]|[[Enlightenment#手動]] を参照してください。詳細: [https://git.enlightenment.org/enlightenment/enlightenment/src/branch/master/README.md] [https://www.enlightenment.org/about-wayland]|https://www.enlightenment.org/|{{Pkg|enlightenment}}}}&lt;br /&gt;
* {{App|hikari|FreeBSD で活発に開発されている [[cwm]] にインスパイアされた wlroots ベースのコンポジタ。Linux もサポートしています。|https://hikari.acmelabs.space/|{{AUR|hikari}}}}&lt;br /&gt;
* {{App|KDE [[w:KWin|KWin]]|[[KDE#Plasma の起動]] を参照。|https://userbase.kde.org/KWin|{{Pkg|kwin}}}}&lt;br /&gt;
* {{App|Liri Shell|[[Liri]] の一部、しかし、QtQuick と QtCompositor を使って Wayland 用のコンポジタとして作られています。|https://github.com/lirios/shell|{{AUR|liri-shell-git}}}}&lt;br /&gt;
* {{App|[[labwc]]|Openbox にインスパイアされた wlroots ベースのコンポジタ。|https://github.com/labwc/labwc|{{Pkg|labwc}}}}&lt;br /&gt;
* {{App|[[w:Mutter (software)|Mutter]]|[[GNOME#GNOME の起動]] を参照。|https://gitlab.gnome.org/GNOME/mutter|{{Pkg|mutter}}}}&lt;br /&gt;
* {{App|wayfire|[[Compiz]] にインスパイアされ、wlroots に基づく 3D コンポジタ。|https://wayfire.org/|{{AUR|wayfire}}}}&lt;br /&gt;
* {{App|[[Weston]]|正しさ、信頼性、予測可能性、性能のために設計された Wayland コンポジタ。|https://gitlab.freedesktop.org/wayland/weston|{{Pkg|weston}}}}&lt;br /&gt;
* {{App|wio|Plan 9 のリオデスクトップのルックアンドフィールを複製することを目的とする wlroots ベースのコンポジタ。|https://gitlab.com/Rubo/wio|{{AUR|wio-wl}}}}&lt;br /&gt;
&lt;br /&gt;
=== タイル型 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Cagebreak]]|cage をベースに、[[ratpoison]] にインスパイアされています。|https://github.com/project-repo/cagebreak|{{AUR|cagebreak}}}}&lt;br /&gt;
* {{App|niri|スクロール可能なタイル型 Wayland コンポジタ。|https://github.com/YaLTeR/niri/|{{Pkg|niri}}}}&lt;br /&gt;
* {{App|Polonium|[[KDE]] 6 上でタイル型ウィンドウを使用できる、Bismuth の後継。|https://github.com/zeroxoneafour/polonium|{{AUR|kwin-polonium}}}}&lt;br /&gt;
* {{App|[[Qtile]]|Python で記述および設定されたフル機能のハッキング可能なタイリングウィンドウマネージャーと Wayland コンポジタ。|https://github.com/qtile/qtile|{{Pkg|qtile}}}}&lt;br /&gt;
* {{App|[[Sway]]|wlroots ベースの [[i3]] 互換 Wayland コンポジタ。|https://github.com/swaywm/sway|{{Pkg|sway}}}}&lt;br /&gt;
* {{App|SwayFx|魅力的な視覚効果機能を追加した [[Sway]]。|https://github.com/WillPower3309/swayfx|{{AUR|swayfx}}}}&lt;br /&gt;
* {{App|Velox|swc ベースのシンプルなウィンドウマネージャです。[[dwm]] と [[xmonad]] の影響を受けています。|https://github.com/michaelforney/velox|{{AUR|velox-git}}}}&lt;br /&gt;
&lt;br /&gt;
=== ダイナミック型 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[dwl]]|wlroots ベースの [[dwm]] ライクな Wayland コンポジタ。|https://codeberg.org/dwl/dwl|{{AUR|dwl}}}}&lt;br /&gt;
* {{App|[[Hyprland]]|見た目を犠牲にしないダイナミックなタイリング Wayland コンポジタ。|https://hyprland.org|{{Pkg|hyprland}}}}&lt;br /&gt;
* {{App|japokwm|wlroots ベースの、レイアウト作成を中心とした動的な Wayland タイリングコンポジタ。|https://github.com/werererer/japokwm|{{AUR|japokwm-git}}}}&lt;br /&gt;
* {{App|[[river]]|dwm と [[bspwm]] にインスパイアされた動的なタイル型 Wayland コンポジタ。|https://codeberg.org/river/river|{{Pkg|river}}}}&lt;br /&gt;
* {{App|Vivarium|wlroots を使用するダイナミックタイル型 Wayland コンポジタ。[[xmonad]] にインスパイアされたデスクトップセマンティクスを持ちます。|https://github.com/inclement/vivarium|{{AUR|vivarium-git}}}}&lt;br /&gt;
&lt;br /&gt;
=== その他 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Cage|キオスクのような単一のフルスクリーンアプリケーションを表示します。|https://www.hjdskes.nl/projects/cage/|{{Pkg|cage}}}}&lt;br /&gt;
* {{App|nwg-shell|Sway と Hyprland Wayland コンポジタのための GTK ベースシェル。|https://github.com/nwg-piotr/nwg-shell|{{Pkg|nwg-shell}}}}&lt;br /&gt;
* {{App|kiwmi|完全にプログラミング可能な Wayland コンポジタ。|https://github.com/buffet/kiwmi|{{AUR|kiwmi-git}}}}&lt;br /&gt;
* {{App|phoc|モバイル端末のための wlroots ベースの小さなコンポジタ。|https://gitlab.gnome.org/World/Phosh/phoc|{{Pkg|phoc}}}}&lt;br /&gt;
&lt;br /&gt;
上記のいくつかは [[ディスプレイマネージャ]] をサポートする場合があります。&lt;br /&gt;
それらがどのように開始されるかを {{ic|/usr/share/wayland-sessions/&#039;&#039;compositor&#039;&#039;.desktop}} を見て確認してください。&lt;br /&gt;
&lt;br /&gt;
== ディスプレイマネージャ ==&lt;br /&gt;
&lt;br /&gt;
Wayland コンポジタの実行をサポートしている[[ディスプレイマネージャ]]は以下の表の通りです。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! 名前&lt;br /&gt;
! 何で動作するか&lt;br /&gt;
! 説明&lt;br /&gt;
|-&lt;br /&gt;
| {{Pkg|emptty}}&lt;br /&gt;
| TTY&lt;br /&gt;
| TTY で動作するシンプルな CLI ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| [[GDM]]&lt;br /&gt;
| Wayland/Xorg&lt;br /&gt;
| [[GNOME]] ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| [[greetd]]&lt;br /&gt;
| Wayland/Xorg/TTY&lt;br /&gt;
| 最小でありながら柔軟なログインデーモン。&lt;br /&gt;
|-&lt;br /&gt;
| {{Pkg|lemurs}}&lt;br /&gt;
| TTY&lt;br /&gt;
| Rust で書かれた TUI ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| [[LightDM]]&lt;br /&gt;
| Xorg[https://github.com/canonical/lightdm/issues/267]&lt;br /&gt;
| 様々なデスクトップに対応したディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| [[Ly]]&lt;br /&gt;
| TTY&lt;br /&gt;
| C で書かれた TUI ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| [[SDDM]]&lt;br /&gt;
| Wayland/Xorg&lt;br /&gt;
| QML ベースのディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| [[tbsm]]&lt;br /&gt;
| TTY&lt;br /&gt;
| bash のみに依存するシンプルな CLI セッションランチャー。&lt;br /&gt;
|-&lt;br /&gt;
| [[Universal_Wayland_Session_Manager|UWSM]]&lt;br /&gt;
| TTY&lt;br /&gt;
| Systemd のメカニズムを使用するスタンドアローンなコンポジタのための、セッションと XDG autostart のマネージャ。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Xwayland ==&lt;br /&gt;
&lt;br /&gt;
[https://wayland.freedesktop.org/xserver.html Xwayland] は、Wayland の下で実行される X サーバーで、Wayland サポートをまだ提供していないネイティブな [[X11]] アプリケーションに互換性を提供します。これを使用するには、{{Pkg|xorg-xwayland}} パッケージを[[インストール]]します。&lt;br /&gt;
&lt;br /&gt;
Xwayland はコンポジタを介して開始されるため、あなたの使用しているコンポジタのドキュメントを読み、Xwayland との互換性についてや、Xwayland の起動方法に関する指示を確認しておく必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* セキュリティ: Xwayland は X サーバーであるため、 Wayland のセキュリティ機能はありません。&lt;br /&gt;
* パフォーマンス: Xwayland は X11 と[https://openbenchmarking.org/result/2202053-NE-NVIDIARTX35 ほぼ同等のパフォーマンス]を発揮します。しかし、一部のケースで (特に NVIDIA カード上で) パフォーマンスの低下を感じるかもしれません。&lt;br /&gt;
* 互換性: Xwayland は X11 と完全な後方互換性があるわけではありません。一部のアプリケーションは Xwayland 下では正しく動作しない場合があります。}}&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA ドライバ ===&lt;br /&gt;
&lt;br /&gt;
{{Note|バージョン 470 より前の Nvidia ドライバ(例: {{aur|nvidia-390xx-dkms}}) はハードウェア支援のある Xwayland をサポートしておらず、非 Wayland ネイティブなアプリケーションは Wayland セッションでのパフォーマンスが低下します。}}&lt;br /&gt;
&lt;br /&gt;
なお、[[NVIDIA#DRM カーネルモード設定|DRM KMS]] を有効にする必要があります。また、お使いのディスプレイマネージャ(例: [[GDM#Wayland と独自の NVIDIA ドライバ|GDM]])の[https://download.nvidia.com/XFree86/Linux-x86_64/515.48.07/README/xwayland.html 公式ドキュメント]に記載されている情報も見てください。&lt;br /&gt;
&lt;br /&gt;
=== Kwin Wayland デバッグコンソール ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|kwin}} を使用している場合、以下を実行すると、どのウィンドウが Xwayland とネイティブ Wayland を使用しているか、表面、入力イベント、クリップボードの内容などを確認することができます。&lt;br /&gt;
&lt;br /&gt;
 $ qdbus6 org.kde.KWin /KWin org.kde.KWin.showDebugConsole&lt;br /&gt;
&lt;br /&gt;
=== Xwayland アプリケーションであることを視認する ===&lt;br /&gt;
&lt;br /&gt;
アプリケーションが Xwayland 経由で実行されているかどうかを判断するには、{{AUR|extramaus}} を使用します。&lt;br /&gt;
アプリケーションのウィンドウ上にマウスポインタを移動して、マウスポインタが赤くなる場合は、アプリケーションが Xwayland 経由で実行されています。&lt;br /&gt;
&lt;br /&gt;
または、{{pkg|xorg-xeyes}} を使用して、アプリケーションウィンドウ上でマウスポインタを移動するときに、目が動いているかどうかで確認することもできます。&lt;br /&gt;
&lt;br /&gt;
他の方法として、({{Pkg|xorg-xwininfo}} の) &#039;&#039;xwininfo&#039;&#039; をターミナルウィンドウで実行するというものがあります。Xwayland ウィンドウ上にマウスポインタをホバーすると、マウスポインタが + マークに変わります。ウィンドウをクリックすると、xwininfo は情報を表示して終了しますが、ネイティブな Wayland ウィンドウでは何も起こりません。{{ic|Ctrl+C}} を押すことで xwininfo を終了できます。&lt;br /&gt;
&lt;br /&gt;
あるいは、&#039;&#039;xlsclients&#039;&#039; ({{Pkg|xorg-xlsclients}} パッケージ) を使用することもできます。Xwayland で動作中のアプリケーションを全てリストアップするには、{{ic|xlsclients -l}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
== GUI ライブラリ ==&lt;br /&gt;
&lt;br /&gt;
[https://wayland.freedesktop.org/toolkits.html 公式ウェブサイト] で詳細を確認してください。&lt;br /&gt;
&lt;br /&gt;
=== GTK ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|gtk3}} と {{Pkg|gtk4}} パッケージは Wayland バックエンドが有効になっています。GTK ではデフォルトで Wayland バックエンドを使いますが、[[環境変数]]を設定することで Xwayland を使うように上書きできます: {{ic|1=GDK_BACKEND=x11}}。&lt;br /&gt;
&lt;br /&gt;
テーマの問題は [[GTK#Wayland バックエンド]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Qt ===&lt;br /&gt;
&lt;br /&gt;
[[Qt]] 5 または 6 で Wayland のサポートを有効化するには、Qt 5 と 6 に対してそれぞれ {{Pkg|qt5-wayland}} または {{Pkg|qt6-wayland}} パッケージをインストールしてください。これで、Qt アプリケーションは Wayland セッション上では Wayland で動作するようになります。&lt;br /&gt;
&lt;br /&gt;
必須ではないはずですが、明示的に Wayland プラグインを使って Qt 5 アプリケーションを動作させるには、[https://wiki.qt.io/QtWayland#How_do_I_use_QtWayland.3F] にあるように、{{ic|1=-platform wayland}} を使用するか、[[環境変数]] {{ic|1=QT_QPA_PLATFORM=wayland}} をセットして下さい。&lt;br /&gt;
&lt;br /&gt;
一方、Wayland セッション上で [[X11]] を使用させるには、{{ic|1=QT_QPA_PLATFORM=xcb}} と設定してください。これは、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。&lt;br /&gt;
また、{{ic|1=QT_QPA_PLATFORM=&amp;quot;wayland;xcb&amp;quot;}} を使用すると、Qt が Wayland を利用できない場合に、代わりに xcb (X11)プラグインを使用させることができます。[https://www.qt.io/blog/2018/05/29/whats-new-in-qt-5-11-for-the-wayland-platform-plugin]&lt;br /&gt;
&lt;br /&gt;
[[sway]] などの一部のコンポジターでは、ネイティブに実行されている Qt アプリケーションの機能が不足している場合があります。たとえば、[https://keepassxc.org KeepassXC] はトレイに最小化できません。これは、アプリケーションを実行する前に {{Pkg|qt5ct}} をインストールし、{{ic|1=QT_QPA_PLATFORMTHEME=qt5ct}} を設定することで解決できます。&lt;br /&gt;
&lt;br /&gt;
=== Clutter ===&lt;br /&gt;
&lt;br /&gt;
Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは {{Pkg|clutter}} パッケージで有効になっています。&lt;br /&gt;
&lt;br /&gt;
Clutter アプリを Wayland 上で動作させるには、環境変数 {{ic|1=CLUTTER_BACKEND=wayland}} を設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== SDL2 ===&lt;br /&gt;
&lt;br /&gt;
SDL2 アプリケーションを Wayland 上で動作させるには、{{ic|1=SDL_VIDEODRIVER=wayland}} を設定してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|1=SDL_VIDEODRIVER=&amp;quot;wayland,x11&amp;quot;}} とすることにより、Wayland が利用できない場合に代わりに X11 ビデオドライバを使用するように SDL2 を設定できます [https://wiki.libsdl.org/SDL2/FAQUsingSDL]。ウィンドウ装飾を有効化するために {{Pkg|libdecor}} をインストールすると良いかもしれません (例えば、GNOME で)。&lt;br /&gt;
&lt;br /&gt;
=== GLFW ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|glfw}} パッケージには Wayland に対するサポートがあります。{{ic|1=XDG_SESSION_TYPE}} が {{ic|1=wayland}} に設定されていて、かつアプリケーションの開発者が特定のバックエンドを使用するようにしていなければ、Wayland バックエンドが使用されます。&lt;br /&gt;
&lt;br /&gt;
詳細は GLFW の[https://github.com/glfw/glfw/blob/3.4/src/platform.c#L87-L99 ソースコード]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== GLEW ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|glew-wayland}} パッケージは現在のところ、多くの GLEW ベースのアプリケーションでまだ動作しませんので、唯一の選択肢は Xwayland で {{Pkg|glew}} を使うことです。{{Bug|62713}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== EFL ===&lt;br /&gt;
&lt;br /&gt;
EFL は Wayland を完全にサポートしています。Wayland で EFL アプリケーションを動かすには、Wayland の [https://wayland.freedesktop.org/efl.html プロジェクトページ] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== winit ===&lt;br /&gt;
&lt;br /&gt;
Winit は [[Rust]] で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、環境変数を設定することで Xwayland を使うように上書きすることができます:&lt;br /&gt;
&lt;br /&gt;
* バージョン 0.29.2 より前の場合、{{ic|1=WINIT_UNIX_BACKEND=x11}} を設定してください。&lt;br /&gt;
* バージョン 0.29.2 以降の場合、{{ic|1=WAYLAND_DISPLAY}} を unset してください。そうすることで、強制的に {{ic|1=DISPLAY}} 変数を使用して X にフォールバックされます。[https://github.com/rust-windowing/winit/blob/baf10de95843f156b0fbad6b10c3137f1ebd4f1e/src/changelog/v0.29.md?plain=1#L134]&lt;br /&gt;
&lt;br /&gt;
=== Electron ===&lt;br /&gt;
&lt;br /&gt;
Wayland サポートを有効化する方法は次の2つです: アプリケーションごとのコマンドラインフラグを使って有効化するか、設定ファイルを使ってグローバルに有効化するかです。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがどの electron バージョンを使用しているか確認する方法については [https://stackoverflow.com/q/50345957] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|Plasma では、一部の Electron アプリケーションで間違ったアイコン (デフォルトの Wayland アイコン) がウィンドウに表示され、一方タスクバーには正しいアイコンが表示されることがあります。この問題は、デスクトップファイルの名前を強制する特殊なアプリケーション/ウィンドウルールを作成することで解決できます。}}&lt;br /&gt;
&lt;br /&gt;
==== 環境変数 ====&lt;br /&gt;
&lt;br /&gt;
Electron 28 及びそれ以降を使用するアプリケーションは、[[環境変数]] [https://www.electronjs.org/docs/latest/api/environment-variables#electron_ozone_platform_hint-linux ELECTRON_OZONE_PLATFORM_HINT] を {{ic|auto}} または {{ic|wayland}} に設定することで、Wayland モードを使用することができます。&lt;br /&gt;
&lt;br /&gt;
コマンドラインフラグは、この環境変数より優先されます。&lt;br /&gt;
&lt;br /&gt;
==== コマンドラインフラグ ====&lt;br /&gt;
&lt;br /&gt;
Electron がベースとしている Chromium とは異なり、Electron アプリケーションはデフォルトで PipeWire による WebRTC 画面共有を有効化しません。なので、Wayland 上で画面共有の問題を防ぐために {{ic|1=--enable-features=WebRTCPipeWireCapturer}} を使用することが推奨されます。画面共有は {{Pkg|xdg-desktop-portal}} をベースとしています。&lt;br /&gt;
&lt;br /&gt;
環境変数を使うことが望ましくない、または不可能である場合に、{{Pkg|electron}} ベースのアプリケーションを Wayland でネイティブに使用するには、Electron 20 以降では {{ic|1=--ozone-platform-hint=auto}} フラグを使用することで可能です。&lt;br /&gt;
&lt;br /&gt;
トップバーが消失してしまう場合、{{ic|1=--enable-features=WaylandWindowDecorations}} フラグを使用することで解決します。これは、典型的には [[GNOME]] で必須です ([https://github.com/electron/electron/pull/29618 electron17] からsパオートされています)。&lt;br /&gt;
&lt;br /&gt;
これらのフラグを永続的に設定する方法は2つあります。1つ目は、アプリケーションの [[デスクトップエントリ#desktop ファイルの変更|.desktop ファイルを変更]]して {{ic|1=Exec=}} 行の末尾にフラグを追加する方法。もう一つは、以下で説明している設定ファイルを使用する方法で、こちらはよりきれいに設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|一部のアプリケーションは、Electron に対してフラグを渡さないため、そのアプリケーションの開発者が解決策を実装する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
==== 設定ファイル ====&lt;br /&gt;
&lt;br /&gt;
Electron 系のパッケージは {{ic|1=~/.config/electron&#039;&#039;XX&#039;&#039;-flags.conf}} を読み込みます。ここで、&#039;&#039;XX&#039;&#039; は Electron のバージョンです。該当するバージョンのファイルが存在しない場合、{{ic|1=~/.config/electron-flags.conf}} を代わりに読み込みます。&lt;br /&gt;
&lt;br /&gt;
前述のフラグを一行ずつ書き込んでください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/electron-flags.conf|2=&lt;br /&gt;
--enable-features=WaylandWindowDecorations&lt;br /&gt;
--ozone-platform-hint=auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|このような設定ファイルは、公式リポジトリ内の Electron のパッケージと、それらの設定ファイルを使用するパッケージでのみ機能します。{{AUR|slack-desktop}} などのような Electron の独自のビルドをバンドルしているパッケージでは機能しません。{{AUR|slack-electron}} のように代替のパッケージが存在する場合があります。}}&lt;br /&gt;
&lt;br /&gt;
==== 古い Electron バージョン ====&lt;br /&gt;
&lt;br /&gt;
{{ic|electron25-flags.conf}} は Electron バージョン 25 に対してだけ適用されます。それより古い Electron のバージョンは {{ic|electron&amp;lt;バージョン&amp;gt;-flags.conf}} ファイルで設定できます。&lt;br /&gt;
&lt;br /&gt;
古いバージョンでは、対応する Chromium バージョンによって異なるフラグが必要になる場合があります。例えば、以下のフラグは Electron 13 で機能します:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/electron13-flags.conf|2=&lt;br /&gt;
--enable-features=UseOzonePlatform&lt;br /&gt;
--ozone-platform=wayland&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
[[Java]] プラットフォームのオープンソース実装である OpenJDK は、まだ Wayland のネイティブサポートを備えていません。&lt;br /&gt;
OpenJDK に Wayland を実装することを目的としたプロジェクトである [https://openjdk.java.net/projects/wakefield/ Wakefield] が実用できるようになるまでは、Xwayland を代わりに使用できます。&lt;br /&gt;
&lt;br /&gt;
[[Debian:Wayland#Java Programs (supported since OpenJDK 16?)]] を参照してください: &lt;br /&gt;
&lt;br /&gt;
:OpenJDK 16から、JRE は (Wayland をサポートしている) GTK3 を動的にロードできるようになりました。この[https://stackoverflow.com/questions/39197208/java-gui-support-on-wayland 議論]によると、これがサポートされているかもしれません。&lt;br /&gt;
:{{ic|_JAVA_AWT_WM_NONREPARENTING}} [[環境変数]]を &amp;quot;1&amp;quot; に設定することで、アプリケーションが空白の画面で起動する不具合を修正することができます。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 自動化 ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/ReimuNotMoe/ydotool ydotool] ({{Pkg|ydotool}}) - 汎用のコマンドラインツール (wayland 以外でも利用可能)。{{ic|ydotool.service}} [[ユーザーユニット]]を[[起動/有効化]]してください。{{man|8|ydotoold}}、{{man|1|ydotool|url=https://github.com/ReimuNotMoe/ydotool/blob/master/manpage/ydotool.1.scd}} を参照。&lt;br /&gt;
* [https://github.com/atx/wtype wtype] ({{Pkg|wtype}}) - Wayland 用 xdotool type。{{man|1|wtype}} を参照。&lt;br /&gt;
* [https://github.com/boppreh/keyboard keyboard] - Windows と Linux で動作する Python ライブラリ。実験的な OS X サポートあり。[https://github.com/boppreh/mouse mouse] ライブラリも参照。&lt;br /&gt;
* [https://git.sr.ht/~brocellous/wlrctl wlrctl]  ({{AUR|wlrctl}}) - 雑多な wlroots 拡張のためのコマンドラインユーティリティ (foreign-toplevel-management、virtual-keyboard、virtual-pointer をサポート)。&lt;br /&gt;
&lt;br /&gt;
=== キーボードやマウスキーのリマップ ===&lt;br /&gt;
&lt;br /&gt;
[[入力リマップユーティリティ]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== X11 アプリケーションで Wayland ウィンドウをスクリーンキャストする ===&lt;br /&gt;
&lt;br /&gt;
[[スクリーンキャプチャ#X11 アプリケーションで Wayland ウィンドウをスクリーンキャストする]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Chromium で完全に最大化出来ない ===&lt;br /&gt;
&lt;br /&gt;
chrome://settings/appearance &#039;&#039;メニューから&#039;&#039; Use system title bar and borders&#039;&#039; を有効にする必要があります。&lt;br /&gt;
&lt;br /&gt;
=== Waylandコンポジタをsystemdサービスとして自動的に起動する ===&lt;br /&gt;
{{Note|この設定はdbusセッションを破壊し,[[PipeWire#WebRTC 画面共有]]を破壊するかも知れません.}}&lt;br /&gt;
ディスプレイマネージャーやシェルを使いたくなければ、Waylandコンポジタを[[systemd]]サービスを使って自動的に起動できます。{{ic|ExecStart}}行を使いたいコンポジタに変えて下さい:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/wayland-compositor.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
After=graphical.target systemd-user-sessions.service modprobe@drm.service&lt;br /&gt;
Conflicts=getty@tty1.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=&#039;&#039;username&#039;&#039;&lt;br /&gt;
WorkingDirectory=~&lt;br /&gt;
&lt;br /&gt;
PAMName=login&lt;br /&gt;
TTYPath=/dev/tty1&lt;br /&gt;
UnsetEnvironment=TERM&lt;br /&gt;
&lt;br /&gt;
StandardOutput=journal&lt;br /&gt;
ExecStart=/bin/labwc -s gtklock&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=graphical.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|[[セキュリティ#物理セキュリティ]]の為に、{{Pkg|swaylock}}や{{Pkg|gtklock}}等のスクリーンロッカーを、コンポジタの設定を通して自動的に起動する必要があるかも知れません。}}&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
&lt;br /&gt;
=== 色補正 ===&lt;br /&gt;
&lt;br /&gt;
[[バックライト#色補正]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== 動作が遅い、表示がおかしい、クラッシュする ===&lt;br /&gt;
&lt;br /&gt;
Gnome-shell で X から Wayland に切り替えるとグラフィック表示に問題が発生することがあります。原因として Xorg ベースの gnome-shell 用に {{ic|1=CLUTTER_PAINT=disable-clipped-redraws:disable-culling}} が設定されている可能性があります。{{ic|/etc/environment}} や rc ファイルから該当箇所を削除してみてください。&lt;br /&gt;
&lt;br /&gt;
=== リモートディスプレイ ===&lt;br /&gt;
&lt;br /&gt;
* ([[sway]] で使用されている) {{pkg|wlroots}} は、バージョン 0.10 より、{{Pkg|wayvnc}} を使って VNC バックエンドを提供しています。RDP バックエンドは削除されました [https://github.com/swaywm/wlroots/releases/tag/0.10.0]。&lt;br /&gt;
* {{pkg|mutter}} はコンパイル時にリモートデスクトップが有効化されています。詳細は [https://wiki.gnome.org/Projects/Mutter/RemoteDesktop] と {{Pkg|gnome-remote-desktop}} を見てください。&lt;br /&gt;
* {{pkg|krfb}} は {{pkg|kwin}} に VNC サーバを提供します。{{ic|krfb-virtualmonitor}} を使えば、他のデバイスを外部モニタとしてセットアップすることが可能です。&lt;br /&gt;
* 2013年に FreeRDP が Weston にマージされました。コンパイルフラグで有効化されています。{{Pkg|weston}} パッケージは、バージョン 6.0.0 より、FreeRDP が有効化されています。&lt;br /&gt;
* {{Pkg|waypipe}} は Wayland アプリケーションの透過プロキシです。[[SSH]] 上で動作するラッパーコマンドあり。&lt;br /&gt;
** 以下は、Plasma デスクトップでリモートの KDE kcalc を起動する例です:&lt;br /&gt;
 $ waypipe ssh example.local env QT_QPA_PLATFORM=wayland-egl QT_QPA_PLATFORMTHEME=KDE dbus-launch kcalc&lt;br /&gt;
&lt;br /&gt;
=== ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力捕捉 ===&lt;br /&gt;
&lt;br /&gt;
Xorg と異なり、Wayland では入力デバイスを独占 (グラブ) することができません (例: [https://tronche.com/gui/x/xlib/input/XGrabKeyboard.html キーボード]、[https://tronche.com/gui/x/xlib/input/XGrabPointer.html マウス])。キーボードショートカットやポインタデバイスをアプリケーションウィンドウに渡すのは Wayland コンポジタの役目となっています。&lt;br /&gt;
&lt;br /&gt;
入力グラブが変わったことで以下のように既存のアプリケーションで問題が発生します:&lt;br /&gt;
&lt;br /&gt;
* ホットキーや修飾キーがコンポジタによって認識されてしまい、リモートデスクトップや仮想マシンのウィンドウに送信されなくなります。&lt;br /&gt;
* マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。&lt;br /&gt;
&lt;br /&gt;
Wayland と Xwayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。Xorg アプリケーションの場合、Xwayland のサポートで十分であるため、アプリケーションやウィジェット・ツールキットに変更を加える必要はありません。&lt;br /&gt;
&lt;br /&gt;
これらの拡張はすでに {{pkg|wayland-protocols}} に含まれており、{{pkg|xorg-xwayland}} によってサポートされています。&lt;br /&gt;
&lt;br /&gt;
関連する拡張:&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/xwayland-keyboard-grab/xwayland-keyboard-grab-unstable-v1.xml Xwayland keyboard grabbing protocol]&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml Compositor shortcuts inhibit protocol]&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/relative-pointer/relative-pointer-unstable-v1.xml Relative pointer protocol]&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml Pointer constraints protocol]&lt;br /&gt;
&lt;br /&gt;
サポートしている Wayland コンポジタ:&lt;br /&gt;
&lt;br /&gt;
* Mutter, [[GNOME]] のコンポジタ ([https://bugzilla.gnome.org/show_bug.cgi?id=783342 リリース 3.28] 以降)。&lt;br /&gt;
* wlroots (Relative pointer protocols と Pointer constraints protocol に対応)&lt;br /&gt;
* Kwin&lt;br /&gt;
** [[KDE#Wayland で X11 のショートカットが衝突する]]&lt;br /&gt;
** [https://invent.kde.org/plasma/kwin/-/blob/master/src/wayland/keyboard_shortcuts_inhibit_v1_interface.cpp Keyboard shortcuts inhibit]&lt;br /&gt;
&lt;br /&gt;
サポートしているウィジェットツールキット:&lt;br /&gt;
&lt;br /&gt;
* GTK (リリース 3.22.18 以降)&lt;br /&gt;
&lt;br /&gt;
=== GTK テーマが動かない ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA モジュールを読み込まないようにする ===&lt;br /&gt;
&lt;br /&gt;
[[sway]] などの Wayland コンポジターを起動する前に {{ic|1=__EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json}} を [[環境変数]] として追加します。&lt;br /&gt;
&lt;br /&gt;
=== 拡大/サーフェススケーリング ===&lt;br /&gt;
&lt;br /&gt;
スクリーンの拡大は、まだ解決していません。[https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/145 wp-surface-scale プロトコルを提供する]プルリクエストが2022年半ばにマージされました。&lt;br /&gt;
&lt;br /&gt;
=== カーネル 6.11.2 (AMD) 以降、Wayland にラグ/スタッタリングが発生する ===&lt;br /&gt;
&lt;br /&gt;
将来のカーネルリリースでこの問題が修正されるまで、回避策は、コマンドラインに {{ic|1=amdgpu.dcdebugmask=0x400}} を追加することです。&lt;br /&gt;
&lt;br /&gt;
こちらを参照: https://community.frame.work/t/wayland-lag-stuttering-since-kernel-6-11-2/59422&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/docs/html/ Wayland オンラインドキュメント]&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland 公式リポジトリ]&lt;br /&gt;
* [[Fedora:How to debug Wayland problems]]&lt;br /&gt;
* [https://arewewaylandyet.com/ Are we Wayland yet?]&lt;br /&gt;
* [https://awesomeopensource.com/projects/wayland Awesome Wayland projects]&lt;br /&gt;
* [[カーソルテーマ]]&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=107499 Arch Linux forum discussion]&lt;br /&gt;
* [https://github.com/swaywm/sway/wiki/i3-Migration-Guide#common-x11-apps-used-on-i3-with-wayland-alternatives i3 Migration Guide - Common X11 apps used on i3 with Wayland alternatives]&lt;br /&gt;
* [https://wayland.app/protocols/ Wayland Explorer - A better way to read Wayland documentation]&lt;br /&gt;
* [https://askubuntu.com/questions/1393618/how-can-i-tell-if-an-application-is-using-xwayland How can I tell if an application is using XWayland]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Wayland|2024-08-24|814878}}&lt;/div&gt;</summary>
		<author><name>がおびん</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Rdesktop&amp;diff=37023</id>
		<title>Rdesktop</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Rdesktop&amp;diff=37023"/>
		<updated>2024-04-15T09:12:30Z</updated>

		<summary type="html">&lt;p&gt;がおびん: freerdp が rdesktop の別ブランチであることを明記&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:リモートデスクトップ]]&lt;br /&gt;
[[en:Rdesktop]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|xrdp}}&lt;br /&gt;
{{Related|Remmina}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
{{Note|上流の rdesktop プロジェクトでは、[https://groups.google.com/forum/#!topic/rdesktop-announce/AddglSNxK90 新しいメンテナを募集しています]。それまでの間は、そのプロジェクトの別ブランチである {{pkg|freerdp}} を使うことをお勧めします。両プロジェクトの歴史に関する説明と、両プロジェクトがどのように結びついているかを見るには、[https://www.freerdp.com/2019/01/16/hi-freerdp-history ここ]をご覧ください。}}&lt;br /&gt;
[http://www.rdesktop.org/ rdesktop] は Microsoft のプロプライエタリな RDP プロトコルのフリーでオープンソースなクライアントで GNU General Public License の下でリリースされています。rdesktop を使って Windows 2000/XP/Vista/Win7 の RDP サーバーに接続して Windows PC をリモートで管理することができます。&lt;br /&gt;
&lt;br /&gt;
2008年7月現在、rdesktop は RDP 5 の大部分を実装していて、以下のような機能が含まれます:&lt;br /&gt;
&lt;br /&gt;
* ビットマップキャッシュ&lt;br /&gt;
* ファイルシステム、オーディオ、シリアルポート、プリンタポートのリダイレクト&lt;br /&gt;
* 多数の各国語キーボードのマッピング&lt;br /&gt;
* ストリーム圧縮と暗号化&lt;br /&gt;
* 自動認証&lt;br /&gt;
* スマートカードのサポート&lt;br /&gt;
* SeamlessRDP による RemoteApp のような&amp;quot;シームレス&amp;quot;モードのサポート&lt;br /&gt;
&lt;br /&gt;
以下の機能はまだ実装されていません:&lt;br /&gt;
&lt;br /&gt;
* リモートアシスタンスの要求&lt;br /&gt;
* USB デバイスのリダイレクト&lt;br /&gt;
&lt;br /&gt;
RDP 5.1 や RDP 6 で追加された機能のサポート (マルチヘッドディスプレイ表示やウィンドウコンポジション) もまだ実装されていません。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|rdesktop}} パッケージを[[pacman|インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
オプションの完全なリストについては {{man|1|rdesktop}} の man ページを見て下さい。下は典型的な使用例になります:&lt;br /&gt;
 $ rdesktop -g 1440x900 -P -z -x l -r sound:off -u windowsuser 98.180.102.33:3389&lt;br /&gt;
&lt;br /&gt;
左から右に意味を解説すると:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| -g 1440x900 || ディスプレイの解像度を 1440x900 に設定。&lt;br /&gt;
|- &lt;br /&gt;
| -P || ビットマップキャッシュの有効化・変換の高速化。&lt;br /&gt;
|- &lt;br /&gt;
| -z || RDP データストリームの圧縮を有効化。&lt;br /&gt;
|-&lt;br /&gt;
| -x l || &amp;quot;lan&amp;quot; 品質レベルを使う、他のオプションについては man ページを見て下さい。&lt;br /&gt;
|-&lt;br /&gt;
| -r sound:off || サーバーで生成されたサウンドを null にリダイレクト。&lt;br /&gt;
|-&lt;br /&gt;
| -u windowsuser || Windows PC にログインするときに使用するユーザー名を定義します。&lt;br /&gt;
|-&lt;br /&gt;
| 98.180.102.33:3389 || 対象マシンの IP アドレスとポート番号。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 自動スケーリング ===&lt;br /&gt;
&lt;br /&gt;
画面にあわせて自動スケールするようにするには、rdekstop のコマンドラインに次を渡して下さい:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
-g $(xrandr -q | awk &#039;/Screen 0/ {print int($8/1.28) $9 int($10/1.2)}&#039; | sed &#039;s/,//g&#039;)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;-g&amp;quot; フラグを使う方法もあります:&lt;br /&gt;
  $ rdesktop -g 100% -P -z 98.180.102.33:3389&lt;br /&gt;
&lt;br /&gt;
=== IP アドレスの代わりに NetBIOS 名を使う ===&lt;br /&gt;
&lt;br /&gt;
ネットワークの Windows コンピュータの IP アドレスがわからない場合、wins サポートを有効にする必要があります。そのためには、[[samba]] をインストールしてください。samba で wins を有効にするのは驚くほど簡単です: {{ic|/etc/samba/smb.conf}} を編集して次の行を追加するか適当な行をアンコメントしてください:&lt;br /&gt;
&lt;br /&gt;
 wins support = yes&lt;br /&gt;
&lt;br /&gt;
そして winbind をインストールして、{{ic|/etc/nsswitch.conf}} を編集してホストのリストに &amp;quot;wins&amp;quot; を追加してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|smb}} と {{ic|nmb}} サービスを再起動して Windows の NetBIOS ホストに ping を送信してテストしてください。&lt;br /&gt;
&lt;br /&gt;
=== 表示されないカーソルを補う ===&lt;br /&gt;
&lt;br /&gt;
[[カーソルテーマ#欠けているカーソルを補う]]を参照。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.rdesktop.org/ rdesktop 公式ホームページ]&lt;br /&gt;
*{{Pkg|freerdp}}: ネットワークレベル認証 (Network Level Authentication, NLA) など RDP 7.1 の機能をサポートした rdesktop のフォーク。[https://askubuntu.com/a/97932/217269] も参照。&lt;/div&gt;</summary>
		<author><name>がおびん</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88&amp;diff=36542</id>
		<title>フォント</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88&amp;diff=36542"/>
		<updated>2024-03-14T09:03:43Z</updated>

		<summary type="html">&lt;p&gt;がおびん: /* インストールした全てのフォントを一覧する */ font-manager による字体確認を追記。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:フォント]]&lt;br /&gt;
[[Category:グラフィックとデスクトップパブリッシング]]&lt;br /&gt;
[[de:Schriftarten]]&lt;br /&gt;
[[en:Fonts]]&lt;br /&gt;
[[es:Fonts]]&lt;br /&gt;
[[uk:Fonts]]&lt;br /&gt;
[[zh-hans:Fonts]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|フォント設定}}&lt;br /&gt;
{{Related|Java 実行環境のフォント}}&lt;br /&gt;
{{Related|MS フォント}}&lt;br /&gt;
{{Related|メトリック互換フォント}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[[Wikipedia:ja:フォント|Wikipedia]] より:&lt;br /&gt;
:「コンピュータのフォントは、グラフィカルなグリフのセットを含むデジタルデータファイルとして実装されている。コンピュータフォントは、フォントエディタを用いて設計・作成される。コンピュータの画面用に特別に設計されたフォントで、印刷用ではないものをスクリーンフォントという。」&lt;br /&gt;
&lt;br /&gt;
なお、フォントのライセンスによっては、法的な制約を受ける場合があります。&lt;br /&gt;
&lt;br /&gt;
== フォントフォーマット ==&lt;br /&gt;
&lt;br /&gt;
今日使われるほとんどのコンピュータフォントは&#039;&#039;ビットマップ&#039;&#039;か&#039;&#039;アウトライン&#039;&#039;データフォーマットになっています。&lt;br /&gt;
;ビットマップフォント: ドットやピクセルのマトリックスで構成され、それぞれの文字のイメージを表示します。&lt;br /&gt;
;アウトラインまたは&#039;&#039;ベクター&#039;&#039;フォント: ベジェ曲線を使ってそれぞれの文字を表示します。文字はさまざまなサイズにスケールすることができます。&lt;br /&gt;
&lt;br /&gt;
=== ビットマップフォーマット ===&lt;br /&gt;
&lt;br /&gt;
* Adobe による [[Wikipedia:Glyph Bitmap Distribution Format|Bitmap Distribution Format]] (BDF)&lt;br /&gt;
* Xorg による [[Wikipedia:Portable Compiled Format|Portable Compiled Format]] (PCF)&lt;br /&gt;
* カーネルがコンソールフォントで使用する [[Wikipedia:PC Screen Font|PC Screen Font]] (PSF) (Xorg はサポートしておらず Unicode の PSF ファイルの拡張子は {{ic|psfu}} です)。&lt;br /&gt;
&lt;br /&gt;
上記のフォーマットは gzip で圧縮することができます。利用可能なビットマップフォントは[[#ビットマップ]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== アウトラインフォーマット ===&lt;br /&gt;
&lt;br /&gt;
* Adobe による [[Wikipedia:ja:PostScriptフォント|PostScript フォント]] – 様々なフォーマットがあります。例: Printer Font ASCII (PFA) と Printer Font Binary (PPB)。&lt;br /&gt;
* Apple と Microsoft による [[Wikipedia:ja:TrueType|TrueType]] (ファイル拡張子: {{ic|ttf}})&lt;br /&gt;
* TrueType を基に Microsoft によって開発された [[Wikipedia:ja:OpenType|OpenType]] (ファイル拡張子: {{ic|otf}}, {{ic|ttf}})&lt;br /&gt;
&lt;br /&gt;
多くの場合、TrueType と OpenType の技術的な差異は無視することができます。実際 {{ic|ttf}} 拡張子を持つフォントでも OpenType フォントであることがあります。&lt;br /&gt;
&lt;br /&gt;
=== 他のフォーマット ===&lt;br /&gt;
&lt;br /&gt;
組版アプリケーションの &#039;&#039;TeX&#039;&#039; と、それに組み合わせるフォントソフトウェアの &#039;&#039;Metafont&#039;&#039; は独自の方法で文字をレンダリングします。この2つのプログラムでフォントとして使われるファイル拡張子に {{ic|*pk}}, {{ic|*gf}}, {{ic|mf}} と {{ic|vf}} があります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;FontForge&#039;&#039; はオープンソースのフォント作成プログラムであり、作られたフォントには {{ic|sfd}} (&#039;&#039;s&#039;&#039;pline &#039;&#039;f&#039;&#039;ont &#039;&#039;d&#039;&#039;atabase) というテキストベースのフォーマットが使われます。&lt;br /&gt;
&lt;br /&gt;
[http://www.w3.org/TR/SVG/fonts.html SVG] フォーマットにも独自にフォントを表示するための機能があります。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
フォントをインストールする方法は複数あります。&lt;br /&gt;
&lt;br /&gt;
=== Pacman ===&lt;br /&gt;
&lt;br /&gt;
フォントとそのコレクションは [[pacman]] を使って(有効にした)リポジトリからインストールすることができます。利用できるフォントを探すには次を実行:&lt;br /&gt;
 $ pacman -Ss font&lt;br /&gt;
また {{ic|ttf}} フォントのみを探す場合は:&lt;br /&gt;
 $ pacman -Ss ttf&lt;br /&gt;
&lt;br /&gt;
=== パッケージを作成 ===&lt;br /&gt;
&lt;br /&gt;
pacman であなたのフォントを管理したいと思ったならば、あなた自身で Arch パッケージを作ることができます。作ったパッケージは [[AUR]] コミュニティで共有することもできます。既存の [https://git.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/adobe-source-code-pro-fonts パッケージ] が参考になるでしょう。パッケージの作成について詳しく学びたいならば、[[パッケージの作成]]を読んでください。&lt;br /&gt;
&lt;br /&gt;
ttf フォントからパッケージを簡単に作る方法として {{AUR|makefontpkg}} を使うこともできます。&lt;br /&gt;
&lt;br /&gt;
フォントファイルのファミリー名は {{ic|fc-query}} を使うことで確認できます。例: {{ic|fc-query -f &#039;%{family[0]}\n&#039; /path/to/file}}。&lt;br /&gt;
&lt;br /&gt;
=== 手動インストール ===&lt;br /&gt;
&lt;br /&gt;
リポジトリにないフォントを追加するときに推奨されるのは[[#パッケージを作成|パッケージを作成]]することです。pacman によってフォントを削除・アップデートできるようになります。しかしながらフォントを手動でインストールすることも可能です。&lt;br /&gt;
&lt;br /&gt;
または、フォントを手動でインストールすることもできます。&lt;br /&gt;
&lt;br /&gt;
* シングルユーザーの場合、フォントは {{ic|~/.local/share/fonts/}} にインストールします。&lt;br /&gt;
** 多くの場合、他のユーザーとしてグラフィカルなアプリケーションを実行しない限り、これで十分です。&lt;br /&gt;
** 過去には {{ic|~/.fonts/}} が使われていましたが、現在は非推奨です。&lt;br /&gt;
* システム全体 (全ユーザー) にインストールする場合は、{{ic|/usr/local/share/fonts/}} の下にフォントを配置します。&lt;br /&gt;
** 先にディレクトリを作成する必要があるかもしれません: {{ic|mkdir -p /usr/local/share/fonts}}&lt;br /&gt;
** {{ic|/usr/share/fonts/}} はパッケージマネージャの権限下にあり、手動で変更するべきではありません。&lt;br /&gt;
&lt;br /&gt;
サブディレクトリ構造の作成はユーザー次第であり、Linux ディストリビューションによって異なります。わかりやすくするために、各フォントをそれ自身のディレクトリに置くとよいでしょう。Fontconfig はデフォルトのパスを再帰的に検索し、ネストしたファイルを確実に拾います。&lt;br /&gt;
&lt;br /&gt;
構造の例は次のとおりです:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
/usr/local/share/fonts/&lt;br /&gt;
├── otf&lt;br /&gt;
│   └── SourceCodeVariable&lt;br /&gt;
│       ├── SourceCodeVariable-Italic.otf&lt;br /&gt;
│       └── SourceCodeVariable-Roman.otf&lt;br /&gt;
└── ttf&lt;br /&gt;
    ├── AnonymousPro&lt;br /&gt;
    │   ├── Anonymous-Pro-B.ttf&lt;br /&gt;
    │   ├── Anonymous-Pro-I.ttf&lt;br /&gt;
    │   └── Anonymous-Pro.ttf&lt;br /&gt;
    └── CascadiaCode&lt;br /&gt;
        ├── CascadiaCode-Bold.ttf&lt;br /&gt;
        ├── CascadiaCode-Light.ttf&lt;br /&gt;
        └── CascadiaCode-Regular.ttf&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
フォントファイルには、すべてのユーザーに対して十分な読み取り権限を与える必要があります。ファイルの場合は {{ic|444}} 、ディレクトリの場合は {{ic|555}} が必要です。&lt;br /&gt;
&lt;br /&gt;
Xserver がフォントを直接読み込むためには (&#039;&#039;フォントサーバ&#039;&#039; の使用とは対照的に)、新しく追加したフォントのディレクトリを FontPath エントリで追加する必要があります。このエントリは [[Xorg#設定|Xorg 設定ファイル]] の &#039;&#039;Files&#039;&#039; セクションにあります (例: {{ic|/etc/X11/xorg.conf}} や {{ic|/etc/xorg.conf}}) 詳しくは [[フォント#古いアプリケーション]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
それから fontconfig フォントキャッシュをアップデートします (通常は fontconfig ライブラリを使用するアプリケーションが実行するため必要ありません):&lt;br /&gt;
&lt;br /&gt;
 $ fc-cache -vf&lt;br /&gt;
&lt;br /&gt;
=== 古いアプリケーション ===&lt;br /&gt;
&lt;br /&gt;
古いアプリケーション (例: GTK+ 1.x アプリケーション、{{ic|xfontsel}}) を使う場合、fontconfig をサポートしていないので、インデックスをフォントディレクトリに作る必要があります:&lt;br /&gt;
&lt;br /&gt;
 $ mkfontscale&lt;br /&gt;
 $ mkfontdir&lt;br /&gt;
&lt;br /&gt;
もしくは次のコマンドで複数のフォルダを含めます:&lt;br /&gt;
&lt;br /&gt;
 $ for dir in /font/dir1/ /font/dir2/; do xset +fp $dir; done &amp;amp;&amp;amp; xset fp rehash&lt;br /&gt;
&lt;br /&gt;
{{ic|/usr/share/fonts}} 下のバラバラのサブディレクトリにフォントをインストールした場合:&lt;br /&gt;
&lt;br /&gt;
 $ for dir in * ; do if [  -d  &amp;quot;$dir&amp;quot;  ]; then cd &amp;quot;$dir&amp;quot;;xset +fp &amp;quot;$PWD&amp;quot; ;mkfontscale; mkfontdir;cd .. ;fi; done &amp;amp;&amp;amp; xset fp rehash&lt;br /&gt;
&lt;br /&gt;
X サーバーがフォントディレクトリの読み込みに失敗したときは全ての {{ic|fonts.dir}} ファイルを再スキャンしてください:&lt;br /&gt;
&lt;br /&gt;
 # xset +fp /usr/share/fonts/misc # Inform the X server of new directories&lt;br /&gt;
 # xset fp rehash                # Forces a new rescan&lt;br /&gt;
&lt;br /&gt;
フォントが読み込まれたのかチェックするには:&lt;br /&gt;
&lt;br /&gt;
 $ xlsfonts | grep fontname&lt;br /&gt;
&lt;br /&gt;
{{note|ほとんどのパッケージはインストール時に Xorg がフォントを使えるように自動的に設定を行います。その場合、この手順は不要です。}}&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] で新しくインストールしたフォントを使うには、フォントパスを {{ic|/etc/X11/xorg.conf}} (他の X.Org 設定ファイルでも動きます) に加える必要があります。&lt;br /&gt;
&lt;br /&gt;
以下は {{ic|/etc/X11/xorg.conf}} に追加するセクションの例です。あなたの必要なフォントにあわせてパスを追加・削除してください。&lt;br /&gt;
 # Let X.Org know about the custom font directories&lt;br /&gt;
 Section &amp;quot;Files&amp;quot;&lt;br /&gt;
     FontPath    &amp;quot;/usr/share/fonts/100dpi&amp;quot;&lt;br /&gt;
     FontPath    &amp;quot;/usr/share/fonts/75dpi&amp;quot;&lt;br /&gt;
     FontPath    &amp;quot;/usr/share/fonts/cantarell&amp;quot;&lt;br /&gt;
     FontPath    &amp;quot;/usr/share/fonts/cyrillic&amp;quot;&lt;br /&gt;
     FontPath    &amp;quot;/usr/share/fonts/encodings&amp;quot;&lt;br /&gt;
     FontPath    &amp;quot;/usr/share/fonts/local&amp;quot;&lt;br /&gt;
     FontPath    &amp;quot;/usr/share/fonts/misc&amp;quot;&lt;br /&gt;
     FontPath    &amp;quot;/usr/share/fonts/truetype&amp;quot;&lt;br /&gt;
     FontPath    &amp;quot;/usr/share/fonts/TTF&amp;quot;&lt;br /&gt;
     FontPath    &amp;quot;/usr/share/fonts/util&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
=== Pango の Warning ===&lt;br /&gt;
[http://www.pango.org/ Pango] を使っていると、pango が [https://www.freedesktop.org/wiki/Software/fontconfig fontconfig] を読み込んでフォントを選ぼうとすることがあります。&lt;br /&gt;
&lt;br /&gt;
 (process:5741): Pango-WARNING **: failed to choose a font, expect ugly output. engine-type=&#039;PangoRenderFc&#039;, script=&#039;common&#039;&lt;br /&gt;
 (process:5741): Pango-WARNING **: failed to choose a font, expect ugly output. engine-type=&#039;PangoRenderFc&#039;, script=&#039;latin&#039;&lt;br /&gt;
&lt;br /&gt;
上記のようなエラーや、アプリケーションで文字の代わりに豆腐が表示された場合、フォントを追加してフォントキャッシュをアップデートする必要があります。この例では {{Pkg|ttf-liberation}} フォントがあげられていて root 権限でシステム全体で有効にします。&lt;br /&gt;
&lt;br /&gt;
 # pacman -S ttf-liberation&lt;br /&gt;
   -- インストールが成功したと仮定して出力は省略します -- &lt;br /&gt;
 &lt;br /&gt;
 # fc-cache -vfs&lt;br /&gt;
 /usr/share/fonts: caching, new cache contents: 0 fonts, 3 dirs&lt;br /&gt;
 /usr/share/fonts/TTF: caching, new cache contents: 16 fonts, 0 dirs&lt;br /&gt;
 /usr/share/fonts/encodings: caching, new cache contents: 0 fonts, 1 dirs&lt;br /&gt;
 /usr/share/fonts/encodings/large: caching, new cache contents: 0 fonts, 0 dirs&lt;br /&gt;
 /usr/share/fonts/util: caching, new cache contents: 0 fonts, 0 dirs&lt;br /&gt;
 /var/cache/fontconfig: cleaning cache directory   &lt;br /&gt;
 fc-cache: succeeded&lt;br /&gt;
&lt;br /&gt;
フォントが設定されたかテストするには:&lt;br /&gt;
&lt;br /&gt;
 # fc-match&lt;br /&gt;
 LiberationMono-Regular.ttf: &amp;quot;Liberation Mono&amp;quot; &amp;quot;Regular&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==フォントパッケージ==&lt;br /&gt;
以下は、公式リポジトリや [[Arch User Repository|AUR]] から入手できる多くのフォントパッケージを精選したリストです。Unicode をサポートしているフォントには [[wikipedia:unicode|Unicode 対応]] と添えています。&lt;br /&gt;
&lt;br /&gt;
{{Tip|[https://github.com/ternstor/distrofonts Archfonts] は公式リポジトリや AUR にあるすべての TTF フォントの概要を生成するために使用できる Python スクリプトです。}}&lt;br /&gt;
&lt;br /&gt;
=== ビットマップ ===&lt;br /&gt;
&lt;br /&gt;
{{Note|{{Pkg|pango}} 1.44 は、 [https://blogs.gnome.org/mclasen/2019/05/25/pango-future-directions/ FreeType のサポートをやめ HarfBuzz を採用したため、] [https://blogs.gnome.org/mclasen/2019/08/07/pango-1-44-wrap-up/ 従来の BDF/PCF ビットマップフォントへのサポートがなくなり] 一部のアプリケーション ({{Pkg|gnome-terminal}} など) では、グリフではなく矩形を表示してフォントが機能しなくなりました。 {{Bug|63297}}, [https://gitlab.gnome.org/GNOME/pango/issues/386 Pango issue #386] と [https://github.com/harfbuzz/harfbuzz/issues/1897 HarfBuzz issue #1897] を参照して下さい。}}&lt;br /&gt;
* Default 8x16&lt;br /&gt;
* [https://github.com/seraxis/pcf-spectrum-berry Berry] ({{AUR|pcf-spectrum-berry}}) – 8px&lt;br /&gt;
* [https://www.dcmembers.com/jibsen/download/61/ Dina] ({{Pkg|dina-font}}) – Proggy ベースの 8px, 10px, 12px&lt;br /&gt;
* [http://openlab.jp/efont/unicode/ Efont] ({{AUR|efont-unicode-bdf}}) – 10px, 12px, 14px, 16px, 24px, normal, bold italic&lt;br /&gt;
* [http://font.gohu.org/ Gohu] ({{AUR|gohufont}}) – 11px, 14px, normal, bold&lt;br /&gt;
* [http://artwizaleczapka.sourceforge.net/ Lime] ({{AUR|artwiz-fonts}})&lt;br /&gt;
* [https://tobiasjung.name/profont/ ProFont] ({{AUR|ttf-profont-iix}}) – 10px, 11px, 12px, 15px, 17px, 22px, 29px, normal&lt;br /&gt;
* [[Wikipedia:Proggy programming fonts|Proggy]] ({{AUR|proggyfonts}}) – 様々なタイプがあります&lt;br /&gt;
* [http://www.fial.com/~scott/tamsyn-font/ Tamsyn] ({{Pkg|tamsyn-font}})&lt;br /&gt;
* [http://terminus-font.sourceforge.net/ Terminus] ({{Pkg|terminus-font}})&lt;br /&gt;
* [https://github.com/lucy/tewi-font Tewi] ({{AUR|bdf-tewi-git}})&lt;br /&gt;
* [http://unifoundry.com/unifont.html Unifont] ([[Wikipedia:Unicode font#Comparison of fonts|Unicode のカバー率が最も高いフォント]]) ({{Pkg|bdf-unifont}})&lt;br /&gt;
&lt;br /&gt;
=== ラテン文字 ===&lt;br /&gt;
&lt;br /&gt;
==== ファミリー ====&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:ja:Bitstream Vera|Bitstream Vera]] ({{Pkg|ttf-bitstream-vera}}) – セリフ体・サンセリフ体・モノスペース&lt;br /&gt;
* [https://quoteunquoteapps.com/courierprime/ Courier Prime] ({{AUR|ttf-courier-prime}}) – スクリーンプレイ用に最適化された Courier フォント代替&lt;br /&gt;
* [[Wikipedia:Croscore fonts|Croscore フォント]] ({{Pkg|ttf-croscore}}) – Windows の Arial, Times New Roman, Courier New フォントの Google による代替フォント&lt;br /&gt;
* [[Wikipedia:ja:DejaVuフォント|DejaVu フォント]] ({{Pkg|ttf-dejavu}}) – Unicode の対応率を高めた Bitstream Vera&lt;br /&gt;
* [[Wikipedia:ja:Droid (書体)|Droid]] ({{Pkg|ttf-droid}}, {{AUR|ttf-google-fonts-git}} に含まれています) – 旧バージョンの Android のデフォルトフォント&lt;br /&gt;
* [[Wikipedia:ja:Roboto|Roboto]] ({{Pkg|ttf-roboto}}) – 新しいバージョンの Android のデフォルトフォント&lt;br /&gt;
* [[Wikipedia:ja:Noto|Google Noto]] ({{Pkg|noto-fonts}}) – Unicode 対応フォント&lt;br /&gt;
* [[Wikipedia:Liberation fonts|Liberation フォント]] ({{Pkg|ttf-liberation}}) – Windows の Arial, Arial Narrow, Times New Roman, Courier New フォントのフリー代替フォント&lt;br /&gt;
* [[Wikipedia:Ubuntu Font Family|Ubuntu フォントファミリー]] ({{Pkg|ttf-ubuntu-font-family}})&lt;br /&gt;
* [http://corefonts.sourceforge.net/ Microsoft フォント] ({{AUR|ttf-ms-fonts}}) – Andalé Mono, Courier New, Arial, Arial Black, Comic Sans, Impact, Lucida Sans, Microsoft Sans Serif, Trebuchet, Verdana, Georgia, Times New Roman&lt;br /&gt;
* Vista フォント ({{AUR|ttf-vista-fonts}}) – Consolas, Calibri, Candara, Corbel, Cambria, Constantia&lt;br /&gt;
&lt;br /&gt;
==== モノスペース ====&lt;br /&gt;
&lt;br /&gt;
他の等幅フォントは [[#ビットマップ]] や [[#ファミリー]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
* [http://www.marksimonson.com/fonts/view/anonymous-pro Anonymous Pro] ({{pkg|ttf-anonymous-pro}}: {{AUR|ttf-google-fonts-git}} に含まれています)&lt;br /&gt;
* [https://github.com/microsoft/cascadia-code Cascadia Code] ({{Pkg|ttf-cascadia-code}}) ⟶ – OpenFontLicense の下で Microsoft によってリリースされ、プログラミング合字を使用して Windows ターミナルの外観を向上させるように設計されています&lt;br /&gt;
* [https://quoteunquoteapps.com/courierprime/ Courier Prime] ({{AUR|ttf-courier-prime}}) – サンセリフフォントとプログラミング用に最適化されたバージョンで補完された Courier の代替品で、OpenFontLicense の下でリリースされています。&lt;br /&gt;
* [https://damieng.com/blog/2008/05/26/envy-code-r-preview-7-coding-font-released Envy Code R] ({{AUR|ttf-envy-code-r}})&lt;br /&gt;
* Fantasque Sans Mono ({{AUR|ttf-fantasque-sans-git}})&lt;br /&gt;
* [[Wikipedia:Fira Sans|Fira Mono]] ({{pkg|ttf-fira-mono}}, {{pkg|otf-fira-mono}}) – Firefox OS 用にデザインされたフォント&lt;br /&gt;
* [[Wikipedia:Fira_(typeface)#Fira_Code|Fira Code]] ({{Pkg|ttf-fira-code}}) ⟶ – 一般的なプログラミングの複数文字の組み合わせのためのプログラミング合字による FiraMono の拡張&lt;br /&gt;
* [https://sourcefoundry.org/hack/ Hack] ({{pkg|ttf-hack}}) KDE プラズマでデフォルトとして使用されるオープンソースの等幅フォント&lt;br /&gt;
* [https://github.com/i-tu/Hasklig Hasklig] ({{AUR|otf-hasklig}}) - 等幅合字のコードフォント&lt;br /&gt;
* [https://pcaro.es/p/hermit/ Hermit] ({{Pkg|otf-hermit}}) - プログラマーによるプログラマー向けフォント&lt;br /&gt;
* [[Wikipedia:Inconsolata|Inconsolata]] ({{Pkg|ttf-inconsolata}}: {{AUR|ttf-google-fonts-git}} に含まれています) - 可読性の高いプログラミングフォント&lt;br /&gt;
* [https://leonardo-m.livejournal.com/77079.html Inconsolata-g] ({{AUR|ttf-inconsolata-g}}) - プログラマ向けの改修が加えられています。&lt;br /&gt;
* [https://be5invis.github.io/Iosevka/ Iosevka] ({{Pkg|ttc-iosevka}}) ⟶ – Pragmata Pro、M+、および PF DIN Mono に触発された、プログラミングに理想的なフォントとして設計された細いサンセリフおよびスラブセリフ書体。プログラミング合字と2000以上のラテン語、ギリシャ語、キリル文字、音声、PowerLine グリフをサポートします&lt;br /&gt;
* [[Wikipedia:Lucida Typewriter|Lucida Typewriter]] ({{AUR|jre}} パッケージに含まれています)&lt;br /&gt;
* [[Wikipedia:Menlo (typeface)|Menlo]] (派生: {{AUR|ttf-meslo}}) - OS X のデフォルト等幅フォント&lt;br /&gt;
* [[Wikipedia:Monaco (typeface)|Monaco]] ({{AUR|ttf-monaco}}) - OSX 用に Apple がデザインしたフォント&lt;br /&gt;
* Monofur ({{Pkg|ttf-monofur}})&lt;br /&gt;
* [https://madmalik.github.io/mononoki Mononoki] ({{AUR|ttf-mononoki}})&lt;br /&gt;
* [[Wikipedia:Source Code Pro|Source Code Pro]] ({{pkg|adobe-source-code-pro-fonts}})&lt;br /&gt;
&lt;br /&gt;
関連ウェブサイト:&lt;br /&gt;
&lt;br /&gt;
* [http://hivelogic.com/articles/top-10-programming-fonts Dan Benjamin のプログラミングフォント Top 10]&lt;br /&gt;
* [http://www.lowing.org/fonts/ Trevor Lowing のフォントリスト]&lt;br /&gt;
* [https://www.slant.co/topics/67/~what-are-the-best-programming-fonts Slant: What are the best programming fonts?]&lt;br /&gt;
* [https://stackoverflow.com/questions/4689/recommended-fonts-for-programming Stack Overflow: Recommended fonts for programming]&lt;br /&gt;
&lt;br /&gt;
==== ゴシック体 ====&lt;br /&gt;
&lt;br /&gt;
* [http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;amp;id=andika Andika] ({{AUR|ttf-andika}})&lt;br /&gt;
* [[Wikipedia:Cantarell (typeface)|Cantarell]] ({{Pkg|cantarell-fonts}}) – GNOME で提供されるデフォルトのフォント。GNOME および GTK3 関連のパッケージで必要です。&lt;br /&gt;
* [https://typedesigndead.coosucks.repl.co/ DMCA Sans Serif] ({{AUR|ttf-dmcasansserif}}) – 汎用サンセリフフォントメトリック - Microsoft Consolas と互換性があります&lt;br /&gt;
* [[Wikipedia:Fira (typeface)|Fira Sans]] ({{Pkg|ttf-fira-sans}}, {{Pkg|otf-fira-sans}}) – ErikSpiekermann が Mozilla および FirefoxOS 用に設計したサンセリフフォント。 FiraMono と FiraCode は、FiraSans の等幅コンパニオンです。 (こちらを参照 [[フォント#モノスペース|モノスペース]])&lt;br /&gt;
* [[Wikipedia:FreeSans|FreeSans]] ({{Pkg|gnu-free-fonts}}) – Helvetica と Arial の一般的な代替品。こちらを参照。[[フォント#ファミリー|ファミリー]]&lt;br /&gt;
* [https://github.com/rsms/inter Inter UI] ({{Pkg|inter-font}}) – ユーザーインターフェイス用に設計されたフォント&lt;br /&gt;
* [https://indestructibletype.com/Jost.html Jost*] ({{AUR|otf-jost}}) – [[Wikipedia:Futura (typeface)|Futura]] をベースにしたオープンソースの書体です。&lt;br /&gt;
* [[Wikipedia:ja:Linux Libertine|Linux Biolinum]] ({{Pkg|ttf-linux-libertine}}) – Times New Roman のフリー代替フォント&lt;br /&gt;
* [[Wikipedia:Liberation Sans|Liberation Sans]] ({{Pkg|ttf-liberation}}) – Helvetica と Arial の一般的な代替品。こちらを参照。[[フォント#ファミリー|ファミリー]]&lt;br /&gt;
* [https://fonts.google.com/specimen/Montserrat Montserrat] ({{AUR|montserrat-otf}}) – [[Wikipedia:Gotham (typeface)|Gotham]] と [[Wikipedia:Proxima Nova|Proxima Nova]] 類似点を共有するオープンソースフォント&lt;br /&gt;
* [https://fonts.google.com/specimen/Nunito Nunito] ({{AUR|ttf-nunito}}) – エッジが丸みを帯びたオープンソースフォント [[Wikipedia:Gotham_(typeface)#Variations|Gotham Rounded]] [https://fonts.adobe.com/fonts/proxima-soft Proxima Soft]&lt;br /&gt;
* [[Wikipedia:Open Sans|Open Sans]] ({{Pkg|ttf-opensans}}) – Google から委託されたサンセリフフォント。Droidsans に基づいていますが、少し幅が広くなっています&lt;br /&gt;
* [[Wikipedia:PT Sans|PT Sans]] ({{AUR|ttf-google-fonts-git}}) - 3書体: normal, narrow, caption - Unicode 対応: ラテン・キリル文字&lt;br /&gt;
* [[Wikipedia:ja:Source Sans Pro|Source Sans Pro]] ({{pkg|adobe-source-sans-pro-fonts}})&lt;br /&gt;
* [[Wikipedia:Tahoma (typeface)|Tahoma]] ({{AUR|ttf-tahoma}})&lt;br /&gt;
&lt;br /&gt;
==== 明朝体 ====&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:Bitstream Charter|Bitstream Charter]] ({{AUR|ttf-bitstream-charter}}, {{AUR|otf-bitstream-charter}}) – 元々は [[Wikipedia:Matthew Carter|Matthew Carter]] によって設計された商用フォントであり、[[Wikipedia:Georgia_(typeface)|Georgia]] と類似点があります。バージョンは無料ライセンスの下でリリースされ、後で最新の形式に [https://practicaltypography.com/charter.html 変換] されました(前述のパッケージとして提供されます。)&lt;br /&gt;
* [https://indestructibletype.com/Bodoni.html Bodoni*] ({{AUR|otf-bodoni}}) – オープンソース [[Wikipedia:Bodoni|Bodoni]] リバイバル&lt;br /&gt;
* [https://github.com/skosch/Crimson Crimson] ({{Pkg|otf-crimson}}) – [[Wikipedia:Minion_(typeface)|Minion]] と類似点を共有するオープンソースフォント&lt;br /&gt;
* [[Wikipedia:EB_Garamond|EB Garamond]] ({{AUR|ebgaramond-otf}}) – オープンソースの [[Wikipedia:Garamond|Garamond]] の復活、前述のパッケージは [https://github.com/octaviopardo/EBGaramond12 Octavio Pardo] によって開発されたバージョンです。&lt;br /&gt;
* [[Wikipedia:FreeSerif|FreeSerif]] ({{Pkg|gnu-free-fonts}}) – [[Commons:File:FreeSerifDemonstration.png|Visually similar]] Times New Roman に似ていますが、[https://askubuntu.com/questions/346552/closest-alternative-to-times-new-roman/1148247#1148247 メトリックが異なります] こちを参照してください [[フォント#ファミリー|ファミリー]]&lt;br /&gt;
* [[Wikipedia:Gentium|Gentium]] ({{Pkg|gentium-plus-font}}) – Unicode:ラテン語、ギリシャ語、キリル文字、表音アルファベット&lt;br /&gt;
* [[Wikipedia:Utopia_(typeface)#Derived_typefaces|Heuristica]] ({{AUR|ttf-heuristica}}) – 無料ライセンスでリリースされた [[Wikipedia:Utopia (typeface)|Utopia]]&lt;br /&gt;
* [[Wikipedia:Liberation Serif|Liberation Serif]] ({{Pkg|ttf-liberation}}) – Times New Roman とメトリック互換ですが、[https://en.wikipedia.org/wiki/File:Times_New_Roman_Liberation_Serif_comparison.png 視覚的に区別されます]、[[フォント#ファミリー|ファミリー]] を参照してください。&lt;br /&gt;
* [https://fonts.google.com/specimen/Libre+Baskerville Libre Baskerville] ({{AUR|ttf-librebaskerville}}) – Impallari Type によって設計されたオープンソースの [[Wikipedia:Baskerville|Baskerville]] リバイバル&lt;br /&gt;
* [https://fonts.google.com/specimen/Libre+Caslon+Text Libre Caslon] ({{AUR|otf-libre-caslon}}) – Impallari Type によって設計されたオープンソースの [[Wikipedia:Caslon|Caslon]] リバイバル&lt;br /&gt;
* [[Wikipedia:ja:Linux Libertine|Linux Libertine]] ({{Pkg|ttf-linux-libertine}}) - Unicode 対応: ラテン・ギリシア・キリル・ヘブライ文字&lt;br /&gt;
* [http://www.gust.org.pl/projects/e-foundry/tex-gyre/index_html TeX Gyre Termes] ({{Pkg|tex-gyre-fonts}}) – Times New Roman と視覚的に似ています(ただし、メトリックに若干の違いがあります。) [[フォント#ファミリー|ファミリー]] を参照してください。&lt;br /&gt;
* [[Wikipedia:Croscore_fonts|Tinos]] ({{Pkg|ttf-croscore}}) – Times New Roman とメトリック互換ですが、視覚的に区別されます (Liberation Serif に似ています。) [[フォント#ファミリー|ファミリー]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== 未分類 ====&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|font-bh-ttf}} - X.Org Luxi フォント&lt;br /&gt;
* {{AUR|ttf-cheapskate}} - &#039;&#039;dustismo.com&#039;&#039; のフォントコレクション&lt;br /&gt;
* {{Pkg|ttf-junicode}} - 中世ラテン文字を多数収録している Junius フォント&lt;br /&gt;
* {{AUR|ttf-mph-2b-damase}} - 第1面を全てカバーするフォント&lt;br /&gt;
* {{Pkg|xorg-fonts-type1}} - [[Wikipedia:ja:PostScriptフォント|PostScript フォント]] の IBM Courier と Adobe Utopia のセット&lt;br /&gt;
* {{AUR|all-repository-fonts}} - 公式リポジトリの全てのフォントがインストールできるメタパッケージ&lt;br /&gt;
* {{AUR|ttf-google-fonts-git}} - フリーフォントの巨大コレクション (Ubuntu, Inconsolata, Droid など) 100種類以上のフォントがインストールされます。&lt;br /&gt;
&lt;br /&gt;
=== 国際文字 ===&lt;br /&gt;
&lt;br /&gt;
==== 古代文字 ====&lt;br /&gt;
&lt;br /&gt;
*{{AUR|ttf-ancient-fonts}} - エーゲ文明やエジプト文明の文字、楔形文字、アナトリア半島の諸文明やマヤ文明の古代文字などの Unicode 記号が含まれているフォント。&lt;br /&gt;
&lt;br /&gt;
====(ブライユ)点字 ====&lt;br /&gt;
*{{AUR|ttf-ubraille}} - &#039;&#039;点字&#039;&#039; の Unicode 記号が入っているフォント&lt;br /&gt;
&lt;br /&gt;
====アラビア・ウルドゥー文字====&lt;br /&gt;
*{{AUR|ttf-amiri}} - Amiria Press によって作られたクラシカルなナスフ体のアラビア文字フォント&lt;br /&gt;
*{{AUR|ttf-arabeyes-fonts}} - フリーのアラビア文字フォントのコレクション&lt;br /&gt;
*{{AUR|ttf-qurancomplex-fonts}} - メディナの King Fahd Glorious Quran Printing Complex によるフォント&lt;br /&gt;
*{{AUR|ttf-sil-lateef}} - SIL による Unicode 対応アラビア文字フォント&lt;br /&gt;
*{{AUR|ttf-sil-scheherazade}} - SIL による Unicode 対応アラビア文字フォント&lt;br /&gt;
&lt;br /&gt;
==== 漢字文化圏 ====&lt;br /&gt;
&lt;br /&gt;
===== 汎 CJK =====&lt;br /&gt;
* Adobe Source Han フォント&lt;br /&gt;
巨大なフォントコレクション。簡体字、繁体字、日本語、韓国語を包括的にサポート。統一されたデザインと外観。&lt;br /&gt;
:*{{Pkg|adobe-source-han-sans-otc-fonts}} - 明朝体&lt;br /&gt;
:*{{Pkg|adobe-source-han-serif-otc-fonts}} - ゴシック体&lt;br /&gt;
* {{Pkg|noto-fonts-cjk}} - 簡体字中国語・台湾および香港の繁体字中国語・日本語・韓国語を包括的にサポートする巨大なフォントコレクション。{{Pkg|adobe-source-han-sans-otc-fonts}} のリブランド版。&lt;br /&gt;
&lt;br /&gt;
====== 旧字体 ======&lt;br /&gt;
&lt;br /&gt;
中国大陸では &#039;&#039;旧字形&#039;&#039;、台湾・香港では &#039;&#039;伝統字形&#039;&#039;、日本では &#039;&#039;旧字体&#039;&#039; と呼ばれる字体。&lt;br /&gt;
* {{AUR|ttf-i.bming}} - 明朝体。開発終了。&lt;br /&gt;
* {{AUR|ttf-i.ming}} - 明朝体。上記 i.bming の後継。&lt;br /&gt;
&lt;br /&gt;
===== 中国語 =====&lt;br /&gt;
* Adobe Source Han フォント&lt;br /&gt;
** {{Pkg|adobe-source-han-sans-cn-fonts}} - 簡体字の OpenType/CFF ゴシック体フォント&lt;br /&gt;
** {{Pkg|adobe-source-han-sans-tw-fonts}} - 繁体字の OpenType/CFF ゴシック体フォント&lt;br /&gt;
** {{Pkg|adobe-source-han-serif-cn-fonts}} - 簡体字の OpenType/CFF 明朝体フォント&lt;br /&gt;
** {{Pkg|adobe-source-han-serif-tw-fonts}} - 簡体字の OpenType/CFF 明朝体フォント&lt;br /&gt;
&lt;br /&gt;
* Noto フォント&lt;br /&gt;
** {{AUR|noto-fonts-sc}} - {{Pkg|noto-fonts-cjk}}から簡体字フォントだけを切り出したもの。&lt;br /&gt;
** {{AUR|noto-fonts-tc}} - {{Pkg|noto-fonts-cjk}}から台湾の繁体字フォントだけを切り出したもの。&lt;br /&gt;
&lt;br /&gt;
* WenQuanYi フォント&lt;br /&gt;
** {{Pkg|wqy-zenhei}} - ゴシック体漢字アウトラインフォント、ビットマップの宋体も含まれる (日本語(の一部)とハングルもサポート)&lt;br /&gt;
** {{Pkg|wqy-bitmapfont}} - ビットマップ明朝体漢字フォント。&lt;br /&gt;
&lt;br /&gt;
* Arphic フォント&lt;br /&gt;
** {{Pkg|ttf-arphic-ukai}} - &#039;&#039;Kaiti&#039;&#039; (筆文字) Unicode 対応フォント (アンチエイリアス推奨)&lt;br /&gt;
** {{Pkg|ttf-arphic-uming}} - &#039;&#039;Mingti&#039;&#039; (活字) Unicode 対応フォント。&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|opendesktop-fonts}} - &#039;&#039;New Sung&#039;&#039; フォント、旧 ttf-fireflysung パッケージ。&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|ttf-hannom}} - 中国語とベトナム語の漢字とチュノムに対応した TrueType フォント。&lt;br /&gt;
&lt;br /&gt;
* 台湾教育部発行の標準フォント&lt;br /&gt;
** {{AUR|ttf-tw}} - 台湾教育部発行の楷書と明朝体の繁体字フォント。&lt;br /&gt;
** {{AUR|ttf-twcns-fonts}} - 台湾教育部発行の中国語 TrueType フォント。CNS11643 に対応し、楷書と明朝体が含まれる。&lt;br /&gt;
&lt;br /&gt;
*Windows の中国語フォント&lt;br /&gt;
**{{AUR|ttf-ms-win8-zh_cn}} - Windows8 の簡体字フォント。&lt;br /&gt;
**{{AUR|ttf-ms-win8-zh_tw}} - Windows8 の繁体字フォント。&lt;br /&gt;
**{{AUR|ttf-ms-win10-zh_cn}} - Windows10 の簡体字フォント。&lt;br /&gt;
**{{AUR|ttf-ms-win10-zh_tw}} - Windows10 の繁体字フォント。&lt;br /&gt;
&lt;br /&gt;
=====日本語=====&lt;br /&gt;
&lt;br /&gt;
* Adobe Source Han フォント&lt;br /&gt;
**{{Pkg|adobe-source-han-sans-jp-fonts}} - 日本語 OpenType/CFF ゴシック体フォント。&lt;br /&gt;
**{{Pkg|adobe-source-han-serif-jp-fonts}} - 日本語 OpenType/CFF 明朝体フォント。&lt;br /&gt;
**{{AUR|otf-source-han-code-jp}} - 日本語 OpenType/CFF コーディング用フォント。&lt;br /&gt;
&lt;br /&gt;
* IPA フォント&lt;br /&gt;
**{{Pkg|otf-ipafont}} - 日常的に使える日本語ゴシック体と明朝体のフォントセット。一番高品質なオープンソースフォントの一つ。openSUSE-ja のデフォルト。&lt;br /&gt;
**{{Pkg|otf-ipaexfont}} - 字幅が調整された IPA フォント。&lt;br /&gt;
**{{Pkg|otf-ipamjfont}} - 人名の異体字を収録した行政機関向けフォント。変体仮名対応。&lt;br /&gt;
**{{AUR|otf-takao}}, {{AUR|otf-takaoex}}, {{AUR|otf-takaomj}} - Ubuntu の日本コミュニティによる IPA 派生フォント。&lt;br /&gt;
&lt;br /&gt;
*M+ フォント&lt;br /&gt;
**{{AUR|ttf-mplus}} - 近代的なゴシック体日本語アウトラインフォント。日本語の平仮名・片仮名、Basic Latin・Latin-1 Supplement・Latin Extended-A 文字セット、ほぼ全ての日本語の漢字(第一水準漢字まで完全に対応)と IPA 拡張、ギリシア文字、キリル文字、ベトナム語を収録。7 ウェイト(プロポーショナル)と 5 ウェイト(等幅)を用意。&lt;br /&gt;
**{{AUR|ttf-rounded-mplus}} - 丸ゴシック化した M+ フォント。&lt;br /&gt;
&lt;br /&gt;
*モナーフォント&lt;br /&gt;
**{{AUR|ttf-mona}} - オリジナルのモナーフォント。&lt;br /&gt;
**{{AUR|ttf-monapo}} - [[wikipedia:ja:アスキーアート|2ちゃんねるのアスキーアート]]を正確に表示できる日本語フォント。&lt;br /&gt;
&lt;br /&gt;
*{{Pkg|ttf-hanazono}} - フリーの日本語漢字フォント、明朝体。変体仮名対応。&lt;br /&gt;
*{{Pkg|ttf-sazanami}} - フリーの日本語 TrueType フォント。既にメンテナンスされていませんが、環境によってはフォールバックフォントとして使われています。&lt;br /&gt;
*{{AUR|ttf-ume}} - フリーのゴシック体・明朝体フォント。&lt;br /&gt;
*{{AUR|ttf-vlgothic}} - 日本語ゴシック体フォント。Debian/Fedora/Vine Linux のデフォルト。&lt;br /&gt;
*{{AUR|ttf-mikachan}} - 先駆的な手書き日本語フォント。&lt;br /&gt;
*{{AUR|ttf-oradano-mincho}} - 明治・大正時代の活字風のフォント。&lt;br /&gt;
*{{AUR|otf-aoyanagi-reisyo-simo}} - フリーの隷書体毛筆フォント。&lt;br /&gt;
&lt;br /&gt;
*合成フォント&lt;br /&gt;
**{{AUR|ttf-kazesawa-git}} - 可読性が高くウェイトが豊富なフォント。&lt;br /&gt;
**{{AUR|otf-kingen}} - オールド系の錦明朝と源ノ明朝 Light の合成フォント。&lt;br /&gt;
**{{AUR|ttf-komatuna}} - 小夏フォントと M+ フォントの合成フォント。&lt;br /&gt;
**{{AUR|ttf-koruri}} - {{AUR|ttf-mplus}} と Open Sans をミックスして作られた日本語 TrueType フォント。&lt;br /&gt;
**{{AUR|ttf-migu}} と {{AUR|ttf-migmix}} - M+ と IPA の合成フォント。&lt;br /&gt;
**{{AUR|ttf-myrica}} と {{AUR|ttf-myricam}} - Ricty ベースのプログラマ用フォント。&lt;br /&gt;
**{{AUR|ttf-ricty}} - Inconsolata と Migu 1M フォントから生成される Linux プログラミング用フォント。&lt;br /&gt;
**{{AUR|ttf-vlkoruri}} - {{AUR|ttf-vlgothic}} と Open Sans をミックスして作られた日本語 TrueType フォント。&lt;br /&gt;
**{{AUR|ttf-umeplus}} - 梅フォントと M+ フォントの合成フォント。&lt;br /&gt;
&lt;br /&gt;
*Windows の日本語フォント&lt;br /&gt;
**{{AUR|ttf-ms-win8-japanese}} - Windows8 の日本語フォント。&lt;br /&gt;
**{{AUR|ttf-ms-win10-japanese}} - Windows10 の日本語フォント。&lt;br /&gt;
&lt;br /&gt;
===== 韓国語 =====&lt;br /&gt;
*{{Pkg|adobe-source-han-sans-kr-fonts}} - 韓国語 OpenType/CFF フォント。漢字を含む。&lt;br /&gt;
*{{Pkg|ttf-baekmuk}} - 韓国語 TrueType フォントのコレクション。明朝体・ゴシック体・丸ゴシック体。漢字を含む。&lt;br /&gt;
*{{AUR|spoqa-han-sans}} - Spoqa によってカスタマイズされた Source Han Sans 漢字を含む。&lt;br /&gt;
*{{AUR|ttf-d2coding}} - Naver によって作成された D2Coding 等幅 TrueType フォント。漢字を含む。&lt;br /&gt;
*{{AUR|ttf-nanum}} - Nanum シリーズ TrueType フォントコレクション。一部のフォントはハングルのみ。&lt;br /&gt;
*{{AUR|ttf-nanumgothic_coding}} - Nanum シリーズ幅調整 TrueType フォント&lt;br /&gt;
&lt;br /&gt;
===== ベトナム語 =====&lt;br /&gt;
* {{Pkg|ttf-hannom}} - 中国語とベトナム語の漢字とチュノムに対応したTrueType フォント。&lt;br /&gt;
&lt;br /&gt;
====キリル文字====&lt;br /&gt;
[[#ラテン文字]]も見てください。&lt;br /&gt;
*{{AUR|ttf-paratype}} - ParaType のフォントファミリー: sans, serif, mono, 拡張キリル・ラテン文字, OFL ライセンス&lt;br /&gt;
*{{AUR|otf-russkopis}} - キリル文字のフリーな OpenType 筆記体フォント&lt;br /&gt;
&lt;br /&gt;
====ギリシア文字====&lt;br /&gt;
ほとんど全ての Unicode 対応フォントにはギリシア文字セットが(アクセント注記式も)含まれています。追加フォントパッケージには、Unicode 文字に完全には対応していないながらも高品質なギリシア文字(もちろんラテン文字も)活字を使えるパッケージがあります:&lt;br /&gt;
*{{AUR|otf-gfs}} - Greek Font Society による OpenType フォントのセレクション&lt;br /&gt;
*{{AUR|ttf-mgopen}} - Magenta によるプロフェッショナル TrueType フォント&lt;br /&gt;
&lt;br /&gt;
====ヘブライ文字====&lt;br /&gt;
*{{AUR|culmus}} - フリーのヘブライ文字のコレクション&lt;br /&gt;
&lt;br /&gt;
====インド系文字====&lt;br /&gt;
*{{AUR|ttf-freebanglafont}} - ベンガル文字フォント&lt;br /&gt;
*{{Pkg|ttf-indic-otf}} - インド系文字 OpenType フォントコレクション (ttf-freebanglafont を含む)&lt;br /&gt;
* {{AUR|lohit-fonts}} - Fedora プロジェクトによるインド系文字 TrueType フォント (Oriya フォントなどを含む)&lt;br /&gt;
* {{AUR|ttf-devanagarifonts}} - デーヴァナーガリー TrueType フォント (283個のフォントを含む)&lt;br /&gt;
* {{AUR|ttf-gurmukhi-fonts_sikhnet}} - TrueType グルムキー文字フォント (gurbaniwebthick, prabhki)&lt;br /&gt;
* {{AUR|ttf-gurmukhi_punjabi}} - TTF グルムキー文字/パンジャーブ語 (252個のフォントを含む)&lt;br /&gt;
* {{AUR|ttf-gujrati-fonts}} - TTF グジャラート語フォント (Avantika, Gopika, Shree768)&lt;br /&gt;
* {{AUR|ttf-kannada-font}} - カンナダ語、インドのカルナータカ州の公用語&lt;br /&gt;
* {{AUR|ttf-lklug}} - シンハラ文字 Unicode 対応フォント&lt;br /&gt;
*{{AUR|ttf-tamil}} - タミル文字 Unicode 対応フォント&lt;br /&gt;
* {{AUR|ttf-urdufonts}} - ウルドゥー語のためのフォント (Jameel Noori Nastaleeq (+kasheeda), Nafees Web Naskh, PDMS Saleem Quran Font) と Jameel Noori Nastaleeq をデフォルトフォントにするフォント設定。&lt;br /&gt;
&lt;br /&gt;
====クメール文字====&lt;br /&gt;
*{{Pkg|ttf-khmer}} - クメール語で使われる文字のフォント&lt;br /&gt;
*[https://www.google.com/fonts/specimen/Hanuman Hanuman] ({{AUR|ttf-google-fonts-git}})&lt;br /&gt;
&lt;br /&gt;
==== モンゴル・ツングース語族 ====&lt;br /&gt;
&lt;br /&gt;
* {{AUR|ttf-abkai}} - シベ文字・満州文字・ダウール文字フォント (開発途中で不完全です)&lt;br /&gt;
&lt;br /&gt;
==== ペルシア文字 ====&lt;br /&gt;
&lt;br /&gt;
* {{AUR|persian-fonts}} - AUR に存在する全てのペルシア語フォントをインストールするためのメタパッケージ。&lt;br /&gt;
* {{AUR|borna-fonts}} - Borna Rayaneh Co. 製のペルシア文字 B フォントシリーズ。&lt;br /&gt;
* {{AUR|iran-nastaliq-fonts}} - フリーの Unicode 対応ペルシア文字筆記体フォント。&lt;br /&gt;
* {{AUR|iranian-fonts}} - Iranian-Sans と Iranian-Serif のペルシア文字フォントファミリー。&lt;br /&gt;
* {{AUR|ir-standard-fonts}} - イラン通信情報技術最高評議会 (SCICT) による標準ペルシア語フォント。&lt;br /&gt;
* {{AUR|persian-hm-ftx-fonts}} - X Series 2, Metafont, FarsiTeX フォントから派生して作られたカシーダが使えるペルシア文字フォントシリーズ。&lt;br /&gt;
* {{AUR|persian-hm-xs2-fonts}} - X Series 2 フォントから派生して作られたカシーダが使えるペルシア文字フォントシリーズ。&lt;br /&gt;
* {{AUR|sina-fonts}} - Sina Pardazesh Co. 製のペルシア文字フォントシリーズ。&lt;br /&gt;
* {{AUR|gandom-fonts}}, {{AUR|parastoo-fonts}}, {{AUR|sahel-fonts}}, {{AUR|samim-fonts}}, {{AUR|shabnam-fonts}}, {{AUR|tanha-fonts}}, {{AUR|vazir-fonts}}, {{AUR|vazir-code-fonts}} - Ali Rasti Kerdar によって作られた美麗なペルシア語フォント。&lt;br /&gt;
* {{AUR|ttf-yas}} - Yas Persian フォントシリーズ。&lt;br /&gt;
* {{AUR|ttf-x2}} - ペルシア語、アラビア語、ウルドゥー語、パシュトー語、ウズベク語、クルド語、ウイグル語、古代トルコ語 (オスマン語)、現代トルコ語 (ローマ字) までサポートしているフリーフォント。&lt;br /&gt;
&lt;br /&gt;
==== タイ・カダイ語族 ====&lt;br /&gt;
&lt;br /&gt;
* {{AUR|fonts-tlwg}} - スケーラブルなタイ語フォントのコレクション&lt;br /&gt;
* {{AUR|ttf-lao}} - ラオス語 TTF フォント (Phetsarath_OT)&lt;br /&gt;
* {{AUR|ttf-lao-fonts}} - ラオス語 TTF フォント、Unicode 版と Windows 用の非 Unicode 版&lt;br /&gt;
&lt;br /&gt;
==== チベット・ビルマ語派 ====&lt;br /&gt;
*{{Pkg|ttf-tibetan-machine}} - チベット語 Machine TTFont&lt;br /&gt;
* {{AUR|ttf-myanmar-fonts}} - myordbok.com の121個のフォント&lt;br /&gt;
&lt;br /&gt;
=== 絵文字と記号 ===&lt;br /&gt;
&lt;br /&gt;
Unicode 規格には「絵文字」と呼ばれる画像文字のためにあてられたセクションが存在します。&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|noto-fonts-emoji}} - Android や Google ハングアウトなどで使用される Google の絵文字フォント。Unicode に新しく追加された絵文字は Noto フォントでは正しく表示されないことがあります。&lt;br /&gt;
* {{AUR|ttf-symbola}} - 多数の Unicode 記号が含まれており、絵文字も存在します。アウトラインフォント。&lt;br /&gt;
* {{AUR|ttf-emojione}}{{Broken package link|置換パッケージ: {{Pkg|ttf-joypixels}}}} - デザインの正確性が重視されているオープンソースの絵文字セット。&lt;br /&gt;
* {{AUR|ttf-twemoji-color}} - Twitter のオープンソース絵文字。&lt;br /&gt;
&lt;br /&gt;
複数の文字からなる[[wikipedia:ja:顔文字#日本型の顔文字|顔文字]]は CJK やインド文字フォントなど様々な文字セットを使っています。次のパッケージは既存の顔文字の大部分をカバーします: {{Pkg|ttf-freefont}}{{Broken package link|パッケージが存在しません}}, {{Pkg|ttf-arphic-uming}}, {{Pkg|ttf-indic-otf}}&lt;br /&gt;
&lt;br /&gt;
絵文字フォントを有効にしてメインのフォントファミリーの補助として絵文字ファミリーを追加したい場合、以下を[[フォント設定]]に追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fonts/local.conf|&amp;lt;nowiki&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE fontconfig SYSTEM &amp;quot;fonts.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fontconfig&amp;gt;&lt;br /&gt;
  &amp;lt;match&amp;gt;&lt;br /&gt;
    &amp;lt;test name=&amp;quot;family&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;string&amp;gt;serif&amp;lt;/string&amp;gt;&lt;br /&gt;
    &amp;lt;/test&amp;gt;&lt;br /&gt;
    &amp;lt;edit name=&amp;quot;family&amp;quot; mode=&amp;quot;prepend&amp;quot; binding=&amp;quot;weak&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;string&amp;gt;Emoji&amp;lt;/string&amp;gt;&lt;br /&gt;
    &amp;lt;/edit&amp;gt;&lt;br /&gt;
  &amp;lt;/match&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;match&amp;gt;&lt;br /&gt;
    &amp;lt;test name=&amp;quot;family&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;string&amp;gt;sans-serif&amp;lt;/string&amp;gt;&lt;br /&gt;
    &amp;lt;/test&amp;gt;&lt;br /&gt;
    &amp;lt;edit name=&amp;quot;family&amp;quot; mode=&amp;quot;prepend&amp;quot; binding=&amp;quot;weak&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;string&amp;gt;Emoji&amp;lt;/string&amp;gt;&lt;br /&gt;
    &amp;lt;/edit&amp;gt;&lt;br /&gt;
  &amp;lt;/match&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;match&amp;gt;&lt;br /&gt;
    &amp;lt;test name=&amp;quot;family&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;string&amp;gt;monospace&amp;lt;/string&amp;gt;&lt;br /&gt;
    &amp;lt;/test&amp;gt;&lt;br /&gt;
    &amp;lt;edit name=&amp;quot;family&amp;quot; mode=&amp;quot;prepend&amp;quot; binding=&amp;quot;weak&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;string&amp;gt;Emoji&amp;lt;/string&amp;gt;&lt;br /&gt;
    &amp;lt;/edit&amp;gt;&lt;br /&gt;
  &amp;lt;/match&amp;gt;&lt;br /&gt;
&amp;lt;/fontconfig&amp;gt;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===数学===&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|font-mathematica}}{{Broken package link|パッケージが存在しません}} - Wolfram Research, Inc による Mathematica フォント&lt;br /&gt;
* {{Pkg|texlive-core}} と {{Pkg|texlive-fontsextra}} - Latin Modern Math や [[Wikipedia:STIX Fonts project|STIX フォント]] などの多数の数式フォントが含まれています。設定方法は [[TeX Live#フォント]]を見てください。&lt;br /&gt;
* {{AUR|otf-stix}} - 右から左に書かれる数式に対応する STIX の最新・スタンドアロン版&lt;br /&gt;
* {{Pkg|otf-latin-modern}}, {{Pkg|otf-latinmodern-math}} - LaTeX で使われている Computer Modern フォントの改良版&lt;br /&gt;
* {{AUR|ttf-computer-modern-fonts}}, {{AUR|otf-cm-unicode}} - [[wikipedia:ja:Computer Modern|Computer Modern]] (of TeX fame) フォント&lt;br /&gt;
* {{AUR|ttf-mathtype}} - MathType フォント&lt;br /&gt;
&lt;br /&gt;
=== 他のオペレーティングシステムのフォント ===&lt;br /&gt;
* {{AUR|ttf-mac-fonts}} - macOS の TrueType フォント&lt;br /&gt;
&lt;br /&gt;
Windows のフォントについては [[MS フォント]]や[[メトリック互換フォント]]を見てください。&lt;br /&gt;
&lt;br /&gt;
== X11 でのフォント順序 ==&lt;br /&gt;
Fontconfig は自動的に要求にあったフォントを選びだします。例えば、英語と日本語が含まれるウィンドウを表示しようとすると、デフォルトのフォントが日本語をサポートしていない場合、日本語を表示できるフォントに切り替わります。&lt;br /&gt;
&lt;br /&gt;
Fontconfig はユーザーに {{ic|$XDG_CONFIG_HOME/fontconfig/fonts.conf}} を使って好きな順番を設定するように定めています。&lt;br /&gt;
他の Serif フォントが表示できない場合、特定の日本語フォントを選ぶようにしてほしいときは、ファイルを次のようにします:&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;!DOCTYPE fontconfig SYSTEM &amp;quot;fonts.dtd&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;fontconfig&amp;gt;&lt;br /&gt;
 &amp;lt;alias&amp;gt;&lt;br /&gt;
    &amp;lt;family&amp;gt;serif&amp;lt;/family&amp;gt;&lt;br /&gt;
    &amp;lt;prefer&amp;gt;&lt;br /&gt;
      &amp;lt;family&amp;gt;好みのラテン文字 Serif フォント名&amp;lt;/family&amp;gt;&lt;br /&gt;
      &amp;lt;family&amp;gt;日本語フォント名&amp;lt;/family&amp;gt;&lt;br /&gt;
    &amp;lt;/prefer&amp;gt;&lt;br /&gt;
  &amp;lt;/alias&amp;gt;&lt;br /&gt;
 &amp;lt;/fontconfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
同じように Sans-serif や monospaced 用のセクションを作ることもできます。詳しくは fontconfig マニュアルを見て下さい。&lt;br /&gt;
&lt;br /&gt;
[[フォント設定#フォントの置き換え]]も参照。&lt;br /&gt;
&lt;br /&gt;
== フォントエイリアス ==&lt;br /&gt;
Linux では、アプリケーションが似たフォントを使えるようにするために、他のフォントを表すフォントエイリアスが複数用意されています。一般的なエイリアス: {{ic|serif}} はセリフ体のフォントを表します (例: DejaVu Serif); {{ic|sans-serif}} はサンセリフ体のフォントを表します (例: DejaVu Sans); {{ic|monospace}} は等幅フォントを表します (例: DejaVu Sans Mono)。しかし、エイリアスが表すフォントは変わることがあり、[[KDE]] などの[[デスクトップ環境]]にあるようなフォント管理ツールでは対応関係が示されないことがしばしばです。&lt;br /&gt;
&lt;br /&gt;
エイリアスがどのフォントを示しているのか調べるには次を実行します:&lt;br /&gt;
{{hc|$ fc-match monospace|DejaVuSansMono.ttf: &amp;quot;DejaVu Sans Mono&amp;quot; &amp;quot;Book&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
この場合 {{ic|DejaVuSansMono.ttf}} が monospace エイリアスによって表示されるフォントです。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== インストールした全てのフォントを一覧する ===&lt;br /&gt;
次のコマンドを使うことであなたのシステムで利用できる全てのインストール済みフォントを一覧できます。&lt;br /&gt;
&lt;br /&gt;
 $ fc-list&lt;br /&gt;
&lt;br /&gt;
{{Pkg|font-manager}} パッケージを使用すると、GUIベースでフォントごとの字体を確認することができます。&lt;br /&gt;
&lt;br /&gt;
 $ font-manager&lt;br /&gt;
&lt;br /&gt;
=== 特定の言語のフォントを一覧する ===&lt;br /&gt;
&lt;br /&gt;
アプリケーションやブラウザは fontconfig の設定に基づいて、Unicode のテキストを表示するためのグリフが入っているフォントを選択します。インストールしたフォントの中で特定の言語のフォントをリストアップするには、{{ic|&amp;lt;nowiki&amp;gt;fc-list :lang=&amp;quot;two letter language code&amp;quot;&amp;lt;/nowiki&amp;gt;}} コマンドを実行してください。例えば、日本語フォントまたは日本語をサポートしているフォントを確認するには:&lt;br /&gt;
{{hc|$ fc-list :lang&amp;amp;#61;ja &amp;amp;#124; cut -d: -f1|2=&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
/usr/share/fonts/TTF/ipam-mona.ttf&lt;br /&gt;
/usr/share/fonts/TTF/ipamp-mona.ttf&lt;br /&gt;
/usr/share/fonts/TTF/ipagui-mona.ttf&lt;br /&gt;
/usr/share/fonts/OTF/ipamp.ttf&lt;br /&gt;
/usr/share/fonts/wenquanyi/wqy-microhei/wqy-microhei.ttc&lt;br /&gt;
/usr/share/fonts/TTF/ipag-mona.ttf&lt;br /&gt;
/usr/share/fonts/OTF/ipam.ttf&lt;br /&gt;
/usr/share/fonts/TTF/ipagp-mona.ttf&lt;br /&gt;
/usr/share/fonts/OTF/ipagp.ttf&lt;br /&gt;
/usr/share/fonts/wenquanyi/wqy-microhei/wqy-microhei.ttc&lt;br /&gt;
/usr/share/fonts/OTF/ipag.ttf&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== アプリケーション固有のフォントキャッシュ ===&lt;br /&gt;
&lt;br /&gt;
Matplotlib ({{pkg|python-matplotlib}} や {{AUR|python2-matplotlib}}) は自身のフォントキャッシュを使っているため、フォントを更新した後は、{{ic|~/.matplotlib/fontList.cache}} を削除してキャッシュを再生成させてください [http://matplotlib.1069221.n5.nabble.com/getting-matplotlib-to-recognize-a-new-font-td40500.html]。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [http://behdad.org/text/ State of Text Rendering]&lt;br /&gt;
* [https://fontlibrary.org/ Font Library] - フリーライセンスのフォントライブラリ&lt;br /&gt;
* [https://screenshots.debian.net/packages?search=fonts&amp;amp;show=with screenshots.debian.net のフォント一覧]&lt;/div&gt;</summary>
		<author><name>がおびん</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Bluetooth_%E3%83%98%E3%83%83%E3%83%89%E3%82%BB%E3%83%83%E3%83%88&amp;diff=27363</id>
		<title>Bluetooth ヘッドセット</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Bluetooth_%E3%83%98%E3%83%83%E3%83%89%E3%82%BB%E3%83%83%E3%83%88&amp;diff=27363"/>
		<updated>2022-09-19T14:14:04Z</updated>

		<summary type="html">&lt;p&gt;がおびん: /* AuthenticationFailed でペアリングが失敗する */ hciconfig は廃止されたため英語版の記述を翻訳して追記した。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:サウンド]]&lt;br /&gt;
[[Category:Bluetooth]]&lt;br /&gt;
[[en:Bluetooth headset]]&lt;br /&gt;
[[ru:Bluetooth headset]]&lt;br /&gt;
[[zh-hans:Bluetooth headset]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Bluetooth}}&lt;br /&gt;
{{Related|Bluez4}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
現在、Arch Linux のデフォルト環境ではリモートオーディオ再生の A2DP プロファイル (Audio Sink) をサポートしています。&lt;br /&gt;
&lt;br /&gt;
{{Note|Bluez5 は [[PulseAudio]] しかサポートしておらず [[ALSA]] はサポートしていません。PulseAudio を使いたくない場合は AUR から {{AUR|bluez-alsa-git}} をインストールする必要があります。}}&lt;br /&gt;
&lt;br /&gt;
== Bluez5/PulseAudio ==&lt;br /&gt;
&lt;br /&gt;
PulseAudio 5.x はデフォルトで A2DP をサポートしています。以下のパッケージを[[インストール]]してください: {{Pkg|pulseaudio-alsa}}, {{Pkg|pulseaudio-bluetooth}}, {{Pkg|bluez}}, {{Pkg|bluez-libs}}, {{Pkg|bluez-utils}}, {{AUR|bluez-firmware}}。{{Pkg|pulseaudio-bluetooth}} がないとペアリングした後に接続することができなくなります。エラーメッセージは表示されません。&lt;br /&gt;
&lt;br /&gt;
Bluetooth システムを起動:&lt;br /&gt;
&lt;br /&gt;
 # systemctl start bluetooth&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;bluetoothctl&#039;&#039; コマンドラインユーティリティを使うことでペアリングと接続が行えます。&#039;&#039;bluetoothctl&#039;&#039; に関する詳細やトラブルシューティングは [[Bluetooth]] の記事を見てください。次のコマンドを実行することでコマンドプロンプトを開きます:&lt;br /&gt;
&lt;br /&gt;
 # bluetoothctl&lt;br /&gt;
&lt;br /&gt;
そして以下を入力:&lt;br /&gt;
&lt;br /&gt;
 # power on&lt;br /&gt;
 # agent on&lt;br /&gt;
 # default-agent&lt;br /&gt;
 # scan on&lt;br /&gt;
&lt;br /&gt;
ヘッドセットをペアリングモードにします。ヘッドセットは簡単に確認できます。例えば:&lt;br /&gt;
 [NEW] Device 00:1D:43:6D:03:26 Lasmex LBT10&lt;br /&gt;
上記の場合、デバイスの名前は &amp;quot;Lasmex LBT10&amp;quot; で MAC アドレスは &#039;&#039;00:1D:43:6D:03:26&#039;&#039; です。この MAC アドレスを使ってペアリングを開始します:&lt;br /&gt;
&lt;br /&gt;
 # pair 00:1D:43:6D:03:26&lt;br /&gt;
&lt;br /&gt;
ペアリングが完了したら、デバイスを明示的に接続する必要があります (every time?):&lt;br /&gt;
&lt;br /&gt;
 # connect 00:1D:43:6D:03:26&lt;br /&gt;
&lt;br /&gt;
全てが上手くいけば、[[PulseAudio]] にアウトプットデバイスが新しく作られます。&lt;br /&gt;
{{Note|デバイスはデフォルトではオフになっています。{{Pkg|pavucontrol}} の &amp;quot;Configuration&amp;quot; タブでオーディオプロファイル (&#039;&#039;OFF&#039;&#039;, A2DP, HFP) を選択してください。}}&lt;br /&gt;
{{Pkg|pavucontrol}} の &amp;quot;Playback&amp;quot; や &amp;quot;Recording&amp;quot; タブを使うことでデバイスに音声を転送することができます。&lt;br /&gt;
&lt;br /&gt;
スキャンを無効化してプログラムを終了:&lt;br /&gt;
 # scan off&lt;br /&gt;
 # exit&lt;br /&gt;
&lt;br /&gt;
=== 自動接続の設定 ===&lt;br /&gt;
&lt;br /&gt;
ヘッドセットを自動接続するには、PulseAudio の switch-on-connect モジュールを有効にする必要があります。以下を追加してください:&lt;br /&gt;
{{hc|/etc/pulse/default.pa|&lt;br /&gt;
# automatically switch to newly-connected devices&lt;br /&gt;
load-module module-switch-on-connect&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
それから Bluetooth ヘッドセットを信頼するように &#039;&#039;bluetoothctl&#039;&#039; を使用しないと、以下のようなエラーが表示されます:&lt;br /&gt;
 bluetoothd[487]: Authentication attempt without agent&lt;br /&gt;
 bluetoothd[487]: Access denied: org.bluez.Error.Rejected&lt;br /&gt;
&lt;br /&gt;
 [bluetooth]# trust 00:1D:43:6D:03:26&lt;br /&gt;
&lt;br /&gt;
再起動後、Bluetooth アダプタはデフォルトでは電源が入らないようになります。udev ルールを追加して電源を入れてください:&lt;br /&gt;
{{hc|/etc/udev/rules.d/10-local.rules|2=&lt;br /&gt;
# Set bluetooth power up&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;bluetooth&amp;quot;, KERNEL==&amp;quot;hci[0-9]*&amp;quot;, RUN+=&amp;quot;/usr/bin/hciconfig %k up&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== トラブルシューティング ===&lt;br /&gt;
&lt;br /&gt;
A2DP/Bluetooth ヘッドセットが動作しないという報告は多数存在します。&lt;br /&gt;
&lt;br /&gt;
==== 音声プロファイルを選択しても、ヘッドセットが機能せず音声が転送できない ====&lt;br /&gt;
&lt;br /&gt;
一見、デバイスを接続する前に音声プロファイルが選択できるようにみえますが、残念ながら何の効果もありません。メニューはレシーバーがデバイスを認識するとすぐに作成されます。&lt;br /&gt;
&lt;br /&gt;
bluetoothctl を (sudo あるいは root で) 実行して手動でデバイスを接続してください。毎回接続する手間を省くような設定オプションが存在するかもしれませんが、自動接続は上手くいきません。&lt;br /&gt;
&lt;br /&gt;
==== AuthenticationFailed でペアリングが失敗する ====&lt;br /&gt;
&lt;br /&gt;
ペアリングが失敗する場合、次のコマンドで [https://stackoverflow.com/questions/12888589/linux-command-line-howto-accept-pairing-for-bluetooth-device-without-pin SSPMode を無効化] または有効化してみてください:&lt;br /&gt;
 # btmgmt ssp off&lt;br /&gt;
または&lt;br /&gt;
 # btmgmt ssp on&lt;br /&gt;
&lt;br /&gt;
これらのコマンドを実行する間、Bluetooth 機器の電源をOFFにする必要がある可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== ペアリングは成功するが、接続が失敗する ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;bluetoothctl&#039;&#039; で以下のエラーが表示される場合:&lt;br /&gt;
&lt;br /&gt;
 [bluetooth]# connect 00:1D:43:6D:03:26&lt;br /&gt;
 Attempting to connect to 00:1D:43:6D:03:26&lt;br /&gt;
 Failed to connect: org.bluez.Error.Failed&lt;br /&gt;
&lt;br /&gt;
以下のようなコマンドを使ってログを確認してみてください:&lt;br /&gt;
&lt;br /&gt;
 # systemctl status bluetooth&lt;br /&gt;
 # journalctl -n 20&lt;br /&gt;
&lt;br /&gt;
以下のようなメッセージが確認できる場合:&lt;br /&gt;
&lt;br /&gt;
 bluetoothd[5556]: a2dp-sink profile connect failed for 00:1D:43:6D:03:26: Protocol not available&lt;br /&gt;
&lt;br /&gt;
おそらく {{Pkg|pulseaudio-bluetooth}} パッケージがインストールされていないのが原因です。インストールしたら、pulseaudio を再起動してください。&lt;br /&gt;
&lt;br /&gt;
パッケージが欠けていることが問題ではない場合、PulseAudio が上手く起動していないのが原因です。一般的に PulseAudio を再起動することで問題は解決します。PulseAudio をユーザーで実行している場合に &#039;&#039;bluetoothctl&#039;&#039; を root で実行することは全く問題ありません。PulseAudio の再起動後、接続を再試行してください。ペアリングを繰り返す必要はありません。&lt;br /&gt;
&lt;br /&gt;
PulseAudio の再起動で問題が直らないときは、module-bluetooth-discover をロードしてください:&lt;br /&gt;
&lt;br /&gt;
 # pactl load-module module-bluetooth-discover&lt;br /&gt;
&lt;br /&gt;
上記の load-module コマンドは {{ic|/etc/pulse/default.pa}} に追加することができます。&lt;br /&gt;
&lt;br /&gt;
それでも問題が修正されない場合、あるいは PulseAudio の system-wide モードを使っていない場合、以下の PulseAudio モジュールもロードしてください (以下のモジュールも {{ic|default.pa}} や {{ic|system.pa}} でロードすることができます):&lt;br /&gt;
&lt;br /&gt;
 module-bluetooth-policy&lt;br /&gt;
 module-bluez5-device&lt;br /&gt;
 module-bluez5-discover&lt;br /&gt;
&lt;br /&gt;
==== 接続は成功するが、音が聞こえない ====&lt;br /&gt;
&lt;br /&gt;
システムログに以下のメッセージが記録されてないか確認してください:&lt;br /&gt;
&lt;br /&gt;
 bluetoothd[5556]: Endpoint registered: sender=:1.83 path=/MediaEndpoint/A2DPSource&lt;br /&gt;
 bluetoothd[5556]: Endpoint registered: sender=:1.83 path=/MediaEndpoint/A2DPSink&lt;br /&gt;
&lt;br /&gt;
上記のようなメッセージがある場合、PulseAudio の設定を確認してください。もしくは、一度戻って接続が成功するかどうか確かめてください。&lt;br /&gt;
&lt;br /&gt;
[[GDM]] を使っている場合、PulseAudio のインスタンスが起動して、bluetooth デバイスの接続を奪っている可能性があります。以下のコマンドを実行して GDM ユーザーで pulseaudio ソケットを[[systemd#ユニットを使う|マスク]]することで問題は解決します:&lt;br /&gt;
&lt;br /&gt;
 # mkdir -p ~gdm/.config/systemd/user&lt;br /&gt;
 # ln -s /dev/null ~gdm/.config/systemd/user/pulseaudio.socket&lt;br /&gt;
&lt;br /&gt;
再起動すれば PulseAudio のインスタンスが起動しなくなるはずです。&lt;br /&gt;
&lt;br /&gt;
bluez がヘッドセットを a2dp に対応していると認識してくれない場合もあります。そのようなときは、以下のコマンドで bluetooth デバイスのインデックスを検索してください:&lt;br /&gt;
&lt;br /&gt;
 $ pacmd ls&lt;br /&gt;
&lt;br /&gt;
以下のように bluetooth ヘッドセットに関連するセクションが出力されます:&lt;br /&gt;
&lt;br /&gt;
{{hc&lt;br /&gt;
|1=pacmd ls&lt;br /&gt;
|2=index: 2&lt;br /&gt;
        name: &amp;lt;bluez_card.XX_XX_XX_XX_XX_XX&amp;gt;&lt;br /&gt;
        driver: &amp;lt;module-bluez5-device.c&amp;gt;&lt;br /&gt;
        owner module: 27&lt;br /&gt;
        properties:&lt;br /&gt;
                device.description = &amp;quot;SONY MDR-100ABN&amp;quot;&lt;br /&gt;
                device.string = &amp;quot;XX:XX:XX:XX:XX:XX&amp;quot;&lt;br /&gt;
                device.api = &amp;quot;bluez&amp;quot;&lt;br /&gt;
                device.class = &amp;quot;sound&amp;quot;&lt;br /&gt;
                ...}}&lt;br /&gt;
&lt;br /&gt;
プロファイルを手動で設定するには、以下のコマンドを実行 ({{ic|2}} は {{ic|pacmd ls}} で確認したデバイスのインデックスに置き換えてください):&lt;br /&gt;
&lt;br /&gt;
 $ pacmd set-card-profile 2 a2dp_sink&lt;br /&gt;
&lt;br /&gt;
==== UUIDs has unsupported type ====&lt;br /&gt;
&lt;br /&gt;
ペアリング中に &#039;&#039;bluetoothctl&#039;&#039; で以下のような出力がされることがあります:&lt;br /&gt;
&lt;br /&gt;
 [CHG] Device 00:1D:43:6D:03:26 UUIDs has unsupported type&lt;br /&gt;
&lt;br /&gt;
このメッセージは無視してかまいません。&lt;br /&gt;
&lt;br /&gt;
==== PC からはデバイスがペアリング済みと認識されるがデバイスから PC が認識されていない ====&lt;br /&gt;
&lt;br /&gt;
デバイスが bluetooth LE のペアリングに対応していない可能性があります。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/bluetooth/main.conf}} で {{ic|1=ControllerMode = bredr}} を設定してみてください。詳しくは [https://unix.stackexchange.com/questions/292189/pairing-bose-qc-35-over-bluetooth-on-fedora] を参照。&lt;br /&gt;
&lt;br /&gt;
== 旧式の方法: ALSA-BTSCO ==&lt;br /&gt;
&lt;br /&gt;
今日、bluez 3.16 以上では簡単に bluetooth ヘッドセットをセットアップすることができます。しかしながら [http://fosswire.com/2008/01/11/a2dp-stereo-linux/ このブログ] にある古い python スクリプトを使用するという方法もあります (gconftool-2 で動作するようにスクリプトを編集してください)。また、同じ機能の bash スクリプトが [http://lymanrb.blogspot.com/2008/05/linux.html こちら] に存在します。&lt;br /&gt;
&lt;br /&gt;
ヘッドセットの bdaddr が必要です。bdaddr は &#039;&#039;12:34:56:78:9A:BC&#039;&#039; という形式になります。ヘッドセットのドキュメントを読んで探すか、&#039;&#039;&#039;hcitool scan&#039;&#039;&#039; コマンドを実行してください。&lt;br /&gt;
&lt;br /&gt;
{{AUR|btsco}} をインストールしてください。&lt;br /&gt;
&lt;br /&gt;
次のコマンドでカーネルモジュールをロード:&lt;br /&gt;
 # modprobe snd-bt-sco&lt;br /&gt;
これで新しい音声デバイスが作成されます。{{ic|alsamixer -cN}} (N は基本的に 1 になります) を使ってボリュームを設定してください。&#039;&#039;BT headset&#039;&#039; デバイスを選択することで alsa 対応のアプリケーションからデバイスを使用することができます。あるいは OSS アプリケーションでは音声デバイスとして {{ic|/dev/dspN}} を使用します。&lt;br /&gt;
&lt;br /&gt;
実際に音を流すには、先にヘッドセットをコンピュータに接続する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== ヘッドセットを接続 ===&lt;br /&gt;
&lt;br /&gt;
初めてヘッドセットを接続する場合、まずペアリングのセクションを読んでください。ヘッドセットをコンピュータに接続するには、次のコマンドを使用します:&lt;br /&gt;
 $ btsco -f &amp;lt;bdaddr&amp;gt;&lt;br /&gt;
例:&lt;br /&gt;
 $ btsco -f 12:34:56:78:9A:BC&lt;br /&gt;
&lt;br /&gt;
==== ヘッドセットとコンピュータをペアリング ====&lt;br /&gt;
&lt;br /&gt;
ヘッドセットとの最初の接続時に、コンピュータとペアリングする必要があります。ペアリングするときは、ヘッドセットの PIN が必要です。使用するヘッドセットによっては、ヘッドセットをリセットする必要があり、別の bluetooth デバイスでヘッドセットを使うときは毎回ペアリングしなくてはなりません。&lt;br /&gt;
&lt;br /&gt;
ヘッドセットとコンピュータをペアリングする方法は2つあります:&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;bluez-gnome&#039;&#039; を使う =====&lt;br /&gt;
&lt;br /&gt;
community リポジトリから &#039;&#039;bluez-gnome&#039;&#039; パッケージをインストールしてください。そして &#039;&#039;&#039;bt-applet&#039;&#039;&#039; プログラムを起動してください。ヘッドセットに接続しようとすると、ウィンドウが開いて PIN を要求します。&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;passkey-agent&#039;&#039; を使う =====&lt;br /&gt;
&lt;br /&gt;
ヘッドセットに接続する前に、次のコマンドを実行:&lt;br /&gt;
 $ passkey-agent --default &amp;lt;pin&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;pin&amp;gt;&#039;&#039; はヘッドセットの PIN に置き換えてください。それからヘッドセットに接続してください。&lt;br /&gt;
&lt;br /&gt;
=== ヘッドセットと ALSA デバイス ===&lt;br /&gt;
&lt;br /&gt;
1. まず[[公式リポジトリ]]から {{Pkg|bluez}} を[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
2. デバイスをスキャン:&lt;br /&gt;
 $ hcitool (-i &amp;lt;optional hci#&amp;gt;***) scan&lt;br /&gt;
&lt;br /&gt;
3. ヘッドセットとデバイスをペアリング:&lt;br /&gt;
 $ bluez-simple-agent (optional hci# ***) XX:XX:XX:XX:XX:XX&lt;br /&gt;
そして pin を入力 (0000 や 1234 など)。&lt;br /&gt;
&lt;br /&gt;
4. {{ic|/etc/bluetooth/audio.conf}} から A2DP Audio Sink を許可してください。[General] の下に以下の行を記述:&lt;br /&gt;
 Enable=Source,Sink,Media,Socket&lt;br /&gt;
&lt;br /&gt;
5. 以下を {{ic|/etc/asound.conf}} ファイルに追加:&lt;br /&gt;
 #/etc/asound.conf&lt;br /&gt;
 &lt;br /&gt;
 pcm.btheadset {&lt;br /&gt;
    type plug&lt;br /&gt;
    slave {&lt;br /&gt;
        pcm {&lt;br /&gt;
            type bluetooth&lt;br /&gt;
            device XX:XX:XX:XX:XX:XX &lt;br /&gt;
            profile &amp;quot;auto&amp;quot;&lt;br /&gt;
        }   &lt;br /&gt;
    }   &lt;br /&gt;
    hint {&lt;br /&gt;
        show on&lt;br /&gt;
        description &amp;quot;BT Headset&amp;quot;&lt;br /&gt;
    }   &lt;br /&gt;
 }&lt;br /&gt;
 ctl.btheadset {&lt;br /&gt;
   type bluetooth&lt;br /&gt;
 }  &lt;br /&gt;
&lt;br /&gt;
6. alsa デバイスに追加されたかどうか確認:&lt;br /&gt;
 $ aplay -L&lt;br /&gt;
&lt;br /&gt;
7. aplay で再生:&lt;br /&gt;
 $ aplay -D btheadset /path/to/audio/file&lt;br /&gt;
&lt;br /&gt;
または Mplayer を使用:&lt;br /&gt;
 $ mplayer -ao alsa:device=btheadset /path/to/audio/or/video/file&lt;br /&gt;
&lt;br /&gt;
{{Tip|usb ドングルの hci# を確認するには、次を実行: {{ic|$ hcitool dev}}。}}&lt;br /&gt;
&lt;br /&gt;
=== ヘッドセットのマルチメディアボタン ===&lt;br /&gt;
&lt;br /&gt;
bluetooth ヘッドセットのマルチメディアボタン (再生・停止・次へ・前へ) を使うには、{{ic|/etc/modules-load.d/uinput.conf}} を作成して {{ic|uinput}} と記述する必要があります。&lt;br /&gt;
&lt;br /&gt;
== 旧式の方法: PulseAudio ==&lt;br /&gt;
&lt;br /&gt;
もっと簡単な方法です。PulseAudio はヘッドセットが有効になったときにシームレスに出力デバイスを切り替えます。サウンドサーバーとして ALSA を使っている場合、次のパッケージをインストールしてください: {{Pkg|pulseaudio}} と {{Pkg|pulseaudio-alsa}}。&lt;br /&gt;
&lt;br /&gt;
bluetooth を使うように音声出力を設定するため、{{Pkg|pavucontrol}} をインストールして実行してください:&lt;br /&gt;
 $ pavucontrol&lt;br /&gt;
PulseAudio の設定については [[PulseAudio]] の記事を確認してください (特に KDE を使っている場合)。&lt;br /&gt;
&lt;br /&gt;
=== トラブルシューティング ===&lt;br /&gt;
&lt;br /&gt;
==== Audio sink fails ====&lt;br /&gt;
&lt;br /&gt;
Bluetooth ヘッドセットを接続しても ALSA/PulseAudio が接続されたデバイスを使用しないことがあります。&amp;quot;Audio sink fails&amp;quot; と表示されます。[https://wiki.gentoo.org/wiki/Bluetooth_Headset gentoo wiki] によれば、{{ic|/etc/bluetooth/audio.conf}} の {{ic|[General]}} セクションの下に {{ic|&amp;lt;nowiki&amp;gt;Enable=Socket&amp;lt;/nowiki&amp;gt;}} が必要です。&lt;br /&gt;
&lt;br /&gt;
設定したら {{ic|# systemctl restart bluetooth}} を実行して適用してください。&lt;br /&gt;
&lt;br /&gt;
==== Page timeout issue ====&lt;br /&gt;
&lt;br /&gt;
bluez-simple-agent を使用してヘッドセットとシステムをペアリングしたときにこのエラーが表示される場合、システムを再起動してデスクトップ環境に付属している bluez のグラフィカルアプレットを使ってみてください。&lt;br /&gt;
&lt;br /&gt;
== 旧式のドキュメント: ALSA, bluez5, PulseAudio の方法 ==&lt;br /&gt;
&lt;br /&gt;
[[ALSA]], [[bluez|bluez5]], [[PulseAudio]] を使うことでワイヤレス [[Bluetooth]] ヘッドセットで音声を再生することができます。以下の方法は Lenovo T61p ノートパソコンと SoundBot SB220 ワイヤレス bluetooth ヘッドセットで確認しています。大量のソフトウェアスタックが必要で、全てのソフトウェアがインストールされていないと謎のエラーが発生するかもしれません。以下のソフトウェアパッケージのリストは最小限必要なセットとは限りません。&lt;br /&gt;
&lt;br /&gt;
Bluez5 にリグレッションが存在し HSP/HFP Telephone プロファイルを使うことができません。このリグレッションは [https://www.freedesktop.org/wiki/Software/PulseAudio/Notes/5.0/ Pulseaudio 5.0 のリリースノートのドラフト版] に次のように記述されています (&amp;quot;Notes for packagers&amp;quot;): &amp;quot;PulseAudio は BlueZ 5 をサポートしますが A2DP プロファイルだけです。HSP/HFP を使用するには BlueZ 4 が必要になります&amp;quot; ([https://fedoraproject.org/wiki/Common_F20_bugs#bluez5-profile 参照])。&lt;br /&gt;
&lt;br /&gt;
=== ソフトウェアパッケージのインストール ===&lt;br /&gt;
&lt;br /&gt;
中心となるソフトウェアコンポーネントは [[ALSA]], Bluez5, [[PulseAudio]] です。ただし、他にも必要なライブラリが存在します。また、音声ファイルを再生するプレイヤーも必要です。以下のセクションではヘッドセットを接続してヘッドセットから音声を流すためにインストールする必要があるソフトウェアパッケージを記載しています。&lt;br /&gt;
&lt;br /&gt;
==== ALSA と関連ライブラリのインストール ====&lt;br /&gt;
&lt;br /&gt;
[[ALSA]] は Linux カーネルと一緒に動作してユーザーモードソフトウェアにオーディオサービスを提供します。[[Bluetooth]] ヘッドセットでは次のパッケージが使われます: {{Pkg|alsa-utils}}, {{Pkg|alsa-plugins}}, {{Pkg|alsa-tools}}。&lt;br /&gt;
&lt;br /&gt;
==== Bluez5 のインストール ====&lt;br /&gt;
&lt;br /&gt;
Bluez5 は最新の [[Bluetooth]] スタックです。[[PulseAudio]] で無線ヘッドセットを使うのに必要になります。必要なパッケージ: {{Pkg|bluez}}, {{Pkg|bluez-utils}}, {{Pkg|bluez-libs}}。&lt;br /&gt;
&lt;br /&gt;
==== Audacious のインストール ====&lt;br /&gt;
&lt;br /&gt;
[[Audacious]] は音声ファイルを再生するプログラムです。[[ALSA]] や [[PulseAudio]] で直接機能します。必要なパッケージ: {{Pkg|audacious}}, {{Pkg|audacious-plugins}}。&lt;br /&gt;
&lt;br /&gt;
=== 手順 ===&lt;br /&gt;
&lt;br /&gt;
必要なパッケージをインストールしたら、以下の手順で Bluetooth ヘッドセットを使うことができます。ヘッドセットをペアリングして、接続し、プレイヤーを設定して、PulseAudio を設定して、音声を流します。&lt;br /&gt;
&lt;br /&gt;
bluetooth サービスを root で起動:&lt;br /&gt;
 # systemctl start bluetooth&lt;br /&gt;
&lt;br /&gt;
Bluetooth が起動したことを確認:&lt;br /&gt;
 # systemctl status bluetooth&lt;br /&gt;
 bluetooth.service - Bluetooth service&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; disabled)&lt;br /&gt;
   Active: active (running) since Sat 2013-12-07 12:31:14 PST; 12s ago&lt;br /&gt;
     Docs: man:bluetoothd(8)&lt;br /&gt;
 Main PID: 3136 (bluetoothd)&lt;br /&gt;
   Status: &amp;quot;Running&amp;quot;&lt;br /&gt;
   CGroup: /system.slice/bluetooth.service&lt;br /&gt;
           └─3136 /usr/lib/bluetooth/bluetoothd&lt;br /&gt;
 &lt;br /&gt;
 Dec 07 12:31:14 t61p systemd[1]: Starting Bluetooth service...&lt;br /&gt;
 Dec 07 12:31:14 t61p bluetoothd[3136]: Bluetooth daemon 5.11&lt;br /&gt;
 Dec 07 12:31:14 t61p systemd[1]: Started Bluetooth service.&lt;br /&gt;
 Dec 07 12:31:14 t61p bluetoothd[3136]: Starting SDP server&lt;br /&gt;
 Dec 07 12:31:14 t61p bluetoothd[3136]: Bluetooth management interface 1.3 i...ed&lt;br /&gt;
 Hint: Some lines were ellipsized, use -l to show in full.&lt;br /&gt;
&lt;br /&gt;
PulseAudio デーモンを起動。X が起動してから通常ユーザーで実行してください:&lt;br /&gt;
 $ pulseaudio -D&lt;br /&gt;
&lt;br /&gt;
PulseAudio デーモンが動作していることを確認してください:&lt;br /&gt;
 $ pulseaudio --check -v&lt;br /&gt;
 I: [pulseaudio] main.c: Daemon running as PID 3186&lt;br /&gt;
&lt;br /&gt;
Start up bluetoothctl as root and pair and connect your headset. As a regular user, bluetoothctl will pair but not connect. Perhaps this is related to the config file (shown below) which is setup for what appears to be the root user.&lt;br /&gt;
Note: the procedure shown below is for an initial pair and connect of the headphone. If the headset is already paired, then the procedure below can be shortened to: power on, agent on, default-agent, connect &amp;lt;mac address&amp;gt;. The mac address can be seen from the devices command output.&lt;br /&gt;
&lt;br /&gt;
  $ bluetoothctl &lt;br /&gt;
  [NEW] Controller 00:1E:4C:F4:98:5B t61p-0 [default]&lt;br /&gt;
  [NEW] Device 00:1A:7D:12:36:B9 SoundBot SB220&lt;br /&gt;
  [bluetooth]# show&lt;br /&gt;
  Controller 00:1E:4C:F4:98:5B&lt;br /&gt;
        Name: t61p&lt;br /&gt;
        Alias: t61p-0&lt;br /&gt;
        Class: 0x000000&lt;br /&gt;
        Powered: no&lt;br /&gt;
        Discoverable: no&lt;br /&gt;
        Pairable: yes&lt;br /&gt;
        UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)&lt;br /&gt;
        UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)&lt;br /&gt;
        UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)&lt;br /&gt;
        UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)&lt;br /&gt;
        UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)&lt;br /&gt;
        UUID: Audio Source              (0000110a-0000-1000-8000-00805f9b34fb)&lt;br /&gt;
        UUID: Audio Sink                (0000110b-0000-1000-8000-00805f9b34fb)&lt;br /&gt;
        Modalias: usb:v1D6Bp0246d050B&lt;br /&gt;
        Discovering: no&lt;br /&gt;
  [bluetooth]# power on&lt;br /&gt;
  [CHG] Controller 00:1E:4C:F4:98:5B Class: 0x0c010c&lt;br /&gt;
  Changing power on succeeded&lt;br /&gt;
  [CHG] Controller 00:1E:4C:F4:98:5B Powered: yes&lt;br /&gt;
  [bluetooth]# agent on&lt;br /&gt;
  Agent registered&lt;br /&gt;
  [bluetooth]# default-agent&lt;br /&gt;
  Default agent request successful&lt;br /&gt;
&lt;br /&gt;
&amp;lt;power on your headset in pairing mode. Eventually you will see what appears to be a mac address.&amp;gt;&lt;br /&gt;
  [bluetooth]# scan on&lt;br /&gt;
  Discovery started&lt;br /&gt;
  [CHG] Controller 00:1E:4C:F4:98:5B Discovering: yes&lt;br /&gt;
  [CHG] Device 00:1A:7D:12:36:B9 RSSI: -61&lt;br /&gt;
  [bluetooth]# pair 00:1A:7D:12:36:B9&lt;br /&gt;
  Attempting to pair with 00:1A:7D:12:36:B9&lt;br /&gt;
  [CHG] Device 00:1A:7D:12:36:B9 Connected: yes&lt;br /&gt;
  [CHG] Device 00:1A:7D:12:36:B9 UUIDs has unsupported type&lt;br /&gt;
  [CHG] Device 00:1A:7D:12:36:B9 Paired: yes&lt;br /&gt;
  Pairing successful&lt;br /&gt;
  [bluetooth]# connect 00:1A:7D:12:36:B9&lt;br /&gt;
  [CHG] Device 00:1A:7D:12:36:B9 Connected: yes&lt;br /&gt;
  Connection successful&lt;br /&gt;
  [bluetooth]# info 00:1A:7D:12:36:B9&lt;br /&gt;
  Device 00:1A:7D:12:36:B9&lt;br /&gt;
        Name: SoundBot SB220&lt;br /&gt;
        Alias: SoundBot SB220&lt;br /&gt;
        Class: 0x240404&lt;br /&gt;
        Icon: audio-card&lt;br /&gt;
        Paired: yes&lt;br /&gt;
        Trusted: no&lt;br /&gt;
        Blocked: no&lt;br /&gt;
        Connected: yes&lt;br /&gt;
        LegacyPairing: yes&lt;br /&gt;
        UUID: Headset                   (00001108-0000-1000-8000-00805f9b34fb)&lt;br /&gt;
        UUID: Audio Sink                (0000110b-0000-1000-8000-00805f9b34fb)&lt;br /&gt;
        UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)&lt;br /&gt;
        UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)&lt;br /&gt;
        UUID: Handsfree                 (0000111e-0000-1000-8000-00805f9b34fb)&lt;br /&gt;
&lt;br /&gt;
Start up alsamixer, for simplicity un-mute all your outputs. Oddly enough some can be muted though. The ones I had muted during playback were:&lt;br /&gt;
* Headphones&lt;br /&gt;
* SPIDF&lt;br /&gt;
&lt;br /&gt;
Start up audacious. Use the menu to select PulseAudio as your output. Somewhere I read that bluez5 requires pulseaudio-git and this jives with my experience.&lt;br /&gt;
&lt;br /&gt;
Start up pavucontrol in a terminal. In the Outputs tab select the bluetooth headset.&lt;br /&gt;
&lt;br /&gt;
[http://netskink.blogspot.com/2013/12/pulseaudio-pavucontrol-and-audacious.html screenshot of application settings]&lt;br /&gt;
&lt;br /&gt;
==== 設定ファイル ====&lt;br /&gt;
&lt;br /&gt;
For reference, these settings were also done.&lt;br /&gt;
&lt;br /&gt;
===== ALSA の /etc/asound.conf =====&lt;br /&gt;
&lt;br /&gt;
The settings shown at the top of this page was used, but the additional modification for Intel laptop sound cards.&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
pcm.btheadset {&lt;br /&gt;
  type plug&lt;br /&gt;
  slave {&lt;br /&gt;
    pcm {&lt;br /&gt;
      type bluetooth&lt;br /&gt;
      device 00:1A:7D:12:36:B9&lt;br /&gt;
      profile &amp;quot;auto&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  hint {&lt;br /&gt;
    show on&lt;br /&gt;
    description &amp;quot;BT Headset&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
ctl.btheadset {&lt;br /&gt;
  type bluetooth&lt;br /&gt;
}&lt;br /&gt;
options snd-hda-intel model=laptop&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===== /etc/dbus-1/system.d/bluetooth.conf =====&lt;br /&gt;
&lt;br /&gt;
The settings here seem to be enabled for root only.  See the policy user=&amp;quot;root&amp;quot; section.  However, if a regular user is specified here, the system fails to start.  Someone with more knowledge could explain why.&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dbus-1/system.d/bluetooth.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- This configuration file specifies the required security policies for Bluetooth core daemon to work. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE busconfig PUBLIC &amp;quot;-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN&amp;quot;&lt;br /&gt;
  &amp;quot;https://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;busconfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- ../system.conf have denied everything, so we just punch some holes --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;policy user=&amp;quot;root&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;allow own=&amp;quot;org.bluez&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;allow send_destination=&amp;quot;org.bluez&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;allow send_interface=&amp;quot;org.bluez.Agent1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;allow send_interface=&amp;quot;org.bluez.MediaEndpoint1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;allow send_interface=&amp;quot;org.bluez.MediaPlayer1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;allow send_interface=&amp;quot;org.bluez.ThermometerWatcher1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;allow send_interface=&amp;quot;org.bluez.AlertAgent1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;allow send_interface=&amp;quot;org.bluez.Profile1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;allow send_interface=&amp;quot;org.bluez.HeartRateWatcher1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;allow send_interface=&amp;quot;org.bluez.CyclingSpeedWatcher1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/policy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;policy at_console=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;allow send_destination=&amp;quot;org.bluez&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/policy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- allow users of lp group (printing subsystem) to communicate with bluetoothd --&amp;gt;&lt;br /&gt;
  &amp;lt;policy group=&amp;quot;lp&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;allow send_destination=&amp;quot;org.bluez&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/policy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;policy context=&amp;quot;default&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;deny send_destination=&amp;quot;org.bluez&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/policy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/busconfig&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===== テスト済みのアプリケーション =====&lt;br /&gt;
&lt;br /&gt;
As noted above this will work easily with audacious. YouTube videos with Chromium and Flash Player will work on some videos. If the video has ads it will not work, but if the video does not have ads it will work. Just make sure that after audacious is working with Bluetooth headset, start Chromium, and navigate to YouTube. Find a video without leading ads, and it should play the audio. If the settings icon has the a menu with two drop-down combo boxes for Speed and Quality it will play.&lt;br /&gt;
&lt;br /&gt;
== HSV と A2DP の設定の切り替え ==&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行することで簡単に切り替えられます (2 は適切なデバイス番号に置き換えて下さい):&lt;br /&gt;
&lt;br /&gt;
 pacmd set-card-profile 2 a2dp_sink&lt;br /&gt;
&lt;br /&gt;
=== PulseAudio で A2DP が動作しない ===&lt;br /&gt;
&lt;br /&gt;
==== Socket インターフェイスの問題 ====&lt;br /&gt;
&lt;br /&gt;
bluez 4.1+ と PulseAudio 3.0+ を使っていて、PulseAudio でプロファイルを A2DP に切り替えられない場合、{{ic|/etc/bluetooth/audio.conf}} を編集して {{ic|1=Enable=Socket}} という行を削除して {{ic|1=Disable=Socket}} という行を追加することで Socket インターフェイスを無効化できます。&lt;br /&gt;
&lt;br /&gt;
==== Gnome と GDM ====&lt;br /&gt;
{{Note|以下は Gnome 3.16.2 と PulseAudio 7.0 で確認済みです。}}&lt;br /&gt;
&lt;br /&gt;
GNOME と GDM を使っている場合にプロファイルを A2DP に変更すると PulseAudio が動作しなくなる場合、GDM が PulseAudio のインスタンスを起動しないように設定する必要があります。[[#接続は成功するが、音が聞こえない]]に書かれている修正を試してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=この問題に関する議論は [https://bbs.archlinux.org/viewtopic.php?id=194006 こちら] や [https://bbs.archlinux.org/viewtopic.php?id=196689 こちら] にあります。}}&lt;br /&gt;
&lt;br /&gt;
== Bluez5/bluez-alsa ==&lt;br /&gt;
&lt;br /&gt;
以下の方法を使うのは PulseAudio を使えない、あるいは使いたくない場合に限ります。&lt;br /&gt;
&lt;br /&gt;
まずはヘッドセットがペアリング・接続できることを確認してください。PulseAudio で {{ic|bluetoothctl}} を使用するのと同じです。&lt;br /&gt;
&lt;br /&gt;
{{AUR|bluez-alsa-git}} をインストールして {{ic|bluealsa}} サービスを[[起動]]・[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/dbus-1/system.d/bluetooth.conf}} ファイルを編集して以下を {{ic|&amp;lt;/busconfig&amp;gt;}} の前に追加してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
&amp;lt;policy user&amp;amp;#61;&amp;quot;bluealsa&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;allow send_destination&amp;amp;#61;&amp;quot;org.bluez&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/policy&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
最後に {{ic|bluealsa}} を使うために、使用しているユーザーを {{ic|audio}} グループに追加してください。&lt;br /&gt;
&lt;br /&gt;
以下のコマンドでヘッドセットをテストできます (MAC アドレスや音声ファイルは適当に置き換えてください):&lt;br /&gt;
 $ aplay -D bluealsa:HCI=hci0,DEV=00:1D:43:6D:03:26,PROFILE=a2dp ./testme.wav&lt;br /&gt;
&lt;br /&gt;
音が鳴るのであれば HCI, DEV, PROFILE をデフォルトに設定できます。以下を {{ic|.asoundrc}} に追加してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
defaults.bluealsa {&lt;br /&gt;
    interface &amp;quot;hci0&amp;quot;&lt;br /&gt;
    device &amp;quot;00:1D:43:6D:03:26&amp;quot;&lt;br /&gt;
    profile &amp;quot;a2dp&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これで bluealsa を使ってヘッドセットが使用できます。{{ic|alsamixer}} を使ってボリュームを設定することもできます ({{ic|alsamixer -D bluealsa}})。&lt;br /&gt;
&lt;br /&gt;
== テスト済みのヘッドセット ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 機種&lt;br /&gt;
! バージョン&lt;br /&gt;
! コメント&lt;br /&gt;
! 対応状況&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Philips SHB3060&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.40, PulseAudio 9.0&lt;br /&gt;
| ボタンが機能しません。対応プロファイル: HSP (マイクロフォンも動作) と A2DP。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Philips SHB4000WT&#039;&#039;&#039;&lt;br /&gt;
| bluez5&lt;br /&gt;
| A2DP で動作、HDP は問題あり。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Philips SHB5500BK/00&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.28, PulseAudio 6.0&lt;br /&gt;
| 停止・再生が機能せず。&lt;br /&gt;
| {{R|Limited}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Philips SHB7000&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
| 停止・再生がおかしい。&lt;br /&gt;
| {{R|Limited}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Philips SHB7100&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.32, pulseaudio 6.0&lt;br /&gt;
| 次へ・前へボタンも動作。停止・再生は微妙 (VLC では動くこともあるが、Audacious では全く機能しない)。A2DP と Handsfree の音声出力のみで確認。マイクは機能せず。&lt;br /&gt;
| {{R|Limited}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Philips SHB7150&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.32, pulseaudio 6.0&lt;br /&gt;
| 次へ・前へボタンも動作。停止・再生は VLC では動作。A2DP プロファイルでのみ確認。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Philips SHB9100&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
| 停止・再生がおかしい。音質を改善する一時的な方法は [https://bbs.archlinux.org/viewtopic.php?pid=1315428#p1315428] を参照。&lt;br /&gt;
| {{R|Limited}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Philips SHB9150&#039;&#039;&#039;&lt;br /&gt;
| bluez5, pulseaudio 9&lt;br /&gt;
| &lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Philips AEA2000/12&#039;&#039;&#039;&lt;br /&gt;
| bluez5&lt;br /&gt;
| &lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Parrot Zik&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
| マイクは認識されますが機能しません (HSP プロファイルは使えません)。Bluetooth 接続が切れると、音声に遅延が発生します。Bluetooth 接続を初期化することで解決します。&lt;br /&gt;
| {{R|Limited}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Parrot Zik 2.0&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
| マイクは認識されますが機能しません (HSP プロファイルは使えません)。Bluetooth 接続が切れると、音声に遅延が発生します。Bluetooth 接続を初期化することで解決します。&lt;br /&gt;
| {{R|Limited}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Parrot Zik 3.0&#039;&#039;&#039;&lt;br /&gt;
| &lt;br /&gt;
| マイクは認識されますが機能しません (HSP プロファイルは使えません)。遅延の問題はありません。&lt;br /&gt;
| {{R|Limited}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sony DR-BT50&#039;&#039;&#039;&lt;br /&gt;
| bluez{4,5}&lt;br /&gt;
| a2dp で動作。[http://vlsd.blogspot.com/2013/11/bluetooth-headphones-and-arch-linux.html] を参照。アダプタ: D-Link DBT-120 USB ドングル。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sony SBH20&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.30, pulseaudio 6.0&lt;br /&gt;
| A2DP プロファイルで問題なく動作。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sony SBH50&#039;&#039;&#039;&lt;br /&gt;
| bluez5&lt;br /&gt;
| a2dp で動作。アダプタ: Broadcom Bluetooth 2.1 Device (Vendor=0a5c ProdID=219b Rev=03.43)。{{ic|btusb}} [[modprobe|モジュール]]が必要。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sony SBH80&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.36, pulseaudio 7.1&lt;br /&gt;
| メディアボタンは機能せず。blueman でプロファイルを無効化して A2DP を有効化することで動作。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sony MDR-XB950BT&#039;&#039;&#039;&lt;br /&gt;
| pulseaudio&lt;br /&gt;
| a2dp でテスト済み。アダプタ: Grand-X BT40G。自動で接続されない場合、手動で接続する必要があります。他の機能は問題なく動作。&lt;br /&gt;
| {{R|Limited}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sony MDR-ZX330BT&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.31, pulseaudio 6.0&lt;br /&gt;
| 何も設定しなくても動作 (HSP/HFP と A2DP)。ボタンは特定のアプリで動作。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sony MUC-M1BT1&#039;&#039;&#039;&lt;br /&gt;
| bluez5, {{AUR|pulseaudio-git}}&lt;br /&gt;
| A2DP &amp;amp; HSP/HFP どちらも問題なく動作。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sony WH-1000XM3&#039;&#039;&#039;&lt;br /&gt;
| bluez5, {{AUR|pulseaudio-git}}&lt;br /&gt;
| A2DP &amp;amp; HSP/HFP どちらも動作するが、マイクの使用はできず。右側面のタッチコントロールは音量操作のみ使用できます。&lt;br /&gt;
| {{R|Limited}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SoundBot SB220&#039;&#039;&#039;&lt;br /&gt;
| bluez5, {{AUR|pulseaudio-git}}&lt;br /&gt;
| &lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Auna Air 300&#039;&#039;&#039;&lt;br /&gt;
| bluez5, pulseaudio-git&lt;br /&gt;
| 何らかの理由で、再起動が必要ですが、それで問題なく起動します。&lt;br /&gt;
| {{R|Limited}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sennheiser MM 400-X&#039;&#039;&#039;&lt;br /&gt;
| bluez5, pulseaudio 4.0-6&lt;br /&gt;
| &lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sennheiser MM 550-X Travel&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.27-1, pulseaudio 5.0-1&lt;br /&gt;
| 次・前ボタンは何も設定しなくても動作しますが、再生・停止ボタンは動作しません。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sennheiser URBANITE XL Wireless&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.37-2, pulseaudio 7.1-3&lt;br /&gt;
| A2DP 高音質再生。再生・停止・次へ・前へも問題なく動作。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sennheiser Momentum 2&#039;&#039;&#039;&lt;br /&gt;
| bluez5, pulseaudio 9.0-1&lt;br /&gt;
| GDM で起動できない問題を解決しないと A2DP プロファイルの変更に失敗することがあります。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Audionic BlueBeats (B-777)&#039;&#039;&#039;&lt;br /&gt;
| bluez5, pulseaudio 4.0-6&lt;br /&gt;
| &lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Logitech Wireless Headset&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.14, pulseaudio-git&lt;br /&gt;
| 製造番号 PN 981-000381。iPad 用と喧伝されているヘッドセット。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Logitech UE9000&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.37, pulseaudio 7.1, gnome 3.18.2&lt;br /&gt;
| [[#接続は成功するが、音が聞こえない|gnome/gdm の修正]]をすることで再生可能。音声プロファイルのデフォルトは HSP/HFP。マイクは HSP/HFP と A2DP プロファイルのどちらでも動作。再生・停止や次へ・前へは Spotify や VLC で機能する。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;HMDX Jam Classic Bluetooth&#039;&#039;&#039;&lt;br /&gt;
| bluez, pulseaudio-git&lt;br /&gt;
| &lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PT-810&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.14, pulseaudio-git&lt;br /&gt;
| 汎用の USB 給電 Bluetooth 音声レシーバー。3.5mm ヘッドセットジャックと a2dp プロファイルで機能。&amp;quot;USB Bluetooth Receiver&amp;quot; ID として PT-810 は広く使えます。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Nokia BH-104&#039;&#039;&#039;&lt;br /&gt;
| bluez4&lt;br /&gt;
| &lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Creative AirwaveHD&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.23&lt;br /&gt;
| Bluetooth アダプタ Atheros Communications usb: 0cf3:0036&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Creative HITZ WP380&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.27, pulseaudio 5.0-1&lt;br /&gt;
| A2DP プロファイルのみ。ボタンも動作 (再生, 停止, 次へ, 前へ)。ボリュームボタンはハードウェアのみ。自動接続もできるが bluetooth モジュールを &amp;quot;pulseaudio&amp;quot; に組み込んで自動的に切り替えさせる必要がある。ハイレゾ再生もクリア (デバイスとしては APTx コーデックをサポートしていますが Linux ではまだ対応されていません)。遅延の問題が発生するときは pulseaudio を再起動する必要あり。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;deleyCON Bluetooth Headset&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.23&lt;br /&gt;
| アダプタ: CSL - USB nano Bluetooth-Adapter V4.0。a2dp プロファイルでテスト。マイクは未テスト。(ペアリングしても) 自動接続は行われないため、手動で接続する必要あり。再生/停止ボタンを押すとヘッドフォンがミュート/アンミュートになるが、再生には影響なし。次に進む/前に戻るボタンは動作せず (&#039;&#039;xev&#039;&#039; で変化なし)。&lt;br /&gt;
| {{R|Limited}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;UE BOOM&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.27, pulseaudio-git 5.99&lt;br /&gt;
| 最新の UE BOOM fw 1.3.58 にアップデート。動画再生における音声の遅延は pavucontrol を設定することで解決できる。UE BOOM x2 で動作。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;LG HBS-730&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.30, pulseaudio 6.0&lt;br /&gt;
| A2DP プロファイルで何も設定しなくても動作。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;LG HBS-750&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.30, pulseaudio-git 6.0&lt;br /&gt;
| A2DP プロファイルで何も設定しなくても動作。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Beats Studio Wireless&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.28, pulseaudio 6.0&lt;br /&gt;
| 何も設定しなくても動作。マルチメディアボタンは未テスト。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;AKG Y45BT&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.30, pulseaudio 6.0&lt;br /&gt;
| 停止・再生が動作せず。{{ic|/etc/bluetooth/audio.conf}} に {{ic|1=Enable=Socket}} を、{{ic|/etc/pulse/default.pa}} に {{ic|load-module module-bluetooth-discover}} を設定する必要あり。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Bluedio Turbine/Turbine 2+&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.3, pulseaudio 6.0&lt;br /&gt;
| HSP/HFP で動作、A2DP も問題なく動作。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Nokia BH-111&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.30, pulseaudio 6.0&lt;br /&gt;
| HSP/HFP と A2DP どちらでも動作。ボタンは特定のアプリで動作。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Samsung Level Link&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.33, pulseaudio 6.0&lt;br /&gt;
| 何も設定しなくても動作 (HSP/HFP と A2DP)。ボタンは特定のアプリで動作。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Bernafon Soundgate 3&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.34-2, pulseaudio 7.0-1&lt;br /&gt;
| blueman-git 2.0.r53.g2a812a8-1 をインストールすることで動作 (A2DP)。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;JBL E40 BT&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.35, pulseaudio 7.0&lt;br /&gt;
| blueberry と blueman をインストールすることで接続可能。{{ic|1=Disable=Socket}} を {{ic|/etc/bluetooth/audio.conf}} に追加することで A2DP が動作。メディアボタンも動作。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;JBL Everest 300&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.37, pulseaudio 8.0&lt;br /&gt;
| 全てが問題なく動作。HSP/HFP プロファイルでヘッドフォンを接続すると音質が悪いが、&#039;&#039;&#039;pavucontrol&#039;&#039;&#039; でプロファイルを A2DP sink に切り替えることで音質はかなり改善する。ペアリングに問題なし。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Kitsound Manhattan&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.37, pulseaudio 7.13&lt;br /&gt;
| 全て問題なし。Pulseaudio をユーザーでなく root で ( --system) 動作させた場合、ペアリングしても接続できなかったり、(アクセス PIN を要求して) システムがフリーズしてしまう可能性あり。注意が必要。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Jawbone Jambox&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.38, pulseaudio 8.0&lt;br /&gt;
| &lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Plantronics BackBeat FIT&#039;&#039;&#039;&lt;br /&gt;
| bluez5, pulseaudio 8.0&lt;br /&gt;
| ヘッドセットと a2dp プロファイルどちらも完全に動作。停止ボタンでプレイヤーを停止できます ([[mpv]] で確認)。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Plantronics BackBeat Pro&#039;&#039;&#039;&lt;br /&gt;
| bluez5, pulseaudio 9.0&lt;br /&gt;
| ヘッドセットと a2dp プロファイルどちらも完全に動作。停止ボタンを押したりヘッドセットを外すとプレイヤーが停止します。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Aukey EP-B26&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.39-1, pulseaudio 8.0-3&lt;br /&gt;
| ヘッドセット (低品質) と a2dp (高品質) プロファイルどちらも完全に動作。停止ボタンでプレイヤーを停止したり、次・前ボタンで曲を変えられます。マイクは HSP/HFP モードでのみ動作。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Bose AE2 SoundLink&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.36, pulseaudio 7.1&lt;br /&gt;
| 停止・再生ボタンが動作しません。マイクも使えません。&lt;br /&gt;
| {{R|Limited}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Bose QuietComfort 35&#039;&#039;&#039;&lt;br /&gt;
| bluez 5.41, pulseaudio 9.0&lt;br /&gt;
| {{ic|1=ControllerMode=bredr}} を設定することでペアリングできます。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Blue Tiger Dual Elite&#039;&#039;&#039;&lt;br /&gt;
| bluez-5.42-1, pulseaudio 9.0-1&lt;br /&gt;
| {{ic|1=pulseaudio-bluetooth}} パッケージで接続できます。マイクや操作ボタンは未確認。&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
Windows と Linux でペアリングを解除しないでデバイスを共有する方法:&lt;br /&gt;
&lt;br /&gt;
* [https://ubuntuforums.org/showthread.php?p=9363229#post9363229 Dual booting with a Bluetooth keyboard]&lt;/div&gt;</summary>
		<author><name>がおびん</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Xinit&amp;diff=27006</id>
		<title>Xinit</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Xinit&amp;diff=27006"/>
		<updated>2022-08-23T12:46:49Z</updated>

		<summary type="html">&lt;p&gt;がおびん: /* xinitrc */ 英語部分を日本語に翻訳&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:Xorg コマンド]]&lt;br /&gt;
[[de:Xinitrc]]&lt;br /&gt;
[[en:Xinit]]&lt;br /&gt;
[[es:Xinit]]&lt;br /&gt;
[[fr:Xinit]]&lt;br /&gt;
[[it:Xinit]]&lt;br /&gt;
[[pt:Xinit]]&lt;br /&gt;
[[ru:Xinit]]&lt;br /&gt;
[[zh-hans:Xinit]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ディスプレイマネージャ}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|xprofile}}&lt;br /&gt;
{{Related|X resources}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.xinitrc}} ファイルは {{ic|xinit}} や {{ic|startx}} によって読み込まれるシェルスクリプトです。主として、X サーバーが起動した時に[[デスクトップ環境]]や[[ウィンドウマネージャ]]などのプログラムを起動するのに使われます (デーモンの起動や環境変数のセットなど)。{{ic|xinit}} と {{ic|startx}} プログラムは [[Xorg|X Window System]] を起動させ、X を直接 {{ic|/etc/init}} から起動できないシステムや複数のウィンドウシステムを使っている環境で、一番最初のクライアントプログラムとして動作します。&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.xinitrc}} の主要な仕事の一つは、{{ic|/usr/bin/startx}} や {{ic|/usr/bin/xinit}} プログラムが実行されたときに X Window System のためにどのクライアントを呼び出すか指定することです。様々な追加の記述やコマンドが存在しており、それらを {{ic|~/.xinitrc}} に追加して、その後のシステムのカスタマイズも行えます。&lt;br /&gt;
&lt;br /&gt;
ほとんどの DM は xinit の前に同じようなファイルである [[xprofile]] も読み込みます。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|xorg-xinit}} を[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;xinit&#039;&#039; と &#039;&#039;startx&#039;&#039; はオプションでクライアントプログラムの引数を取ります。[[#Override xinitrc]] を参照してください。もし、引数を与えなければ、クライアントプロラムを起動するシェルスクリプトとして、{{ic|~/.xinitrc}} を探します。&lt;br /&gt;
&lt;br /&gt;
=== xinitrc ===&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.xinitrc}} は X に応じてプログラムを実行し、X サーバーの起動時に環境変数を設定するのに便利です。ユーザーのホームディレクトリに存在する場合は、&#039;&#039;startx&#039;&#039; と &#039;&#039;xinit&#039;&#039; が実行します。それ以外の場合、&#039;&#039;startx&#039;&#039; はデフォルトの {{ic|/etc/X11/xinit/xinitrc}} を実行します。&lt;br /&gt;
&lt;br /&gt;
{{note|&#039;&#039;Xinit&#039;&#039; には、ファイルを実行する代わりに独自のデフォルトの動作があります。詳細については、{{man|1|xinit}} を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
デフォルトの xinitrc は [[Twm]] と, {{Pkg|xorg-xclock}}, [[Xterm]] とで基本的な環境をスタートします（必要なパッケージはインストールされているとして。）そのため、別のウィンドウマネージャやデスクトップ環境を始めるには、まずデフォルトの {{ic|xinitrc}} のコピーをホームディレクトリに作成します。&lt;br /&gt;
&lt;br /&gt;
 $ cp /etc/X11/xinit/xinitrc ~/.xinitrc&lt;br /&gt;
&lt;br /&gt;
それからそのファイルを編集して、デフォルトのプログラムを必要なコマンドに置き換えます。 {{ic|exec}} で実行するコマンドに続く行は無視されることを覚えておいてください。たとえば、{{ic|xscreensaver}} をバックグラウンドで開始してから [[Openbox#Standalone|openbox]] を開始するには、以下のように記述します:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&lt;br /&gt;
...&lt;br /&gt;
xscreensaver &amp;amp;&lt;br /&gt;
exec openbox-session}}&lt;br /&gt;
&lt;br /&gt;
{{Note|最低限、{{ic|/etc/X11/xinit/xinitrc}} にある最後の {{ic|if}} ブロックが、あなたの {{ic|~/.xinitrc}} ファイルにあることを確認してください。これにより、 {{ic|/etc/X11/xinit/xinitrc.d}} にあるスクリプトが読み込まれることを確認できます。}}&lt;br /&gt;
&lt;br /&gt;
スクリーンセーバーや壁紙アプリケーションといった、長く実行されるプログラムがウィンドウマネージャの前に開始される場合、それらをフォークするか {{ic|&amp;amp;}} 記号をつけてバックグラウンドで実行しなければなりません。そうしないと、スクリプトはウィンドウマネージャやデスクトップ環境を実行する前に停止し、それらのプログラムが終了するのを待ちます。いくつかのプログラムは、 [[xrdb]] のように、レースバグを回避するためフォークしないでください。{{ic|exec}} を前につけることで、スクリプトプロセスをウィンドウマネージャプロセスへ入れ替えることができます。これにより、たとえこのプロセスがバックグランドへフォークされても X が終了しないようにできます。&lt;br /&gt;
&lt;br /&gt;
=== xserverrc ===&lt;br /&gt;
&lt;br /&gt;
{{ic|xserverrc}} ファイルは、X サーバーの起動を担当するシェルスクリプトです。&#039;&#039;startx&#039;&#039; と &#039;&#039;xinit&#039;&#039; はどちらも {{ic|~/.xserverrc}} が存在すればそれを実行し、 &#039;&#039;startx&#039;&#039; はそうでなければ {{ic|/etc/X11/xinit/xserverrc}} を使用します。&lt;br /&gt;
&lt;br /&gt;
{{ic|logind}} で [[一般的なトラブルシューティング#セッションのパーミッション|セッションのパーミッション]] を維持し、端末を切り替えてスクリーンロッカーを回避するのを防ぐために、ログインしたのと同じ仮想端末で [[Xorg]] を起動しなければなりません [http://blog.falconindy.com/articles/back-to-basics-with-x-and-systemd.html]。そのため、{{ic|~/.xserverrc}} ファイルで {{ic|vt$XDG_VTNR}} を指定することが推奨されます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xserverrc|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
exec /usr/bin/Xorg -nolisten tcp &amp;quot;$@&amp;quot; vt$XDG_VTNR&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
全てのコマンドラインオプションの一覧は {{man|1|Xserver}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|-nolisten local}} を {{ic|-nolisten tcp}} の後に追加すると、X11 の抽象ソケットを無効にして分離を助けることができます。 これが  X11 のセキュリティにどのように影響するかについては、[https://tstarling.com/blog/2016/06/x11-security-isolation/ quick background] があります。}}&lt;br /&gt;
&lt;br /&gt;
また、サーバを起動するコンソールとは別のコンソールで X を表示させたい場合は、 {{ic|/usr/lib/systemd/systemd-multi-seat-x}} が提供する X サーバラッパーを使って表示させることも可能です。便利なように、 &#039;&#039;xinit&#039;&#039; と  &#039;&#039;startx&#039;&#039; は {{ic|~/.xserverrc}} を修正することでこのラッパーを使うようにセットアップすることができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|X セッションから Xorg ログファイルへの出力のリダイレクトを再び有効にするには、{{ic|-keeptty}} オプションを追加してください。詳しくは [[Xorg#セッションログのリダイレクト]] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
Xorg を通常のユーザーとして実行するには、次のように実行します。&lt;br /&gt;
&lt;br /&gt;
 $ startx&lt;br /&gt;
&lt;br /&gt;
または、[[#xserverrc]] が設定されている場合は:&lt;br /&gt;
&lt;br /&gt;
 $ xinit -- :1&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;xinit&#039;&#039; は他の X  サーバーがすでに起動している場合は、複数の表示を処理しません。その場合は、{{ic|-- :&#039;&#039;display_number&#039;&#039;}} ({{ic|&#039;&#039;display_number&#039;&#039;}} は {{ic|1}} 以上) を付けてディスプレイを指定してください。}}&lt;br /&gt;
&lt;br /&gt;
これでお好みのウィンドウマネージャー(またはデスクトップ環境)が正しく起動するはずです。&lt;br /&gt;
&lt;br /&gt;
X を終了するには、ウィンドウマネージャーの exit 関数を実行してください(exit 関数があれば)。そのような機能がない場合は次のように実行します。&lt;br /&gt;
&lt;br /&gt;
 $ pkill -15 Xorg&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;pkill&#039;&#039; は実行中の X インスタンスを全て kill します。現在の仮想端末上のウィンドウマネージャーを kill するには、次のように実行します:&lt;br /&gt;
&lt;br /&gt;
 $ pkill -15 -t tty&amp;quot;$XDG_VTNR&amp;quot; Xorg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{man|7|signal}} も参照してください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== コマンドラインから xinitrc を上書きする ===&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.xinitrc}} は既に記述しているが、他の WM/DE を試してみたい場合、ウィンドウマネージャのパスを加えて {{ic|startx}} を実行することができます:&lt;br /&gt;
&lt;br /&gt;
 $ startx /full/path/to/window-manager&lt;br /&gt;
&lt;br /&gt;
フルパスが必要なので注意してください。&lt;br /&gt;
&lt;br /&gt;
ウィンドウマネージャに引数を指定する場合、&#039;&#039;startx&#039;&#039; のパラメータとしてクォートで囲う必要があります:&lt;br /&gt;
 $ startx &amp;quot;/full/path/to/window-manager --key value&amp;quot;&lt;br /&gt;
&lt;br /&gt;
また、{{ic|--}} の後にカスタムオプションを指定して (デフォルトの X サーバーオプションが入っている) {{ic|/etc/X11/xinit/xserverrc}} を上書きすることもできます。例:&lt;br /&gt;
&lt;br /&gt;
 $ startx /usr/bin/enlightenment -- -nolisten tcp -br +bs -dpi 96 vt$XDG_VTNR&lt;br /&gt;
&lt;br /&gt;
または:&lt;br /&gt;
&lt;br /&gt;
 $ xinit /usr/bin/enlightenment -- -nolisten tcp -br +bs -dpi 96 vt$XDG_VTNR&lt;br /&gt;
&lt;br /&gt;
{{ic|man startx}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|通常の GUI プログラムを起動するのに使うこともできます。[[#ウィンドウマネージャを使わずにアプリケーションを起動]] や [[ゲーム#別の X サーバーでゲームを起動する]] を参照。}}&lt;br /&gt;
&lt;br /&gt;
=== ログイン時に X を自動起動 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;startx&#039;&#039; が正しく [[xinit#設定|設定]] されていることを確認します。&lt;br /&gt;
&lt;br /&gt;
[[コマンドラインシェル#ログインシェル|ログインシェル]] の初期化ファイル (例: [[Bash]] の場合は {{ic|~/.bash_profile}}, [[Zsh]] の場合は {{ic|~/.zprofile}}) に以下の内容を記述してください。&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
if [ -z &amp;quot;${DISPLAY}&amp;quot; ] &amp;amp;&amp;amp; [ &amp;quot;${XDG_VTNR}&amp;quot; -eq 1 ]; then&lt;br /&gt;
  exec startx&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
複数の仮想端末でグラフィカルログインを使用したい場合は、{{ic|-eq}} の比較を {{ic|-le 3}} (vt1 から vt3 まで) のようなものに置き換えることが可能です。&lt;br /&gt;
&lt;br /&gt;
仮想端末を検出する別の条件として、{{ic|&amp;lt;nowiki&amp;gt;&amp;quot;$(tty)&amp;quot; = &amp;quot;/dev/tty1&amp;quot;&amp;lt;/nowiki&amp;gt;}} は {{ic|-le}} との比較が出来ません、 {{ic|&amp;lt;nowiki&amp;gt;&amp;quot;$(fgconsole 2&amp;gt;/dev/null || echo -1)&amp;quot; -eq 1&amp;lt;/nowiki&amp;gt;}} は [[シリアルコンソール]] では機能しないことが挙げられます。&lt;br /&gt;
&lt;br /&gt;
X セッションが終了してもログインしたままにしたい場合は、{{ic|exec}} を削除してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|exec}} がなければ、X を  Kill することができます、これであなたのホームディレクトリのシェルとファイルへのアクセスを取得することができます。このことがあなたにとって重要かどうか、上記のことを実行する前に判断してください}}&lt;br /&gt;
&lt;br /&gt;
[[Fish# ログイン時に X を起動|ログイン時に X を起動]] と [[systemd/ユーザー#ディスプレイマネージャを使わずに Xorg に自動ログイン]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|この方法は [[getty#仮想端末に自動ログイン|仮想端末に自動ログイン]] と組み合わせることができます}}&lt;br /&gt;
&lt;br /&gt;
=== DE/WM の選択 ===&lt;br /&gt;
&lt;br /&gt;
様々な DE/WM を頻繁に切り替えて使っている場合、[[ディスプレイマネージャ]]を使うか、以下のコードを {{ic|.xinitrc}} に追加することを推奨します。引数を使って起動したいデスクトップ環境やウィンドウマネージャをロードします:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
# Here Xfce is kept as default&lt;br /&gt;
session=${1:-xfce}&lt;br /&gt;
&lt;br /&gt;
case $session in&lt;br /&gt;
    awesome           ) exec awesome;;&lt;br /&gt;
    bspwm             ) exec bspwm;;&lt;br /&gt;
    catwm             ) exec catwm;;&lt;br /&gt;
    cinnamon          ) exec cinnamon-session;;&lt;br /&gt;
    dwm               ) exec dwm;;&lt;br /&gt;
    enlightenment     ) exec enlightenment_start;;&lt;br /&gt;
    ede               ) exec startede;;&lt;br /&gt;
    fluxbox           ) exec startfluxbox;;&lt;br /&gt;
    gnome             ) exec gnome-session;;&lt;br /&gt;
    gnome-classic     ) exec gnome-session --session=gnome-classic;;&lt;br /&gt;
    i3|i3wm           ) exec i3;;&lt;br /&gt;
    icewm             ) exec icewm-session;;&lt;br /&gt;
    jwm               ) exec jwm;;&lt;br /&gt;
    kde               ) exec startkde;;&lt;br /&gt;
    mate              ) exec mate-session;;&lt;br /&gt;
    monster|monsterwm ) exec monsterwm;;&lt;br /&gt;
    notion            ) exec notion;;&lt;br /&gt;
    openbox           ) exec openbox-session;;&lt;br /&gt;
    unity             ) exec unity;;&lt;br /&gt;
    xfce|xfce4        ) exec startxfce4;;&lt;br /&gt;
    xmonad            ) exec xmonad;;&lt;br /&gt;
    # No known session, try to run it as command&lt;br /&gt;
    *) exec $1;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/X11/xinit/xserverrc}} ファイルをホームディレクトリにコピーしてください:&lt;br /&gt;
&lt;br /&gt;
 $ cp /etc/X11/xinit/xserverrc ~/.xserverrc&lt;br /&gt;
&lt;br /&gt;
その後、引数を指定して特定の DE/WM を起動することができます:&lt;br /&gt;
&lt;br /&gt;
 $ xinit&lt;br /&gt;
 $ xinit gnome&lt;br /&gt;
 $ xinit kde&lt;br /&gt;
 $ xinit wmaker&lt;br /&gt;
&lt;br /&gt;
または:&lt;br /&gt;
&lt;br /&gt;
 $ startx&lt;br /&gt;
 $ startx ~/.xinitrc gnome&lt;br /&gt;
 $ startx ~/.xinitrc kde&lt;br /&gt;
 $ startx ~/.xinitrc wmaker&lt;br /&gt;
&lt;br /&gt;
=== ウィンドウマネージャを使わずにアプリケーションを起動 ===&lt;br /&gt;
&lt;br /&gt;
ウィンドウマネージャを使わずに特定のアプリケーションだけを起動することも可能です。フルスクリーンモードで何か一つのアプリケーションを表示したいときに有用です。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
exec chromium&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この方法を使うときはアプリケーションのウィンドウの配置を、アプリケーションの設定ファイルで設定しておく必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|この方法を使ってグラフィカルなゲームを起動することも可能です。特に、ウィンドウマネージャやデスクトップ環境、またはデスクトップアクセサリといったアプリケーションによるメモリと CPU の消費を抑えて、ゲームの実行パフォーマンスを底上げすることができます。}}&lt;br /&gt;
&lt;br /&gt;
[[ディスプレイマネージャ#ウィンドウマネージャを使わずにアプリケーションを起動]]も見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== startx 使用時の出力のリダイレクト ===&lt;br /&gt;
&lt;br /&gt;
詳細は、[[Xorg#Session log redirection]] を参照してください。&lt;/div&gt;</summary>
		<author><name>がおびん</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Emacs&amp;diff=22637</id>
		<title>Emacs</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Emacs&amp;diff=22637"/>
		<updated>2021-12-03T13:40:36Z</updated>

		<summary type="html">&lt;p&gt;がおびん: /* トラブルシューティング */ 英語の記述を日本語に翻訳した。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:テキストエディタ]]&lt;br /&gt;
[[Category:コンソールアプリケーション]]&lt;br /&gt;
[[Category:GNU]]&lt;br /&gt;
[[de:Emacs]]&lt;br /&gt;
[[en:Emacs]]&lt;br /&gt;
[[es:Emacs]]&lt;br /&gt;
[[fr:Emacs]]&lt;br /&gt;
[[sr:Emacs]]&lt;br /&gt;
[[zh-hans:Emacs]]&lt;br /&gt;
[[Wikipedia:ja:Emacs|Emacs]] は拡張性があり、カスタマイズ可能な、セルフドキュメント方式のリアルタイム表示エディタです。Emacs のコアには、多数の Emacs の内蔵機能や拡張を実装するのに使われている言語である、[[Wikipedia:ja:Emacs Lisp|Emacs Lisp]] のインタプリタが存在します。GNU Emacs 22 から GTK がデフォルトの X ツールキットとして使われていますが、CLI 環境でも負けず劣らずに機能します。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
Emacs には複数の種類があります (時々 &#039;&#039;emacsen&#039;&#039; と呼ばれます)。その中で最も一般的なのは [https://www.gnu.org/software/emacs/ GNU Emacs] です。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|emacs}} パッケージを[[インストール]]してください。いつもターミナルで作業をする場合は、GTK+ がいらない {{Pkg|emacs-nox}} の方が良いでしょう (サウンドなどの装飾的な機能もありません)。&lt;br /&gt;
ただしテキストバージョンにはいくつか欠点が存在します: サポートしている色やフォント処理の機能 (実行中にサイズを変更したり、単一の文章で複数のサイズを使うなど) が少なくなっています。その上、emacs-nox には Speedbar や GUD (デバッグ環境) などの高度な機能について制限があり、複雑なフェイスを使おうとするとやや遅くなります (&amp;quot;フェイス&amp;quot;とは Emacs におけるテキストの外観のことです)。&lt;br /&gt;
&lt;br /&gt;
== Emacs の実行 ==&lt;br /&gt;
&lt;br /&gt;
emacs を起動する前に、終了の方法を知っておきましょう (特にターミナルで実行する場合): {{ic|Ctrl+x}}{{ic|Ctrl+c}} キーシーケンスを使って下さい。&lt;br /&gt;
&lt;br /&gt;
Emacs を起動するには次を実行:&lt;br /&gt;
&lt;br /&gt;
 $ emacs&lt;br /&gt;
&lt;br /&gt;
また、コンソールから使うには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -nw&lt;br /&gt;
&lt;br /&gt;
(.emacs を使わずに) 高速でロードして CLI で編集するには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -Q -nw&lt;br /&gt;
&lt;br /&gt;
nox バージョンをインストールしている場合、&#039;emacs&#039; と &#039;emacs -nw&#039; は同じになります。&lt;br /&gt;
&lt;br /&gt;
ファイル名を指定することですぐにファイルを開くこともできます:&lt;br /&gt;
&lt;br /&gt;
 $ emacs filename.txt&lt;br /&gt;
&lt;br /&gt;
=== 色無し ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、Emacs はハイパーリンクが濃青で表示されるカラーテーマで起動します。Emacs をカラーテーマやスキームを使わずに起動するには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -nw --color=no&lt;br /&gt;
&lt;br /&gt;
このコマンドでは全てのテキストがターミナルの前景色だけで表示されます。通常は黒背景に白字か、白背景に黒字となります。&lt;br /&gt;
&lt;br /&gt;
=== デーモンとして ===&lt;br /&gt;
&lt;br /&gt;
毎回 {{ic|.emacs}} ファイルをロードするため Emacs を起動するときには時間が多少かかります。また、別のインスタンスから同じファイルにアクセスしたいと思うときもあるかもしれません。バージョン23から、Emacs はユーザーが接続できるデーモンとして起動することが可能になっています。Emacs をデーモンとして実行するには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs --daemon&lt;br /&gt;
&lt;br /&gt;
起動時にデーモンを実行してウィンドウをデーモンに接続すると良いでしょう。さらに、グラフィカル・コンソールクライアント&#039;&#039;両方を&#039;&#039;同意時にデーモンに接続して GUI を素早く起動することも可能です。&lt;br /&gt;
&lt;br /&gt;
デーモンに接続したいときは場合は次のコマンドを使って下さい (グラフィカル環境から実行したときはグラフィカルクライアントが、tty などのコンソールから実行したときはコンソールクライアントが起動します):&lt;br /&gt;
&lt;br /&gt;
 $ emacsclient&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境にいるときもコンソールクライアントを使いたい場合は次のコマンドを使って下さい:&lt;br /&gt;
&lt;br /&gt;
 $ emacsclient -t&lt;br /&gt;
&lt;br /&gt;
さらに、{{ic|-a &amp;quot;&amp;quot;}} パラメータを追加することもできます。&lt;br /&gt;
これで、最初にコマンドを実行したときは、デーモンとして emacs が起動します。バックグラウンドで動き続けるので後で呼び出した時に起動時間が早くなります (バッファも残り続けます)。&lt;br /&gt;
&lt;br /&gt;
ターミナルや他のプログラムからクライアントを起動した場合、呼び出すプログラムを使うことで Emacs クライアントを閉じなくてもクライアントを使い続けることができます。そのためには、 {{ic|-n}} ({{ic|--no-wait}}) パラメータを使ってクライアントを起動します:&lt;br /&gt;
 $ emacsclient -nc&lt;br /&gt;
&lt;br /&gt;
Mutt や Git などのプログラムは (コミットメッセージを読むための) エディタが終了するまで待機するため、{{ic|-n}} パラメータを使うことはできません。デフォルトエディタが設定されている場合、他のエディタを指定する必要があるかもしれません (例: {{ic|emacsclient -a &amp;quot;&amp;quot; -t}})。&lt;br /&gt;
&lt;br /&gt;
以下のシェル設定が利用できます:&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&lt;br /&gt;
alias emt=&#039;emacsclient -nc -a &amp;quot;&amp;quot;&#039;&lt;br /&gt;
alias emc=&#039;emacsclient -t -a &amp;quot;&amp;quot;&#039;&lt;br /&gt;
EDITOR=&#039;emacsclient -a &amp;quot;&amp;quot;&#039;&lt;br /&gt;
}}&lt;br /&gt;
ただしこれには注意事項があります: コマンドのスペースの関係で多数のプログラムが外部エディタをロードすることはできません。&lt;br /&gt;
&lt;br /&gt;
スクリプトを書くほうがもっと使い勝手が良く信頼性があります:&lt;br /&gt;
{{hc|/usr/local/bin/emc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
if [ -z &amp;quot;$DISPLAY&amp;quot; ]; then&lt;br /&gt;
    IS_GRAPHICAL=true&lt;br /&gt;
else&lt;br /&gt;
    IS_GRAPHICAL=$(emacs --batch -Q --eval=&#039;(if (fboundp &#039;&amp;quot;&#039;&amp;quot;&#039;tool-bar-mode) (message &amp;quot;true&amp;quot;) (message &amp;quot;false&amp;quot;))&#039; 2&amp;gt;&amp;amp;1)&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if $IS_GRAPHICAL; then&lt;br /&gt;
    emacsclient -a &amp;quot;&amp;quot; -nc &amp;quot;$@&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    emacsclient -a &amp;quot;&amp;quot; -t &amp;quot;$@&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
スクリプトは実行可能属性を付けて下さい:&lt;br /&gt;
 # chmod 755 /usr/local/bin/emc&lt;br /&gt;
&lt;br /&gt;
これで &#039;emc&#039; が期待通りに動作するようになります。このクライアントをデフォルトのエディタにしたいときは上記のスクリプトで {{ic|EDITOR}} 環境変数を設定すれば OK です。&lt;br /&gt;
&lt;br /&gt;
=== systemd ユニットとして ===&lt;br /&gt;
&lt;br /&gt;
Emacs 26.1 から systemd ユニットが含まれています。Emacs のインストール後に以下のように有効化してください:&lt;br /&gt;
&lt;br /&gt;
  $ systemctl --user enable --now emacs&lt;br /&gt;
&lt;br /&gt;
Emacs サーバーを実行したいユーザーで上記のコマンドを実行してください。サービスの起動後、Emacs の準備ができます。ユニットファイルは {{ic|/usr/lib/systemd/user/emacs.service}} に存在します。ユニットファイルの中身は以下のようになっています:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/lib/systemd/user/emacs.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Emacs text editor&lt;br /&gt;
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStart=/usr/bin/emacs --fg-daemon&lt;br /&gt;
ExecStop=/usr/bin/emacsclient --eval &amp;quot;(kill-emacs)&amp;quot;&lt;br /&gt;
Environment=SSH_AUTH_SOCK=%t/keyring/ssh&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
systemd のユーザーユニットはログインシェル ({{ic|~/.bash_profile}} など) から環境変数を継承しないため、{{ic|~/.pam_environment}} に変数を設定すると良いでしょう。詳しくは [[Systemd/ユーザー]]を参照。&lt;br /&gt;
&lt;br /&gt;
emacs をデーモンとして起動する場合、{{ic|VISUAL}} と {{ic|EDITOR}} 環境変数を {{ic|emacsclient}} に設定することでプログラムからエディタを起動するときにエディタの新しいインスタンスを起動するかわりに emacsclient が使われるようになります。外部エディタを使用するプログラムとしてメールプログラム (メッセージを編集するため) や Git (コミットメッセージを編集するため)、less ({{ic|v}} コマンドで表示されたファイルを編集するため) などが存在します。emacsclient の {{ic|-n}} ({{ic|--nowait}}) オプションは使用しないでください。基本的にプログラムはエディタが終了したときに編集が完了したと認識するためです。&lt;br /&gt;
&lt;br /&gt;
GUI の Emacs のスタートメニューエントリなども emacs ではなく emacsclient が使われるように変更することを推奨します。&lt;br /&gt;
&lt;br /&gt;
== クイックスタート ==&lt;br /&gt;
&lt;br /&gt;
Emacs は複雑ですが、そのカスタマイズと拡張性のレベルによってもたらされる利益を理解し始めるのにそう時間はかからないでしょう。さらに、幅広い拡張を利用することで Emacs はあらゆる種類の文章編集のための強力な環境に姿を変えることができます。&lt;br /&gt;
&lt;br /&gt;
Emacs には素晴らしいチュートリアルが内蔵されており、スプラッシュ画面の最初のリンクをクリックしてアクセスできます。メニューから &#039;&#039;Help-&amp;gt;Emacs Tutorial&#039;&#039; を選択するか &#039;F1&#039; の後に &#039;t&#039; を押して下さい。このページは Emacs を始めるのに追加的なリソースになるように書かれています。&lt;br /&gt;
&lt;br /&gt;
初心者にもエキスパートにも役立つ、リファレンスカードのセットも Emacs に含まれています、{{ic|/usr/share/emacs/&amp;lt;version&amp;gt;/etc/refcards/}} を見て下さい (&amp;lt;version&amp;gt; はあなたの emacs のバージョンに置き換えて下さい)。&lt;br /&gt;
&lt;br /&gt;
=== 基本的な用語と慣習 ===&lt;br /&gt;
&lt;br /&gt;
始めは慣れないと思うかもしれませんが Emacs にはいくつか特別な用語法と約束事があり、必要に応じて紹介していきます。ただ、Emacs を使うにあたって当然知ってるべきとされるような、基本的な用語についてはあらかじめ説明しておいたほうが良いでしょう。&lt;br /&gt;
&lt;br /&gt;
真っ先に知るべきは&#039;&#039;バッファ&#039;&#039;の概念です。バッファは Emacs の中のデータを表します。例えば、Emacs でファイルを開いたとき、ディスクからファイルから読み込まれてバッファに中身が保存され、バッファを編集して後でディスクに上書き保存することができます。バッファはテキストに限られず、画像やウィジェットなども含めます。作業中でもバッファでアプリケーションを表示することすらできます。こういう考え方もできます: ディスク上のデータは&#039;ファイル&#039;であり、一方、Emacs 上のデータは&#039;バッファ&#039;である。&lt;br /&gt;
&lt;br /&gt;
Emacs におけるキーシーケンスの決まり事も見慣れないかもしれません。即ち:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-x&#039;&#039;&#039; は Control-x を示します&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x&#039;&#039;&#039; は Meta-x を示します&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;Meta&#039; は多くの場合 Alt キーに相当します。また、Esc キーを使うことも可能です。}}&lt;br /&gt;
&lt;br /&gt;
例えば、Emacs を終了するには次のキーシーケンスを使います: &#039;&#039;&#039;C-x C-c&#039;&#039;&#039;。これは &amp;quot;Control を押しながら &#039;x&#039; を押す。手を離す。Control を押しながら &#039;c&#039; を押す&amp;quot; と読み替えることができます。Emacs にはメニューバーが存在しますが、キーシーケンスを使いこなせるように練習することを推奨します。以下から、Emacs で使われるキーバインディングと慣習について説明します。&lt;br /&gt;
&lt;br /&gt;
=== 移動 ===&lt;br /&gt;
&lt;br /&gt;
カーソルの移動は他のグラフィカルエディタとよく似ています。マウスや方向キーを使ってカーソルの位置 (Emacs では&#039;&#039;ポイント&#039;&#039;と呼ばれます) を変更することができます。一般的な移動コマンドは方向キーで出来ますが、Emacs には他にも便利なバインディングが存在します。1文字先に移動するには &#039;&#039;&#039;C-f&#039;&#039;&#039; を使用して、1文字前に移動するには &#039;&#039;&#039;C-b&#039;&#039;&#039; を使用します。&#039;&#039;&#039;C-n&#039;&#039;&#039; と &#039;&#039;&#039;C-p&#039;&#039;&#039; でそれぞれ次の行と前の行に移動できます。基本的に、マウスや方向キーを使うよりもこれらのキーシーケンスを使うことが推奨されています。&lt;br /&gt;
&lt;br /&gt;
当然、Emacs には、単語や文単位で移動できる、もっと高度な移動コマンドが用意されています。&#039;&#039;&#039;M-f&#039;&#039;&#039; は1単語先に移動して &#039;&#039;&#039;M-b&#039;&#039;&#039; は1単語前にポイント移動します。同じく、&#039;&#039;&#039;M-e&#039;&#039;&#039; は1文先にポイント移動して &#039;&#039;&#039;M-a&#039;&#039;&#039; は前に戻ります。&lt;br /&gt;
&lt;br /&gt;
ここまでは、紹介した全ての移動コマンドはポイントに関連しています。&#039;&#039;&#039;M-&amp;lt;&#039;&#039;&#039; を使うことでバッファの最初にポイントを移動することができ、逆に、&#039;&#039;&#039;M-&amp;gt;&#039;&#039;&#039; はバッファの最後に移動します。特定の行番号にポイントを移動するには、&#039;&#039;&#039;M-g g&#039;&#039;&#039; を使います。&#039;&#039;&#039;M-g g&#039;&#039;&#039; は移動したい行番号を尋ねます。また、現在の行の先頭と末尾に移動するには、&#039;&#039;&#039;C-a&#039;&#039;&#039; あるいは &#039;&#039;&#039;C-e&#039;&#039;&#039; を使って下さい。&lt;br /&gt;
&lt;br /&gt;
{{Note|上記のコマンドを含む全てのコマンドのキーバインドは、現在有効になっているモードによって&#039;&#039;多少&#039;&#039;ながら変わってくる可能性があります。しかしながら、同一の機能を実行するのにコマンドを置き換えることはあまりありません。詳しくは[[#モード|モード]]を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
=== ファイルとバッファ ===&lt;br /&gt;
&lt;br /&gt;
Emacs にはファイルを操作するためのコマンドが用意されています。このセクションでは最もよく使われるコマンドを紹介します。ファイルを開くには &#039;&#039;&#039;C-x C-f&#039;&#039;&#039; を使います (Emacs ではこのコマンドを &#039;find-file&#039; と呼びます)。指定されたファイルが存在しなかった場合、Emacs は空のバッファを開きます。バッファを保存するとバッファの中身が入ったファイルが作成されます。&#039;&#039;&#039;C-x C-s&#039;&#039;&#039; を使うことでバッファを保存できます。別のファイル名でバッファを保存するには、&#039;&#039;&#039;C-x C-w&#039;&#039;&#039; を使って下さい (this is a mnemonic for the command &#039;write-file&#039;)。新しいファイル名が尋ねられ、ディスクにファイルが書き込まれます。&#039;&#039;&#039;C-x s&#039;&#039;&#039; で全てのバッファを保存することも可能です。最後に保存されていた状態からバッファに変更が加えられている場合、保存を実行するかどうか訊くプロンプトが表示されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ファイルに対応するバッファが既に開かれている場合 &#039;&#039;&#039;C-x C-f&#039;&#039;&#039; はディスクからファイルを読み込みません。ディスクからファイルを再度読み込むには、(1) まずバッファを閉じて (&#039;&#039;&#039;C-x k&#039;&#039;&#039;)、それからファイルを開くか (&#039;&#039;&#039;C-x C-f&#039;&#039;&#039;) あるいは (2) &#039;&#039;&#039;M-x revert-buffer&#039;&#039;&#039; を使ってディスク上のデータに戻して下さい。それか (3) &#039;&#039;&#039;C-x C-v&#039;&#039;&#039; でファイルを現在のバッファにロードするか (4) &#039;&#039;&#039;C-x RET r RET&#039;&#039;&#039; で同一コードでファイルを再読み込みしてください。}}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;find-file&amp;quot; や &amp;quot;write-file&amp;quot; などのインタラクティブなコマンドでは Emacs ウィンドウの一番下の行に入力が求められます。この行のことは&#039;&#039;ミニバッファ&#039;&#039;と呼びます。ミニバッファでは基本的な編集コマンドを使うことができ、多くの *nix シェルで利用できるのと同じようなタブ補完機能があります。&#039;&#039;&#039;&amp;lt;TAB&amp;gt;&#039;&#039;&#039; を2回連続で押すと補完リストが表示され、マウスを使ってリストから補完候補を選択することも可能です。ミニバッファでの補完はコマンドやファイル名など様々な形で使えます。&lt;br /&gt;
&lt;br /&gt;
ミニバッファには履歴機能も存在します。前に入力したコマンドは &#039;&#039;&#039;Up Arrow&#039;&#039;&#039; または &#039;&#039;&#039;M-p&#039;&#039;&#039; を使うことで再呼び出しできます。&lt;br /&gt;
&lt;br /&gt;
ミニバッファは &#039;&#039;&#039;C-g&#039;&#039;&#039; を押すことでいつでも終了できます。&lt;br /&gt;
&lt;br /&gt;
ファイルを複数開いたら、ファイルを切り替える手段が必要です。Emacs 内に既に存在するバッファにファイルを開くと、Emacs はそのバッファに切り替えます。しかしながらこれは効率的とは言えません。Emacs には表示するバッファを選択する &#039;&#039;&#039;C-x b&#039;&#039;&#039; が存在します (タブ補完が使えます)。存在しないバッファの名前を入力すると、その名前で新しいバッファが作成されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|前のバッファに切り替えるには &#039;&#039;&#039;C-x b &amp;lt;RET&amp;gt;&#039;&#039;&#039; を使います。前のバッファがデフォルトだからです。}}&lt;br /&gt;
&lt;br /&gt;
全てのバッファのリストを &#039;&#039;&#039;C-x C-b&#039;&#039;&#039; で表示することができます。バッファが必要なくなったときは &#039;&#039;&#039;C-x k&#039;&#039;&#039; で削除することが可能です。&lt;br /&gt;
&lt;br /&gt;
=== 編集 ===&lt;br /&gt;
&lt;br /&gt;
Emacs には多数の編集コマンドが存在します。まだ紹介していない最も重要なコマンドはおそらく &#039;undo&#039; でしょう。&#039;&#039;&#039;C-_&#039;&#039;&#039; または &#039;&#039;&#039;C-/&#039;&#039;&#039; で実行することができます。基本的に移動コマンドには対応する削除コマンドが存在します。例えば &#039;&#039;&#039;M-&amp;lt;backspace&amp;gt;&#039;&#039;&#039; で後方の単語を削除することができ、{{ic|M-d}} で前方の単語を削除できます。行末または文章の終わりまで削除するにはそれぞれ {{ic|C-k}} または {{ic|M-k}} を使います。&lt;br /&gt;
&lt;br /&gt;
1行は80文字を超えていはいけないという経験則が存在します。1行の長さを長くしすぎないことで、特にウィンドウの縁で改行してしまうような場合に、可読性を維持することができます。改行の自動挿入 (または削除) は Emacs では詰め込み (&#039;&#039;filling&#039;&#039;) と呼ばれます。{{ic|M-q}} を使うことでパラグラフを折り返させることができます。&lt;br /&gt;
&lt;br /&gt;
文字列と単語はそれぞれ {{ic|C-t}} と {{ic|M-t}} で置き換えることが可能です。例えば {{ic|Hello World!}} を {{ic|World! Hello}} と置き換えられます。&lt;br /&gt;
&lt;br /&gt;
単語の大文字小文字はすぐに修正できます。{{ic|M-l}} は単語を小文字に変換し ({{ic|HELLO}} は {{ic|hello}})、{{ic|M-u}} は単語を大文字に変換します ({{ic|hello}} は {{ic|HELLO}})。そして {{ic|M-c}} は単語の最初の文字を大文字にして他の文字は小文字にします ({{ic|hElLo}} は {{ic|Hello}})。&lt;br /&gt;
&lt;br /&gt;
=== kill と yank とリージョン ===&lt;br /&gt;
&lt;br /&gt;
リージョンとは、2点間にあるテキストです。2点のうちの1つは、&#039;&#039;マーク&#039;&#039; と呼ばれ、もう1つはポイントです。 &#039;&#039;&#039;C-&amp;lt;SPC&amp;gt;&#039;&#039;&#039; によってマークの位置がセットされ、その後でポイントが移動することでリージョンが作られます。GNU Emacs 23.1 以降、リージョンはデフォルトで可視化されます。リージョン上で動作する多くのコマンドがあり、もっともよく使われるコマンドに &#039;&#039;killing&#039;&#039; コマンドがあります。&lt;br /&gt;
&lt;br /&gt;
Emacs では、カット＆ペーストはそれぞれ、&#039;&#039;kill&#039;&#039; と &#039;&#039;yank&#039;&#039; と呼ばれます。1文字以上の文字を削除するコマンド（ &#039;&#039;&#039;C-k&#039;&#039;&#039; や &#039;&#039;&#039;M-d&#039;&#039;&#039; といった上で記述したコマンドも含めて）は、実際にテキストをカットし、&#039;&#039;kill-ring&#039;&#039; として知られるものに追加します。kill-ring は、単に kill されたテキストのリストです。kill-ring は、デフォルトでは直近60個の kill されたテキストを保存します。kill に成功すると、リストの先頭に接続されて保存されます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-w&#039;&#039;&#039; と &#039;&#039;&#039;M-w&#039;&#039;&#039; によって、それぞれリージョンの kill とコピーができます。&lt;br /&gt;
&lt;br /&gt;
kill されたテキストをバッファに挿入する（&#039;yanking&#039; として知られます）ためには、&#039;&#039;&#039;C-y&#039;&#039;&#039; を使います。 &#039;&#039;&#039;C-y&#039;&#039;&#039; は、複数回使用することで、繰り返しテキストを yank できます。前述の通り、以前の kill は、リストに保存されます。しかし、&#039;&#039;&#039;C-y&#039;&#039;&#039; は、そのうち最初のものしか取得しません。それより前の kill は、&#039;&#039;&#039;M-y&#039;&#039;&#039; によってアクセスすることができます。これによって、&#039;yank&#039; で挿入されたテキストをリストの先頭に移動させます。 &#039;&#039;&#039;M-y&#039;&#039;&#039; は &#039;&#039;&#039;C-y&#039;&#039;&#039; に続けて使われなければならず、kill-ring をたどるために何度でも使えます。&lt;br /&gt;
&lt;br /&gt;
=== 検索と置換 ===&lt;br /&gt;
&lt;br /&gt;
文字列を検索することは、テキストの編集において一般的な作業です。検索は、&#039;&#039;&#039;C-s&#039;&#039;&#039; (後方検索) または &#039;&#039;&#039;C-r&#039;&#039;&#039; (前方検索) によって実行されます。これらのコマンドは、検索する文字列を入力するプロンプトを表示します。検索は1文字入力するごとに実行され、タイプごとに次に（あるいは前に）一致した文字列にマッチします。次の検索結果に行くには C-s を、前の検索結果に行くには C-r を押します。  もし探しているものが見つかったのであれば、&#039;&#039;&#039;&amp;lt;RET&amp;gt;&#039;&#039;&#039; を押すことで検索を終了できます。一方、検索を開始した場所に戻りたければ &#039;&#039;&#039;C-g &#039;&#039;&#039; を押します。&lt;br /&gt;
&lt;br /&gt;
いったん検索が完了すると (たとえば &#039;&#039;&#039;C-g&#039;&#039;&#039; 等で中断していない場合)、検索された文字列は、次の検索のデフォルト検索文字となります。検索された文字を使用するには、後方検索なら &#039;&#039;&#039;C-s C-s&#039;&#039;&#039; , 前方検索なら &#039;&#039;&#039;C-r C-r&#039;&#039;&#039; をそれぞれ押します。&lt;br /&gt;
&lt;br /&gt;
I-search には、いくつかの有用なコマンドがあります。 &#039;&#039;&#039;M-e&#039;&#039;&#039; によって、検索文字列の編集が可能です。 &#039;&#039;&#039;M-c&#039;&#039;&#039; によって、大文字小文字を区別するか、しないかを切り替えることができます。&lt;br /&gt;
&lt;br /&gt;
正規表現検索は、検索の開始コマンド以外、上述の検索と同様に動作します。 &#039;&#039;&#039;C-M-s&#039;&#039;&#039; あるいは &#039;&#039;&#039;C-M-r&#039;&#039;&#039; によって、それぞれ正規表現による後方検索、前方検索を開始します。いったん正規表現検索を開始すると、文字列検索と同様に &#039;&#039;&#039;C-s&#039;&#039;&#039; と &#039;&#039;&#039;C-r&#039;&#039;&#039; を後方検索、前方検索に使用することができます。&lt;br /&gt;
&lt;br /&gt;
検索に加え、文字列や正規表現を置換することができます（それぞれ &#039;&#039;&#039;M-%&#039;&#039;&#039; および &#039;&#039;&#039;C-M-%&#039;&#039;&#039; によって実行されます）。元のテキストと変換後のテキスト用にプロンプトが表示され、それからハイライトされた一致箇所に対する動作のために別のプロンプトが表示されます。多くのオプションが使用できますが（使用できるオプションの完全なリストは &#039;&#039;&#039;?&#039;&#039;&#039; を押してください）、もっとも一般的に使われるのは、変換を実行する &#039;&#039;&#039;y&#039;&#039;&#039; と、スキップする &#039;&#039;&#039;n&#039;&#039;&#039; 、そしてハイライトされている文字列を含め、以降すべての一致に対して変換する &#039;&#039;&#039;!&#039;&#039;&#039; になります。&lt;br /&gt;
&lt;br /&gt;
=== 前置引数 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-u&#039;&#039;&#039; は、&#039;universal-argument&#039; コマンドに対応づけられています。&#039;universal-argument&#039; を渡すことによって、より多くの情報をコマンドに提供できます（この情報を &#039;前置引数&#039; と呼びます）。たとえば&lt;br /&gt;
&lt;br /&gt;
 C-u 80 %&lt;br /&gt;
&lt;br /&gt;
は、%記号の行を挿入します。また、&lt;br /&gt;
&lt;br /&gt;
 C-u 4 M-d&lt;br /&gt;
&lt;br /&gt;
は4単語を削除します。この場合、&#039;&#039;&#039;M-d&#039;&#039;&#039; によって実行されるコマンドへ、要求する単語の数を渡しています。&lt;br /&gt;
&lt;br /&gt;
universal argument は、&#039;&#039;&#039;M-&amp;lt;数字&amp;gt;&#039;&#039;&#039; によって少し早く入力することができます。&lt;br /&gt;
&lt;br /&gt;
 M-80 %&lt;br /&gt;
&lt;br /&gt;
=== インデント ===&lt;br /&gt;
&lt;br /&gt;
インデントは、1行をインデントする &#039;&#039;&#039;&amp;lt;TAB&amp;gt;&#039;&#039;&#039; やリージョンをインデントする &#039;&#039;&#039;C-M-\&#039;&#039;&#039; によって実行されます。リージョンが有効（&#039;&#039;たとえば&#039;&#039;ハイライトされている）場合、&#039;&#039;&#039;&amp;lt;TAB&amp;gt;&#039;&#039;&#039; はリージョンもインデントします。&lt;br /&gt;
&lt;br /&gt;
テキストがどのようにインデントされるかは、正確には有効になっている &#039;&#039;メジャーモード&#039;&#039; に依ります。メジャーモードは、しばしば特定の種類のテキストをインデントするときに特化したインデントスタイルを定義します。（より詳しくは [[#モード|Modes]] を見てください。）&lt;br /&gt;
&lt;br /&gt;
いくつかの場合、ファイルタイプに対して適したメジャーモードがありません。その場合、手動でのインデントが必要になります。リージョンを作成（ [[#kill と yank とリージョン|kill と yank とリージョン]] 参照）し、&#039;&#039;&#039;C-u &amp;lt;n&amp;gt; C-x &amp;lt;TAB&amp;gt;&#039;&#039;&#039; でインデントを実行してください。（ここで、&#039;&amp;lt;n&amp;gt;&#039; はリージョンに含まれるテキストがインデントされる列の数です。）例えば、&lt;br /&gt;
&lt;br /&gt;
リージョンのインデントを4列追加する:&lt;br /&gt;
&lt;br /&gt;
 C-u 4 C-x &amp;lt;TAB&amp;gt;&lt;br /&gt;
&lt;br /&gt;
リージョンのインデントを2列減らす:&lt;br /&gt;
&lt;br /&gt;
 C-u -2 C-x &amp;lt;TAB&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ウィンドウとフレーム ===&lt;br /&gt;
&lt;br /&gt;
Emacs は、多くのファイルを同時に編集するために便利であるよう設計されています。これは、Emacs のインタフェースを3つの階層にわけることで実現されています。つまり、すでに紹介済みのバッファ、&#039;&#039;ウィンドウ&#039;&#039; と &#039;&#039;フレーム&#039;&#039; です。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ウィンドウ&#039;&#039;&#039; とは、Emacsでバッファを表示している場所のことです。1つのウィンドウは、一度に1つのバッファしか表示できません。しかし、1つのバッファは複数のウィンドウに表示できます。それぞれのウィンドウの下には、&#039;&#039;モードライン&#039;&#039; があります。モードラインには、そのバッファの情報が表示されています。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;フレーム&#039;&#039;&#039; とは、Emacs の&amp;quot;ウィンドウ&amp;quot;（一般的な意味。たとえば最近のデスクトップパラダイムの意味での &#039;ウィンドウ&#039;）です。フレームには、タイトルバー、メニューバー、1つ以上の &#039;ウィンドウ&#039; (Emacs 的な意味。たとえば上で定義した &#039;ウィンドウ&#039;) が含まれます。&lt;br /&gt;
&lt;br /&gt;
以降では、これらの単語は Emacs に存在するものでの定義として使用します。&lt;br /&gt;
&lt;br /&gt;
ウィンドウを水平あるいは垂直に分割するには、それぞれ &#039;&#039;&#039;C-x 2&#039;&#039;&#039; あるいは &#039;&#039;&#039;C-x 3&#039;&#039;&#039; を使います。これは、現在のフレームにもう1つのウィンドウを生成する効果があります。複数のウィンドウ間を巡回するには、&#039;&#039;&#039;C-x o&#039;&#039;&#039; を使用します。&lt;br /&gt;
&lt;br /&gt;
ウィンドウ分割の反対は、ウィンドウを削除することです。現在のウィンドウを削除するには &#039;&#039;&#039;C-x 0&#039;&#039;&#039; を使い、現在のウィンドウ以外を削除するには &#039;&#039;&#039;C-x 1&#039;&#039;&#039; を使います。&lt;br /&gt;
&lt;br /&gt;
ウィンドウと同様に、フレームも生成や削除が可能です。 &#039;&#039;&#039;C-x 5 2&#039;&#039;&#039; によってフレームを生成できます。 &#039;&#039;&#039;C-x 5 0&#039;&#039;&#039; によって現在のフレームを削除し、&#039;&#039;&#039;C-x 5 1&#039;&#039;&#039; によってr現在のフレーム以外のすべてのフレームを削除します。&lt;br /&gt;
&lt;br /&gt;
{{Note|これらのコマンドはバッファには影響しません。たとえば、ウィンドウを削除しても表示されているバッファは kill されません。}}&lt;br /&gt;
&lt;br /&gt;
=== モード ===&lt;br /&gt;
&lt;br /&gt;
Emacs モードは Emacs Lisp で書かれた拡張であり、接続されているバッファの挙動を制御します。大抵の場合、インデントやシンタックスハイライト、テキストを編集するときのキーバインドを提供します。洗練されたモードは Emacs を完全な IDE (統合開発環境) に変貌させます。Emacs は基本的にファイルの拡張子でモードをロードすべきか判断します。&lt;br /&gt;
&lt;br /&gt;
シェルスクリプトを編集するのに役立つモードとして sh-mode, line-number-mode, column-number-mode が存在します。同時に使用することができ、以下のコマンドで呼び出します:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x sh-mode &amp;lt;RET&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x column-number-mode &amp;lt;RET&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
line-number-mode はデフォルトで有効になっていますが、コマンドを再度実行することでオンとオフを切り替えられます:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x line-number-mode &amp;lt;RET&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
sh-mode は、&#039;&#039;メジャーモード&#039;&#039; の1つです。メジャーモードは Emacs を調整し、時には、特定の種類のテキストの編集用に特別なコマンドを提供します。それぞれのバッファでは、メジャーモードは1つだけが有効です。シンタックスハイライトやインデントサポートに加えて、sh-mode はシェルスクリプトを書く助けになるいくつかのコマンドを定義しています。以下に、それらの内のいくつかを示します。&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-c (&#039;&#039;&#039;	 関数定義を挿入する&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c C-f&#039;&#039;&#039;	 &#039;for&#039; ループを挿入する&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c TAB&#039;&#039;&#039;	 &#039;if&#039; 文を挿入する&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c C-w&#039;&#039;&#039;	 &#039;while&#039; ループを挿入する&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c C-l&#039;&#039;&#039;	 1 から n までの番号付きループを挿入する&lt;br /&gt;
&lt;br /&gt;
&#039;line-number-mode&#039; と &#039;column-number-mode&#039; は&#039;&#039;マイナーモード&#039;&#039;です。マイナーモードはメジャーモードを拡張することができ、同時に任意の数のマイナーモードを有効にできます。&lt;br /&gt;
&lt;br /&gt;
=== マニュアル ===&lt;br /&gt;
&lt;br /&gt;
Emacs を本当にマスターしたいのであれば、一番よく読むべき文章はやはり公式マニュアルです:&lt;br /&gt;
* Emacs: 完全な Emacs ユーザーマニュアル&lt;br /&gt;
* Emacs FAQ&lt;br /&gt;
* Emacs Lisp Intro: プログラミング言語を使用したことがない場合&lt;br /&gt;
* Elisp: プログラミング言語をよく知っている場合&lt;br /&gt;
&lt;br /&gt;
これらは、 [http://www.gnu.org/software/emacs/manual/ GNU.org] から PDF として入手できます。あるいは Emacs 自身にて組み込みの &#039;info&#039; リーダー &#039;&#039;&#039;C-h i&#039;&#039;&#039; を用いて直接読むこともできます。本を選択するには &#039;&#039;&#039;m&#039;&#039;&#039; を押してください。&lt;br /&gt;
&lt;br /&gt;
ユーザーの幾人かは、&#039;info&#039; で読むことを好みます。便利なショートカットであり、段落はウィンドウ幅に調整され、フォントは現在の画面解像度に調整されるためです。何人かは目に優しいと気づいています。最後に、本の内容を任意の Emacs バッファへ簡単にコピーでき、さらに例示されている Lisp コードを直接実行することさえできます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;info&#039;&#039;&#039; 本について、もっとよく知りたいなら、&#039;&#039;&#039;C-h i m info &amp;lt;RET&amp;gt;&#039;&#039;&#039; を実行してください。&lt;br /&gt;
info モードで &#039;&#039;&#039;?&#039;&#039;&#039; を押すと、ショートカットの簡易リストが表示されます。&lt;br /&gt;
&lt;br /&gt;
== カスタマイズ ==&lt;br /&gt;
&lt;br /&gt;
Emacs は {{ic|~/.emacs}} を編集するか &#039;&#039;&#039;M-x customize&#039;&#039;&#039; を使うことで設定をすることができます。このセクションでは手動で {{ic|~/.emacs}} を編集する方に焦点をあて、いくつかのカスタマイズ例を示すことで、一般的な Emacs の設定をデモンストレーションします。customize コマンドは調整を行うためのシンプルなインターフェイスを提供しますが、おそらく Emacs に慣れてくるにつれて制約を感じるようになるでしょう。&lt;br /&gt;
&lt;br /&gt;
ここでの例は、すべて Emacs が動作している間に動作します。Emacs 内で式を評価するには、以下を使います。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-M-x&#039;&#039;&#039; ポイントがある式を評価する&lt;br /&gt;
&lt;br /&gt;
あるいは、&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-x C-e&#039;&#039;&#039; ポイントの直前の &#039;)&#039; を最後のカッコとする式を評価する&lt;br /&gt;
&lt;br /&gt;
何人かのユーザーは、プロンプトで &#039;yes&#039; や &#039;no&#039; をタイプすると、すぐに疲れます。その代わりに &#039;y&#039; や &#039;n&#039; を使うために:&lt;br /&gt;
&lt;br /&gt;
 (defalias &#039;yes-or-no-p &#039;y-or-n-p)&lt;br /&gt;
&lt;br /&gt;
カーソルの点滅を止めるには、次を使用:&lt;br /&gt;
&lt;br /&gt;
 (blink-cursor-mode -1)&lt;br /&gt;
&lt;br /&gt;
同じく、前のセクションにある column-number-mode を有効にするには:&lt;br /&gt;
&lt;br /&gt;
 (column-number-mode 1)&lt;br /&gt;
&lt;br /&gt;
前の2つのコマンドに類似性があるのは偶然ではありません。blink-cursor-mode と column-number-mode は、共にマイナーモードです。ルールとして、マイナーモードは正の数を引数にとると有効になり、負の数で無効になります。引数が省略された時、マイナーモードは on/off を切り替えます。&lt;br /&gt;
&lt;br /&gt;
マイナーモードのその他いくつかの例を示します。以下はそれぞれ、スクロールバー、メニューバー、ツールバーを無効にします。&lt;br /&gt;
&lt;br /&gt;
 (scroll-bar-mode -1)&lt;br /&gt;
 (menu-bar-mode -1)&lt;br /&gt;
 (tool-bar-mode -1)&lt;br /&gt;
&lt;br /&gt;
変数 &#039;auto-mode-alist&#039; によって、特定のファイル名に対してデフォルトで使われるメジャーモードを変更することができます。以下の例では、&#039;.tut&#039; および &#039;.req&#039; ファイルのデフォルトのメジャーモードを &#039;text-mode&#039; にします。&lt;br /&gt;
&lt;br /&gt;
 (setq auto-mode-alist&lt;br /&gt;
   (append&lt;br /&gt;
     &#039;((&amp;quot;\\.tut$&amp;quot; . text-mode)&lt;br /&gt;
       (&amp;quot;\\.req$&amp;quot; . text-mode))&lt;br /&gt;
     auto-mode-alist))&lt;br /&gt;
&lt;br /&gt;
設定は、基底となるモードごとに適用することもできます。基本的な方法は、&#039;&#039;hook&#039;&#039; に関数を追加することです。例えば、text-mode でだけインデントをタブの代わりに強制的にスペースを使用するためには:&lt;br /&gt;
&lt;br /&gt;
 (add-hook &#039;text-mode-hook (lambda () (setq indent-tabs-mode nil)))&lt;br /&gt;
&lt;br /&gt;
同様に、場所によらずインデントにてスペースを使用するには:&lt;br /&gt;
&lt;br /&gt;
 (setq-default indent-tabs-mode nil)&lt;br /&gt;
&lt;br /&gt;
キーバインドは、2つの方法で調整できます。1つ目の方法は &#039;define-key&#039; です。&#039;define-key&#039; は、コマンドに対するキーバインドを作成できますが、1つのモードに対してだけ作成します。以下の例では、&#039;&#039;&#039;F8&#039;&#039;&#039; に、&#039;text-mode&#039; バッファでは行末のホワイトスペースを除去するよう割り当てます。&lt;br /&gt;
&lt;br /&gt;
 (define-key text-mode-map (kbd &amp;quot;&amp;lt;f8&amp;gt;&amp;quot;) &#039;delete-trailing-whitespace)&lt;br /&gt;
&lt;br /&gt;
もう1つの方法は、&#039;global-set-key&#039; です。これによって、場所によらずキーにコマンドを割り当てることができます。&#039;query-replace-regexp&#039; (&#039;&#039;&#039;C-M-%&#039;&#039;&#039;) を &#039;&amp;lt;f7&amp;gt;&#039; に割り当てるには:&lt;br /&gt;
&lt;br /&gt;
 (global-set-key (kbd &amp;quot;&amp;lt;f7&amp;gt;&amp;quot;) &#039;query-replace-regexp)&lt;br /&gt;
&lt;br /&gt;
他のキーにコマンドを割り当てることは、既存の割当を入れ替えるわけではありません。たとえば、上記例の後、&#039;query-replace-regexp&#039; は、&#039;&#039;&#039;F7&#039;&#039;&#039; と &#039;&#039;&#039;C-M-%&#039;&#039;&#039; の両方に割り当てられます。&lt;br /&gt;
&lt;br /&gt;
Emacs のほとんどすべてがカスタマイズできます。[http://emacswiki.org/ Emacs Wiki] を通して見ることが基礎固めに適しています。&lt;br /&gt;
&lt;br /&gt;
=== マルチ設定 ===&lt;br /&gt;
&lt;br /&gt;
複数の設定を使い、Emacs にどれか一つをロードさせることができます。&lt;br /&gt;
&lt;br /&gt;
例えば、2つの設定ファイルを定義してみましょう。&lt;br /&gt;
&lt;br /&gt;
{{hc|.emacs|&lt;br /&gt;
(load &amp;quot;~/.emacs.d/main&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/functions&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/modes&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/plugins&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/theme&amp;quot; nil t)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これによって、デーモンとしての起動用にフルカスタムをロードします。しかし、&#039;&#039;plugins&#039;&#039; ファイルは巨大で、ロードが遅いです。&#039;&#039;plugins&#039;&#039; 機能が不要な新しい Emacs インスタンスを生成したい場合、&#039;&#039;plugins&#039;&#039; を毎回ロードすることは面倒です。&lt;br /&gt;
&lt;br /&gt;
{{hc|.emacs-light|&lt;br /&gt;
(load &amp;quot;~/.emacs.d/main&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/functions&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/modes&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/theme&amp;quot; nil t)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Emacs を以下のコマンドで起動します。&lt;br /&gt;
 emacs -q -l ~/.emacs-light&lt;br /&gt;
これによって、エイリアスを生成して、呼び出しを簡単にすることができます。&lt;br /&gt;
&lt;br /&gt;
=== ローカル・カスタム変数 ===&lt;br /&gt;
&lt;br /&gt;
設定ファイル内で変数を定義することができます。この変数はファイル内でローカルに変更することができます。&lt;br /&gt;
&lt;br /&gt;
 (defcustom my-compiler &amp;quot;gcc&amp;quot; &amp;quot;Some documentation&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
どんなファイルでもローカル変数を定義するには2つの方法があります。[https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html 完全な詳細のマニュアル ] を参照してください&lt;br /&gt;
&lt;br /&gt;
* {{ic| M-x add-file-local-variable-prop-line}} は、ファイルの先頭に以下のようなコメント行を追加します。&lt;br /&gt;
 // -*- my-compiler:g++; mode:c++ -*-&lt;br /&gt;
* {{ic| M-x add-file-local-variable}} は、ファイルの末尾付近に行を追加します。&lt;br /&gt;
 // Local Variables:&lt;br /&gt;
 // my-compiler: g++&lt;br /&gt;
 // mode: c++&lt;br /&gt;
 // End:&lt;br /&gt;
&lt;br /&gt;
変数の効果を得るためには、{{ic|M-x revert-buffer}} を実行する必要あることに注意してください。&lt;br /&gt;
&lt;br /&gt;
カスタム変数は、デフォルトでは安全でないと考えられています。もしカスタム変数によって再定義されたローカル変数を含むファイルを開こうとすると、Emacs は確認するよう通知します。&lt;br /&gt;
&lt;br /&gt;
変数を安全であるとして宣言することもできます。これによって確認のためのプロンプトを除去することができます。新しい変数が安全と考えられるためには検証されなければならない、と述語を指定する必要があります。&lt;br /&gt;
&lt;br /&gt;
 (defcustom my-compiler &amp;quot;gcc&amp;quot; &amp;quot;Some documentation&amp;quot; :safe &#039;stringp)&lt;br /&gt;
&lt;br /&gt;
この例では、文字列以外の何かにセットしようとすると、Emacs は安全でないと考えます。&lt;br /&gt;
&lt;br /&gt;
=== カスタムカラーとテーマ ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;face&#039;&#039; を使うことで簡単に色をカスタマイズすることができます:&lt;br /&gt;
 (set-face-background  &#039;region                 &amp;quot;color-17&amp;quot;)&lt;br /&gt;
 (set-face-foreground  &#039;region                 &amp;quot;white&amp;quot;)&lt;br /&gt;
 (set-face-bold-p      &#039;font-lock-builtin-face t ) &lt;br /&gt;
&lt;br /&gt;
ポイントがある場所の face の名前を Emacs に表示させることができます。そのためには &#039;&#039;customize-face&#039;&#039; を使います。どのように色、太字、下線、等が設定されているかを示すことができます。&lt;br /&gt;
&lt;br /&gt;
コンソール上の Emacs は、256色を扱うことができます。しかし、それには適したターミナルを使わなければなりません。たとえば URxvt は256色をサポートしています。&#039;&#039;list-colors-display&#039;&#039; によって、サポートされる色の包括的なリストが表示できます。これは強くターミナルに依存します。&lt;br /&gt;
&lt;br /&gt;
=== SyncTeX サポート ===&lt;br /&gt;
&lt;br /&gt;
Emacs は強力な LaTeX エディタです。LaTeX モードを必要に応じて自由に編集・作成することができます。&lt;br /&gt;
&lt;br /&gt;
SyncTeX サポートといった、まだいくつかの挑戦があります。最初に TeX ディストリビューションに SyncTeX があるかを確認する必要があります。もし TeX Live を手動でインストールした場合、&#039;&#039;synctex&#039;&#039; パッケージをインストールする必要があるかもしれません。&lt;br /&gt;
 # umask 022 &amp;amp;&amp;amp; tlmgr install synctex&lt;br /&gt;
&lt;br /&gt;
SyncTeX サポートは、ビューア依存です。ここでは例として Zathura を使用します。他の PDF ビューアを使用する場合、コードを変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
 (defcustom tex-my-viewer &amp;quot;zathura --fork -s -x \&amp;quot;emacsclient --eval &#039;(progn (switch-to-buffer  (file-name-nondirectory \&amp;quot;&#039;\&amp;quot;&#039;\&amp;quot;%{input}\&amp;quot;&#039;\&amp;quot;&#039;\&amp;quot;)) (goto-line %{line}))&#039;\&amp;quot;&amp;quot; &lt;br /&gt;
   &amp;quot;TeX 文書用 PDF ビューア。&lt;br /&gt;
    同じドキュメントを2回起動したこと検出する、または Emacs を&lt;br /&gt;
    閉じても表示を継続するためにビューアを fork したい場合、&lt;br /&gt;
  &lt;br /&gt;
 シンプルなコマンド:&lt;br /&gt;
 &lt;br /&gt;
   zathura --fork&lt;br /&gt;
 &lt;br /&gt;
 SyncTex を用いて pdf を逆検索するために以下が使用できる。&lt;br /&gt;
 &lt;br /&gt;
   emacsclient --eval &#039;(progn (switch-to-buffer  (file-name-nondirectory \&amp;quot;%{input}\&amp;quot;)) (goto-line %{line}))&#039;&lt;br /&gt;
 &lt;br /&gt;
 引用符および二重引用符は必須で、適切にエスケープされなければならない点に注意。&amp;quot;&lt;br /&gt;
 :safe &#039;stringp)&lt;br /&gt;
&lt;br /&gt;
カスタム変数を定義します。もし AucTeX や Emacs 標準の LaTeX-mode を使用しているなら、それに応じてビューアを設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
LaTeX ソースファイルを Emacs で開き、文書をコンパイルし、ビューアを起動します。Zathura が起動します。{{ic|Ctrl+Left click}} を押すと、Emacs は対応する位置にポイントを移動させます。&lt;br /&gt;
&lt;br /&gt;
=== Systemd ファイルのシンタックスハイライト ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/holomorph/systemd-mode systemd-mode] を使うことができます。&lt;br /&gt;
&lt;br /&gt;
もしくは init ファイルに以下を追加することで、簡単に emacs で systemd のファイル (サービスやタイマーなど) をカラー表示できます:&lt;br /&gt;
&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.service\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.timer\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.target\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.mount\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.automount\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.slice\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.socket\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.path\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.netdev\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.network\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.link\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
&lt;br /&gt;
=== emacs-nox のクリップボードサポート ===&lt;br /&gt;
&lt;br /&gt;
emacs-nox で [[Xorg]] クリップボードを使うには、{{Pkg|xclip}} を[[インストール]]して以下の関数を {{ic|~/.emacs}} に追加してください [https://lists.gnu.org/archive/html/help-gnu-emacs/2014-08/msg00189.html]:&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&lt;br /&gt;
;; use xclip to copy/paste in emacs-nox&lt;br /&gt;
(unless window-system&lt;br /&gt;
  (when (getenv &amp;quot;DISPLAY&amp;quot;)&lt;br /&gt;
    (defun xclip-cut-function (text &amp;amp;optional push)&lt;br /&gt;
      (with-temp-buffer&lt;br /&gt;
	(insert text)&lt;br /&gt;
	(call-process-region (point-min) (point-max) &amp;quot;xclip&amp;quot; nil 0 nil &amp;quot;-i&amp;quot; &amp;quot;-selection&amp;quot; &amp;quot;clipboard&amp;quot;)))&lt;br /&gt;
    (defun xclip-paste-function()&lt;br /&gt;
      (let ((xclip-output (shell-command-to-string &amp;quot;xclip -o -selection clipboard&amp;quot;)))&lt;br /&gt;
	(unless (string= (car kill-ring) xclip-output)&lt;br /&gt;
	  xclip-output )))&lt;br /&gt;
    (setq interprogram-cut-function &#039;xclip-cut-function)&lt;br /&gt;
    (setq interprogram-paste-function &#039;xclip-paste-function)&lt;br /&gt;
    ))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|以下を追加することでターミナルマウスサポートも有効にできます:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
;; xterm mouse support&lt;br /&gt;
(require &#039;mouse)&lt;br /&gt;
(xterm-mouse-mode t)&lt;br /&gt;
}}&lt;br /&gt;
[http://www.opensource.apple.com/source/emacs/emacs-51/emacs/lisp/mwheel.el mwheel.el] を参照。}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
前のセクションでは基本的な編集コマンドを説明していますが、それだけでは Emacs の可能性はわかりません。このセクションではより高度なテクニックや機能を紹介します。&lt;br /&gt;
&lt;br /&gt;
ただし全てを説明するとなると長くなりすぎます。そのためこのセクションはあくまで Emacs の雅やかな機能をいくつか&#039;&#039;デモ&#039;&#039;するだけにとどめます。&lt;br /&gt;
&lt;br /&gt;
全ての機能の詳細な説明は[[#ドキュメント|ドキュメント]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== TRAMP ===&lt;br /&gt;
&lt;br /&gt;
TRAMP (Transparent Remote Access, Multiple Protocols) は多数のプロトコルで、リモートファイルに透過的にアクセスすることができる拡張です。ファイル名を入力するときに、特定の形式を入力すると TRAMP が呼びだされます。例:&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/hosts}} を root 権限で開く前に root のパスワードを要求するには:&lt;br /&gt;
&lt;br /&gt;
 C-x C-f /sudo::/etc/hosts&lt;br /&gt;
&lt;br /&gt;
SSH で &#039;myhost&#039; に &#039;myuser&#039; として接続して {{ic|~/example.txt}} ファイルを開くには:&lt;br /&gt;
&lt;br /&gt;
 C-x C-f /ssh:myuser@myhost:~/example.txt&lt;br /&gt;
&lt;br /&gt;
TRAMP のパスは &#039;/[protocol]:[[user@]host]:&amp;lt;file&amp;gt;&#039; という形式で指定します。TRAMP がサポートしているのは上記の例に限りません。詳しくは TRAMP の info マニュアルを参照してください。マニュアルは Emacs に付属しています。&lt;br /&gt;
&lt;br /&gt;
=== キーボードマクロとレジスタ ===&lt;br /&gt;
&lt;br /&gt;
このセクションでは、2, 3の強力な編集機能に対する実用的なデモンストレーションを示します。つまり、&#039;&#039;keyboard macros&#039;&#039; と &#039;&#039;registers&#039;&#039; です。&lt;br /&gt;
&lt;br /&gt;
目的は、一連の文字のリストとこのリスト内での対応する位置を作ることです。それらは手動で成形することもできますが、遅く、間違いをおこしやすいです。その代わりに、Emacs のよりパワフルないくつかの編集機能によって、レバレッジを効かせられます。答えの前に、以下で使うテクニックの背景について詳細を示します。&lt;br /&gt;
&lt;br /&gt;
1つ目の機能は &#039;&#039;レジスタ&#039;&#039; です。レジスタ は、数字からウィンドウコンフィグまでに及ぶ様々なデータ型を格納し取得するために使われます。それぞれのレジスタには、1文字の名前が与えられます。この文字はレジスタへのアクセスに使われます。&lt;br /&gt;
&lt;br /&gt;
もう1つの機能は、&#039;&#039;キーボードマクロ&#039;&#039; です。キーボードマクロは、一連のコマンドを格納します。それによって後で簡単に繰り返すことができます。これらの変化を、ここでステップバイステップで実施してみます。&lt;br /&gt;
&lt;br /&gt;
文字集合を含むバッファから始めます。&lt;br /&gt;
 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&lt;br /&gt;
&lt;br /&gt;
&#039;number-to-register&#039; コマンド（&#039;&#039;&#039;C-x r n&#039;&#039;&#039;）を呼び出してレジスタを準備します。それから数字 &#039;0&#039; をレジスタ &#039;k&#039; に保存します。&lt;br /&gt;
&lt;br /&gt;
 C-x r n k&lt;br /&gt;
&lt;br /&gt;
バッファの先頭にポイントを移動させ、キーボードマクロ（&#039;&#039;&#039;C-x (&#039;&#039;&#039;）を実行開始し、文字のフォーマットを始めます。&lt;br /&gt;
&lt;br /&gt;
 C-x ( C-f M-4 .&lt;br /&gt;
&lt;br /&gt;
レジスタ &#039;k&#039; に挿入 (&#039;&#039;&#039;C-x r i&#039;&#039;&#039;) とインクリメント (&#039;&#039;&#039;C-x r +&#039;&#039;&#039;) を行います。前置引数 (&#039;&#039;&#039;C-u&#039;&#039;&#039;) によって、テキストを挿入した後でポイント位置を離します。&lt;br /&gt;
&lt;br /&gt;
 C-u C-x r i k C-x r + k&lt;br /&gt;
&lt;br /&gt;
改行を入れることでフォーマットを完了させます。残りの文字に対しては、Emacs はキーボードマクロを定義したポイント位置から始まるこのプロセスを繰り返すことができます。&#039;&#039;&#039;C-x e&#039;&#039;&#039; はキーボードマクロを完了して呼び出します。前置引数 &#039;&#039;&#039;M-0&#039;&#039;&#039; によって、エラーが起きるまでマクロを繰り返します。この場合、バッファの最後に到着すると中断します。&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;RET&amp;gt; M-0 C-x e&lt;br /&gt;
&lt;br /&gt;
結果は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
  A....0&lt;br /&gt;
  B....1&lt;br /&gt;
  C....2&lt;br /&gt;
  [...]&lt;br /&gt;
  x....49&lt;br /&gt;
  y....50&lt;br /&gt;
  z....51&lt;br /&gt;
&lt;br /&gt;
もし、後々使うためにマクロを保存したいなら、名前をつけて設定ファイルに保存する必要があります。&lt;br /&gt;
 name-last-kbd-macro &lt;br /&gt;
 insert-kbd-macro&lt;br /&gt;
&lt;br /&gt;
定義したマクロは、すべてマクロリングに格納されます。マクロを巡回するには、&lt;br /&gt;
 &#039;&#039;&#039;C-x C-k C-n&#039;&#039;&#039;  次のマクロ&lt;br /&gt;
 &#039;&#039;&#039;C-x C-k C-p&#039;&#039;&#039;  前のマクロ&lt;br /&gt;
&lt;br /&gt;
同様に、仮想的に何でも保存するためにレジスタを使えます。&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-x r SPC&#039;&#039;&#039; 現在のポイント（位置）をレジスタにコピーする&lt;br /&gt;
 &#039;&#039;&#039;C-x r w&#039;&#039;&#039;   現在のウィンドウ設定をレジスタにコピーする&lt;br /&gt;
 &#039;&#039;&#039;C-x r j&#039;&#039;&#039;   レジスタに再保存する。&lt;br /&gt;
 &lt;br /&gt;
しばしば異なるプロジェクトごとにウィンドウを行ったり来たりして作業をするなら、別のプロジェクトのために設定を保存し、ある画角から別の画角へ簡単に切り替えることができます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;list-registers&#039;&#039;&#039; コマンドによって、使用したレジスタをリストにして表示することができます。&lt;br /&gt;
&lt;br /&gt;
=== 正規表現 ===&lt;br /&gt;
&lt;br /&gt;
Emacs Manual より: &amp;quot;正規表現 (&#039;&#039;regexp&#039;&#039; と略す) とは、一致する可能性がある一連の (無限個でもよい) 文字列を表現するパターンである&amp;quot;。このセクションでは正規表現自体には深くは立ち入りません (単純に説明しきれない)。そのかわり正規表現のパワーを簡単にデモンストレーションします。詳しい説明は Emacs Manual の [https://www.gnu.org/software/emacs/manual/html_node/elisp/Regular-Expressions.html#Regular-Expressions Regular Expressions] セクションを見て下さい。&lt;br /&gt;
&lt;br /&gt;
上と同じシナリオが与えられた場合、つまり複数文字のリストがあり、そのリスト内に複数文字の相対位置を持つリストを考えます。(参照 [[#キーボードマクロとレジスタ|キーボードマクロとレジスタ]]) 再度、以下を含むバッファから開始します。&lt;br /&gt;
&lt;br /&gt;
 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&lt;br /&gt;
&lt;br /&gt;
バッファの最初に &#039;&#039;&#039;C-M-%&#039;&#039;&#039; を使用します。（もしキー列が実行するには難しいなら、&#039;&#039;&#039;M-x query-replace-regexp&#039;&#039;&#039; を使う方がより快適かもしれません。）プロンプトには以下を入力します：&lt;br /&gt;
 \(.\)&lt;br /&gt;
これは、単に1文字にマッチします。それから置換先のプロンプトには：&lt;br /&gt;
 \1....\#^J&lt;br /&gt;
{{Note|&#039;^J&#039; は、改行を配置することを意味します。改行は、プロンプト内で入力できません。改行記号は、その他に &#039;&#039;&#039;C-q C-j&#039;&#039;&#039; を使って入力することもできます。}}&lt;br /&gt;
置換先の表現は、以下のように読みます： &amp;quot;最初のカッコに囲まれた部分にマッチするテキストを挿入しなさい (今回は1文字)。次にピリオドを4文字挿入し、それから自動的にインクリメントされた数を挿入し、改行が続きます。&amp;quot;&lt;br /&gt;
&lt;br /&gt;
最後に、&#039;&#039;&#039;!&#039;&#039;&#039; を押すことで、バッファ全体に渡って適用します。前のセクションで実行したすべてのフォーマットが、1つの正規表現置換で実行できます。&lt;br /&gt;
&lt;br /&gt;
=== 矩形選択 ===&lt;br /&gt;
&lt;br /&gt;
先進的なテキストエディタが当然備えているべき強力な機能として、テキストを矩形で選択・編集できるというのがあるでしょう。&lt;br /&gt;
&lt;br /&gt;
Emacs でも矩形選択は可能です。&#039;&#039;&#039;C-SPC&#039;&#039;&#039; で普通にテキストを選択してから、複数の矩形コマンドを使うことができます。&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-x r t&#039;&#039;&#039;  矩形領域にテキストを挿入する&lt;br /&gt;
 &#039;&#039;&#039;C-x r k&#039;&#039;&#039;  矩形領域を kill する (kill-ring に保存する)&lt;br /&gt;
 &#039;&#039;&#039;C-x r y&#039;&#039;&#039;  矩形領域を Yank する&lt;br /&gt;
 &#039;&#039;&#039;C-x r o&#039;&#039;&#039;  矩形領域にスペースを挿入する&lt;br /&gt;
&lt;br /&gt;
たとえ矩形の外のテキストがハイライトされていても、上記のコマンドが影響を与えることはありません。&lt;br /&gt;
&lt;br /&gt;
=== ブックマーク ===&lt;br /&gt;
&lt;br /&gt;
Emacs は開いたファイルのリストを保存できます。&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-x r m&#039;&#039;&#039; カレントバッファをブックマークに追加。&lt;br /&gt;
 &#039;&#039;&#039;C-x r b&#039;&#039;&#039; ブックマークからバッファを開く。&lt;br /&gt;
 &#039;&#039;&#039;C-x r l&#039;&#039;&#039; ブックマークの確認。&lt;br /&gt;
&lt;br /&gt;
=== Elisp インタプリタ ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;eval-last-sexp&#039;&#039;&#039; (&#039;&#039;&#039;C-x C-e&#039;&#039;&#039;) を使うことで、elisp 式を評価することができます。Emacs は、開始時に常に &#039;&#039;&#039;*scratch*&#039;&#039;&#039; バッファを生成します。*scratch* バッファはディスクに保存されず、自由にテキストやコードを記述することができます。これは特にelispの評価に有用です。このバッファは、デフォルトで &#039;&#039;&#039;lisp-interaction-mode&#039;&#039;&#039; 有効で開始することに注意してください。&lt;br /&gt;
&lt;br /&gt;
その他に、Emacs は、&#039;&#039;&#039;ielm&#039;&#039;&#039; コマンドでトップレベルの elisp インタプリタを提供します。&lt;br /&gt;
&lt;br /&gt;
=== スマートなウィンドウ切り替え ===&lt;br /&gt;
&lt;br /&gt;
長い間使っていると &#039;&#039;&#039;C-x o&#039;&#039;&#039; による伝統的なウィンドウ切り替えは面倒かもしれません。&#039;&#039;&#039;windmove&#039;&#039;&#039; コマンドはもっと便利にウィンドウを切り替えることができます。{{ic|Shift}} を押しながら方向キーでウィンドウを指定するだけです。&lt;br /&gt;
&lt;br /&gt;
windmove キーを有効にするには、設定ファイルに以下を記述してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.emacs|&lt;br /&gt;
(when (fboundp &#039;windmove-default-keybindings)&lt;br /&gt;
  (windmove-default-keybindings))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== シェルコマンドの実行 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-!&#039;&#039;&#039; を使うことで、外部コマンドを呼び出すことができます。前置引数を使用する（&#039;&#039;&#039;C-u M-!&#039;&#039;&#039;）ことで、結果を現在のバッファのポイント位置に出力することができます。&lt;br /&gt;
&lt;br /&gt;
リージョン上で &#039;&#039;&#039;M-|&#039;&#039;&#039; を使うことで、リージョンをコマンドの入力として使うことができます。たとえば、&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-u M-| sort -u RET&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
によって、リージョンがソートされ、重複を除去して、リージョンをその結果で置き換えることができます。&lt;br /&gt;
&lt;br /&gt;
=== シェルバッファ ===&lt;br /&gt;
&lt;br /&gt;
シェルバッファを生成することで、ターミナルと同様にコマンドを実行することができます。&lt;br /&gt;
昔ながらのシェルバッファは、&#039;&#039;&#039;shell&#039;&#039;&#039; コマンドによって生成することができます。&lt;br /&gt;
&lt;br /&gt;
Emacs は、すべて Emacs Lisp で書かれた非常に強力なシェル &#039;&#039;&#039;eshell&#039;&#039;&#039; を機能として持っています。csh や zshといったシェルに対する主な優位点は、ネイティブなシェル言語が elisp そのものである点です。そのため、シェル関数として elisp のすべての先進的な機能を使用できます。&lt;br /&gt;
&lt;br /&gt;
=== 対応する括弧のハイライト ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;show-paren&#039;&#039;&#039; モードを使うことができます。デフォルトでは、対応する括弧が表示されるまで少し遅延がありますが、&#039;&#039;&#039;show-paren-delay&#039;&#039;&#039; を 0 に設定することでなくすことができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.emacs|&lt;br /&gt;
(setq show-paren-delay 0)&lt;br /&gt;
(show-paren-mode 1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== スペルチェック ===&lt;br /&gt;
&lt;br /&gt;
辞書を選択するには:&lt;br /&gt;
 &#039;&#039;&#039;M-x ispell-change-dictionary&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
一単語をチェックするには &#039;&#039;&#039;M-$&#039;&#039;&#039; を使います。&lt;br /&gt;
バッファ全体をチェックするには、&lt;br /&gt;
 &#039;&#039;&#039;M-x ispell-buffer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;flyspell-mode&#039;&#039;&#039; を有効にすることで、入力と同時に (on-the-fly) スペルチェックができます。ソースコードに対しては、代わりに &#039;&#039;&#039;flyspell-prog-mode&#039;&#039;&#039; を使うことで、コメントに限定して有効にできます。Emacs でスペルチェックをするには &#039;&#039;aspell&#039;&#039; パッケージも必要になります。それぞれの言語に対応したパッケージがあります。英語に対しては、（&#039;&#039;aspell&#039;&#039; と共に）&#039;&#039;aspell-en&#039;&#039; が必要になります。&lt;br /&gt;
&lt;br /&gt;
=== テーブル ===&lt;br /&gt;
&lt;br /&gt;
Emacs は、様々な言語での一般的なテーブルを扱う居力な機能を備えています。例を見てみましょう。&lt;br /&gt;
&lt;br /&gt;
 Fruits  Quantity&lt;br /&gt;
 Apples  5&lt;br /&gt;
 Melons  2&lt;br /&gt;
&lt;br /&gt;
この内容をリージョンで選択して、以下を実行します。&lt;br /&gt;
 table-capture&lt;br /&gt;
&lt;br /&gt;
半角スペース2文字を列の区切りとして、改行 (&#039;&#039;&#039;C-q C-j&#039;&#039;&#039;) を行の区切りとして使用します。&lt;br /&gt;
以下の結果を得ます。&lt;br /&gt;
&lt;br /&gt;
 +------+--------+&lt;br /&gt;
 |Fruits|Quantity|&lt;br /&gt;
 +------+--------+&lt;br /&gt;
 |Apples|5       |&lt;br /&gt;
 +------+--------+&lt;br /&gt;
 |Melons|2       |&lt;br /&gt;
 +------+--------+&lt;br /&gt;
&lt;br /&gt;
以下の操作で元に戻せます。&lt;br /&gt;
 table-release&lt;br /&gt;
&#039;&#039;table-insert-row&#039;&#039;, &#039;&#039;table-span-cell&#039;&#039;, &#039;&#039;table-widen-cell&#039;&#039;　といったような、たくさんの便利な &#039;&#039;table-*&#039;&#039; 関数があります。&lt;br /&gt;
&lt;br /&gt;
最後に、&#039;&#039;table&#039;&#039; 関数の究極の目的は、指定されたマークアップ言語に変換することです。&lt;br /&gt;
それには、&#039;&#039;table-generate-source&#039;&#039; が使われます。&lt;br /&gt;
LaTeX に対しては、前のテーブルは、以下の結果となります。&lt;br /&gt;
&lt;br /&gt;
 % This LaTeX table template is generated by emacs 24.2.1&lt;br /&gt;
 \begin{tabular}{|l|l|}&lt;br /&gt;
 \hline&lt;br /&gt;
 Fruits &amp;amp; Quantity \\&lt;br /&gt;
 \hline&lt;br /&gt;
 Apples &amp;amp; 5 \\&lt;br /&gt;
 \hline&lt;br /&gt;
 Melons &amp;amp; 2 \\&lt;br /&gt;
 \hline&lt;br /&gt;
 \end{tabular}&lt;br /&gt;
&lt;br /&gt;
table mode を使用することで、行ごとおよび列ごとの和といった、スプレッドシートの作業を行うこともできます。しかし、すぐに機能が限定的であると分かるでしょう。その上、非常に遅いです。より多くの強力な可能性については、[[#予定表、スプレッドシート、文章作成|org-mode]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== 予定表、スプレッドシート、文章作成 ===&lt;br /&gt;
&lt;br /&gt;
有名でパワフルな [http://orgmode.org/ Org mode] のおかげで、Emacs はパワフルなオフィス系機能をおすすめできます。このモードは、標準の Emacs ディストリビューションに含まれます。&lt;br /&gt;
&lt;br /&gt;
Org mode は元々強力な TODO およびアジェンダのエージェントですが、すぐにはるかに幅広い機能セットに進化しました。 &lt;br /&gt;
Org mode は単純に機能が多すぎて、すべての機能をざっと見ることすらできません。そのため、私たちはいくつかの例であなたの欲求を刺激するに留めます。&lt;br /&gt;
&lt;br /&gt;
TODO.org ファイルを新規ファイルとして開きます。Org mode がロードされるはずです。もしロードされなければ、&#039;&#039;&#039;M-x org-mode&#039;&#039;&#039; によって有効にできます。&lt;br /&gt;
{{hc|TODO.org|&lt;br /&gt;
* First entry&lt;br /&gt;
** Subentry&lt;br /&gt;
   Some comments&lt;br /&gt;
*** Subsubentry&lt;br /&gt;
* Second entry&lt;br /&gt;
  - List item 1&lt;br /&gt;
  - List item 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ここで、いくつかの有用なキーバインドは以下となります：&lt;br /&gt;
* &#039;&#039;&#039;TAB&#039;&#039;&#039; 現在のエントリーの折りたたみ・展開を切り替えます。&lt;br /&gt;
* &#039;&#039;&#039;S-TAB&#039;&#039;&#039; すべてのエントリーの折りたたみ・展開を切り替えます。&lt;br /&gt;
* &#039;&#039;&#039;M-RET&#039;&#039;&#039; 現在の項目と同じレベルに新しい項目を開始します。&lt;br /&gt;
* &#039;&#039;&#039;M-&amp;lt;left&amp;gt;&#039;&#039;&#039; および &#039;&#039;&#039;M-&amp;lt;right&amp;gt;&#039;&#039;&#039; レベルを変更します。&lt;br /&gt;
* &#039;&#039;&#039;M-&amp;lt;up&amp;gt;&#039;&#039;&#039; およｂ &#039;&#039;&#039;M-&amp;lt;down&amp;gt;&#039;&#039;&#039; すべてのサブセクションを含めて項目を移動します。&lt;br /&gt;
* &#039;&#039;&#039;S-&amp;lt;left&amp;gt;&#039;&#039;&#039; および &#039;&#039;&#039;S-&amp;lt;right&amp;gt;&#039;&#039;&#039; ステータスを変化させます。リストアイテムでは、項目のスタイルを変更します。&lt;br /&gt;
* &#039;&#039;&#039;S-&amp;lt;up&amp;gt;&#039;&#039;&#039; および &#039;&#039;&#039;S-&amp;lt;down&amp;gt;&#039;&#039;&#039; 優先度を変更します。&lt;br /&gt;
* &#039;&#039;&#039;C-c ^&#039;&#039;&#039; 現在のエントリーのすべてのサブエントリーをソートします。&lt;br /&gt;
* &#039;&#039;&#039;C-c .&#039;&#039;&#039; 現在のエントリーにタイムスタンプを追加します。{{ic|Shift}} と矢印を使って、数日や数週をスキップできます。カレンダーでマウスを使ったり、特定の日で {{ic|Enter}} を押したりして、それらを選択できます。&lt;br /&gt;
&lt;br /&gt;
スプレッドシート機能は、非常に包括的です。マニュアルから抜粋してみましょう：&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
	最後に、素晴らしい `calc.el &#039;パッケージでできることについて欲求を&lt;br /&gt;
 刺激するために、いくつかの関数に対する位置 `x&#039; で次数 `n&#039;のテイラー級数を&lt;br /&gt;
 計算する表を示します。 &lt;br /&gt;
&lt;br /&gt;
     |---+-------------+---+-----+--------------------------------------|&lt;br /&gt;
     |   | 関数        | n | x   | 結果                                  |&lt;br /&gt;
     |---+-------------+---+-----+--------------------------------------|&lt;br /&gt;
     | # | exp(x)      | 1 | x   | 1 + x                                |&lt;br /&gt;
     | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |&lt;br /&gt;
     | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |&lt;br /&gt;
     | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |&lt;br /&gt;
     | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |&lt;br /&gt;
     | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |&lt;br /&gt;
     |---+-------------+---+-----+--------------------------------------|&lt;br /&gt;
     #+TBLFM: $5=taylor($2,$4,$3);n3&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Org mode は、行においてパイプ &#039;&#039;&#039;|&#039;&#039;&#039; がホワイトスペース以外の最初の文字のとき、テーブルと認識します。前のテキストでは、線を描きませんでした。セル内の内容、または &#039;&#039;&#039;|-&#039;&#039;&#039; のあとに &#039;&#039;&#039;TAB&#039;&#039;&#039; が押されたとき、線が自動的に描かれています。結果列も手動では記述しておらず、最後の行の calc 式から計算されています。&#039;&#039;&#039;C-u C-c C-c&#039;&#039;&#039; を使うことで、テーブル内のすべての値を再計算することができます。&lt;br /&gt;
&lt;br /&gt;
TODO ファイルと同様に、行と列を操作するキーバインディングがあります。{{ic|Alt}} + 矢印キーで、列と行を移動することができます。&lt;br /&gt;
&lt;br /&gt;
より深く詳細を知るには、公式マニュアルを参照してください: &#039;&#039;&#039;C-h i m Org mode RET&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
=== リファクタリングとスマート補完 ===&lt;br /&gt;
&lt;br /&gt;
(Eclipse などの) IDE が大抵備えているプログラミング機能が必要な場合、[http://cedet.sourceforge.net/semantic.shtml Semantic] ツールが役に立ちます。Semantic は Emacs の標準ディストリビューションに含まれています。現在 C, C++, Scheme, Javascript, Java, HTML, Make がサポートされています。現在のサポート状況は [http://cedet.sourceforge.net/languagesupport.shtml CEDET のページ] で確認できます。&lt;br /&gt;
&lt;br /&gt;
Semantic がサポートする好みのプログラミング言語で書かれたファイルを開きます。そして Semantic マイナーモードを起動します。&lt;br /&gt;
 M-x semantic-mode&lt;br /&gt;
&lt;br /&gt;
Semantic は、あなたのファイルに含まれるライブラリ (たとえば C では、ほとんどの場合、標準ライブラリ) を2,3秒パースします。&lt;br /&gt;
&lt;br /&gt;
==== 機能 ====&lt;br /&gt;
&lt;br /&gt;
一旦完了すると、素晴らしい Semantic の機能が使えます。&lt;br /&gt;
;スマート補完&lt;br /&gt;
&#039;&#039;&#039;C-c , SPC&#039;&#039;&#039; を押すことで、ポイントにあるシンボルを補完することができます。それが引数の場合、型が正しいかチェックされます。&lt;br /&gt;
&lt;br /&gt;
;シンボルにジャンプする&lt;br /&gt;
&#039;&#039;&#039;C-c , j&#039;&#039;&#039; を押すことでシンボルを入力するプロンプトを表示し、その定義元にジャンプします。&#039;&#039;&#039;TAB&#039;&#039;&#039; で自動補完ができます。文字 &#039;&#039;&#039;J&#039;&#039;&#039; を押すと、シンボルを複数ファイルに渡って探索します。&lt;br /&gt;
&lt;br /&gt;
;シンボルの呼び出しをリスト表示する&lt;br /&gt;
&#039;&#039;&#039;C-c , g&#039;&#039;&#039; を押すことでシンボルを入力するプロンプトを表示し、参照されている場所のリストを表示します。&#039;&#039;&#039;n&#039;&#039;&#039; と &#039;&#039;&#039;p&#039;&#039;&#039; を押すことで結果表示を巡回できます。&#039;&#039;&#039;RET&#039;&#039;&#039; を押すことで詳細をトグルし、参照箇所で再度 &#039;&#039;&#039;RET&#039;&#039;&#039; を押すことで参照元にジャンプします。&#039;&#039;&#039;G&#039;&#039;&#039; を押すことで、入力したシンボルの場所を複数ファイルに対してリスト表示します。&lt;br /&gt;
&lt;br /&gt;
;リファクタリング&lt;br /&gt;
最初に前述のコマンドでリファクタリングしたいシンボルの使用先をリスト化します。&#039;&#039;&#039;(&#039;&#039;&#039; を押すと、シンボルに対するマクロ定義を開始します。これは実際、リファクタリングに比べてより非常に強力です。なぜなら、シンボルに任意の関数を適用したり、周囲のシンボルに作用することさえしたりできます。&#039;&#039;&#039;C-x )&#039;&#039;&#039; を押すことで、マクロ定義を終了し、&#039;&#039;&#039;E&#039;&#039;&#039; キーにて実行します。&lt;br /&gt;
&lt;br /&gt;
;シンボルの説明&lt;br /&gt;
以下の関数を呼び出すことで、シンボルの詳細を表示します。&lt;br /&gt;
 semantic-ia-show-summary&lt;br /&gt;
これは複雑なデータ構造とプロトタイプに対して非常に有用です 。デフォルトではキーバインドがありません。&lt;br /&gt;
&lt;br /&gt;
==== 設定 ====&lt;br /&gt;
&lt;br /&gt;
以下に、サポートされているすべてのプログラミング言語で Semantic を使用するためのサンプル設定を示します。キーバインディングのと表示設定の例です。 &lt;br /&gt;
&lt;br /&gt;
 ;; ghost 表示での Semantic (M-n と M-p で完了をブラウズできます)&lt;br /&gt;
 (semantic-mode 1)&lt;br /&gt;
 (define-key my-keys-minor-mode-map (kbd &amp;quot;C-c , d&amp;quot;) &#039;semantic-ia-show-summary)&lt;br /&gt;
 (setq semantic-complete-inline-analyzer-displayor-class &#039;semantic-displayor-ghost)&lt;br /&gt;
&lt;br /&gt;
特定の言語に対して特化した設定を追加することもできます。ここでは C のために：&lt;br /&gt;
 (add-hook&lt;br /&gt;
  &#039;c-mode-hook&lt;br /&gt;
  (lambda ()&lt;br /&gt;
    (local-set-key (kbd &amp;quot;M-TAB&amp;quot;) &#039;semantic-complete-analyze-inline)&lt;br /&gt;
    (local-set-key &amp;quot;.&amp;quot; &#039;semantic-complete-self-insert)&lt;br /&gt;
    (local-set-key &amp;quot;&amp;gt;&amp;quot; &#039;semantic-complete-self-insert)))&lt;br /&gt;
&lt;br /&gt;
==== 文献 ====&lt;br /&gt;
&lt;br /&gt;
Emacs から直接 info マニュアルにアクセスすることが可能です: &#039;&#039;&#039;C-h i m Semantic RET&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
=== Emacs を git のマージツールとして使う ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、git はマージツールとして Emacs の Emerge モードをサポートしています。しかしながら、Ediff モードの方をより好むかもしれません。不幸にも、このモードは技術的な理由により git によってサポートされていません。Ediff モードを使用する方法はまだあります。emacs call 上で以下の elisp コードを評価します。&lt;br /&gt;
&lt;br /&gt;
{{hc|.gitconfig|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[mergetool.ediff]&lt;br /&gt;
    cmd = emacs --eval \&amp;quot; (progn (defun ediff-write-merge-buffer () (let ((file ediff-merge-store-file)) (set-buffer ediff-buffer-C) (write-region (point-min) (point-max) file) (message \\\&amp;quot;Merge buffer saved in: %s\\\&amp;quot; file) (set-buffer-modified-p nil) (sit-for 1))) (setq ediff-quit-hook &#039;kill-emacs ediff-quit-merge-hook &#039;ediff-write-merge-buffer) (ediff-merge-files-with-ancestor \\\&amp;quot;$LOCAL\\\&amp;quot; \\\&amp;quot;$REMOTE\\\&amp;quot; \\\&amp;quot;$BASE\\\&amp;quot; nil \\\&amp;quot;$MERGED\\\&amp;quot;))\&amp;quot; &lt;br /&gt;
&lt;br /&gt;
[merge]&lt;br /&gt;
	tool = ediff&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
コマンドは1行で書かれなければならない点に注意してください。&lt;br /&gt;
上の例では、Emacs を新たに起動します。より早く起動するために emacsclient を使いたいかもしれませんが、推奨されていません。なぜなら Ediff 呼び出しは実際にはクリーンではないためで、現在の Emacs セッションを混乱させる可能性があります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;-q&#039;&#039;&#039; オプションを使用して、即席で起動することができます。設定の一部を残したまま Emacs を素早く起動するには、Emacs を以下のように呼び出します。&lt;br /&gt;
  emacs -q -l ~/.emacs-light&lt;br /&gt;
ここで、Ediff のために必要なことのみを記した軽量な設定ファイルがロードされます。&lt;br /&gt;
&lt;br /&gt;
このトリックおよび Ediff の問題点についての詳細は、[http://kerneltrap.org/mailarchive/git/2007/7/1/250424 kerneltrap.org] および [https://stackoverflow.com/questions/1817370/using-ediff-as-git-mergetool stackoverflow] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Caps Lock キーを Control キーとして使う ===&lt;br /&gt;
いわゆる &#039;emacs 小指&#039; にならないようにこちらの挙動を好むユーザーもいます。X で試用してみたいときは、次を実行:&lt;br /&gt;
 $ setxkbmap -option &#039;ctrl:nocaps&#039;&lt;br /&gt;
&lt;br /&gt;
また、キーを&#039;&#039;&#039;交換&#039;&#039;&#039;するには、次を実行:&lt;br /&gt;
 $ setxkbmap -option &#039;ctrl:swapcaps&#039;&lt;br /&gt;
&lt;br /&gt;
永続的に設定したくなったら、{{ic|.xinitrc}} ファイルに上のコマンドを追加してください。&lt;br /&gt;
&lt;br /&gt;
リージョンを小文字から大文字にする必要がある場合は、デフォルトの {{ic|C-x C-u}} キーバインディングを使って下さい、{{ic|upcase-region}} 関数が呼び出されます。&lt;br /&gt;
&lt;br /&gt;
Caps Lock がない場合は、両方の &amp;quot;Shift&amp;quot; にマッピングしてください:&lt;br /&gt;
 $ setxkbmap -option &amp;quot;shift:both_capslock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
一部のデスクトップ環境にはキーボードのマッピングを変更するためのグラフィカルなツールが含まれています。例えば [[Plasma|Plasma 5]] ならシステム設定を開いて入力デバイスをクリックしてください。キーボードを選択して高度な設定タブから Caps Lock を Ctrl として使用するように設定できます。&lt;br /&gt;
&lt;br /&gt;
== パッケージ ==&lt;br /&gt;
&lt;br /&gt;
Emacs の機能はサードパーティ製のパッケージで拡張できます。公式にサポートされているパッケージマネージャとして {{ic|package.el}} が組み込まれていますが、Emacs のコミュニティメンバーによって書かれたパッケージマネージャが他にも存在します。{{ic|package.el}} は {{ic|package-archives}} 変数を使ってパッケージを検索します。デフォルトでは [https://elpa.gnu.org/ Emacs Lisp Package Archive (ELPA)] が含まれています。{{ic|M-x list-packages}} で Emacs が認識している全てのパッケージが列挙されたバッファが作成されます。マニュアル ({{ic|[https://www.gnu.org/software/emacs/manual/html_node/emacs/Packages.html (info &amp;quot;(emacs) Packages&amp;quot;)]}}) にはさらに詳しい情報が載っています。&lt;br /&gt;
&lt;br /&gt;
サードパーティ製のパッケージのアーカイブを追加することもできます。[https://melpa.org/ MELPA] が広く使われています。&lt;br /&gt;
&lt;br /&gt;
人気の拡張の多くは {{ic|[community]}} リポジトリのパッケージや [[AUR]] からインストールできます。大抵の場合、パッケージの名前の前に &#039;emacs-&#039; が付きますが (例: {{Pkg|emacs-lua-mode}})、常にそうなっているわけではありません (例: {{AUR|auctex}})。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Arch Linux の Wiki を編集している場合は [[Emacs Mediawiki]] パッケージが役に立ちます。}}&lt;br /&gt;
&lt;br /&gt;
パッケージによっては設定ファイルに変更を加えないと機能が有効にならない場合があります。例えば、{{AUR|auctex}} をインストールしたときは、設定ファイルに以下を追加:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
(load &amp;quot;auctex.el&amp;quot; nil t t)&lt;br /&gt;
(load &amp;quot;preview-latex.el&amp;quot; nil t t)}}&lt;br /&gt;
&lt;br /&gt;
パッケージのソースコードや README で有効化する方法が書かれているはずです。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== Emacs が &#039;Undefined color: &amp;quot;WINDOW_FOREGROUND&amp;quot;&#039; というエラーメッセージで起動しない ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mcpp}} パッケージまたは {{Pkg|gcc}} パッケージをインストールする必要があります。&#039;&#039;xrdb&#039;&#039; は [[X resources]] を前処理するために C のプリプロセッサ &#039;&#039;cpp&#039;&#039; を使用します。C のプリプロセッサがインストールされていない場合、&#039;&#039;xrdb&#039;&#039; は C のプリプロセッサを実行しないため WINDOW_FOREGROUND が16進数のカラーコードに展開されません。&lt;br /&gt;
&lt;br /&gt;
=== カラー出力の問題 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、Emacs シェルはカラー表示に使われるエスケープシーケンスをそのまま表示してしまいます。つまり、カラー出力がされるべきところに変な記号が表示されます。&lt;br /&gt;
&lt;br /&gt;
この問題を解決するには以下を {{ic|~/.emacs}} に記述してください:&lt;br /&gt;
 (add-hook &#039;shell-mode-hook &#039;ansi-color-for-comint-mode-on)&lt;br /&gt;
&lt;br /&gt;
=== X ウィンドウでの文字の表示問題 ===&lt;br /&gt;
&lt;br /&gt;
X ウィンドウで emacs を起動した時にメインウィンドウの文字が全て黒縁の白四角になってしまう場合 (対応するフォントがインストールされていない文字を表示したときと同じような記号)、{{Pkg|xorg-fonts-75dpi}} や {{Pkg|xorg-fonts-100dpi}} をインストールして X ウィンドウを再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== 起動が遅い ===&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[#systemd ユニットとして|systemd ユニットとして]] Emacs を起動する方法でも起動時間を短縮できます。}}&lt;br /&gt;
&lt;br /&gt;
しばしば起動時間が遅くなる原因は2つあります。&lt;br /&gt;
&lt;br /&gt;
どちらが原因なのか調べるために、次のコマンドで Emacs を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -q&lt;br /&gt;
&lt;br /&gt;
このコマンドでも Emacs の起動が遅い場合、[[#不適切なネットワーク設定|不適切なネットワーク設定]]を参照してください。そうでない場合は、ほぼ確実に .emacs に問題があります。&lt;br /&gt;
&lt;br /&gt;
* {{ic|/etc/hosts}} の設定が間違っていると、Emacs の起動が5秒以上遅くなることになります。詳しくはネットワーク設定ガイドの &#039;[[ネットワーク設定#ホストネームの設定|ホストネームの設定]]&#039; を見てください。&lt;br /&gt;
&lt;br /&gt;
* 原因を探るシンプルな方法は、{{ic|~/.emacs}} (または {{ic|~/.emacs.d/init.el}}) にて予想されるセクションをコメントアウト(例えば行頭に &#039;;&#039; を入力)し、変化するか確認するため Emacs を再度開始することです。&amp;quot;require&amp;quot; と &amp;quot;load&amp;quot; を使用することで、特に大きな拡張機能を使った時、起動が遅くなり得ることを心に留めてください。原則として、これらはターゲットが次のいずれかである場合にのみ使用する必要があります。Emacsが起動時に必要とするか、あるいは拡張機能を自動ロードする場合です。そうでなければ、&#039;autoload&#039; 関数を直接使用できます。 たとえば、&lt;br /&gt;
&lt;br /&gt;
 (require &#039;anything)&lt;br /&gt;
&lt;br /&gt;
の代わりに、以下が使えます。&lt;br /&gt;
&lt;br /&gt;
 (autoload &#039;anything &amp;quot;anything&amp;quot; &amp;quot;Select anything&amp;quot; t)&lt;br /&gt;
&lt;br /&gt;
=== Cannot open load file: ... ===&lt;br /&gt;
&lt;br /&gt;
このエラーに共通する主な原因は、&#039;load-path&#039; 変数に拡張機能が置かれているディレクトリのパスが含まれていないことです。解決するには、拡張機能のロードを試みる前に、適切なパスをリストへ追加します:&lt;br /&gt;
&lt;br /&gt;
  (add-to-list &#039;load-path &amp;quot;/path/to/directory/&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
拡張機能のためのパッケージを使用しようとして、かつ Emacs が &#039;/usr&#039; 以外のプレフィックスで設定されたとき、ロードパスを更新する必要があります。以下を {{ic|~/.emacs}} のパッケージによって提供される処理の前に配置します:&lt;br /&gt;
&lt;br /&gt;
  (add-to-list &#039;load-path &amp;quot;/usr/share/emacs/site-lisp&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
もし手動で Emacs をコンパイルしたら、デフォルトのプレフィックスは &#039;/usr/local&#039; であることを心に留めてください。&lt;br /&gt;
&lt;br /&gt;
=== デッドアクセントキーの問題: &#039;&amp;lt;dead-acute&amp;gt; is undefined&#039; ===&lt;br /&gt;
&lt;br /&gt;
このバグについて Google で検索すると、次のリンクが見つかります:&lt;br /&gt;
https://lists.gnu.org/archive/html/help-gnu-emacs/2009-05/msg00167.html&lt;br /&gt;
&lt;br /&gt;
問題の説明: Emacs の最近のバージョンでは、&lt;br /&gt;
アクセントキーを使用する通常の方法は、期待通りに動きません。&#039;fiancé&#039; のような単語をアクセントしようとすると上のメッセージが表示されます。&lt;br /&gt;
&lt;br /&gt;
解決するには、スタートアップファイル {{ic|~/.emacs}} の上部に以下の行を記述します。&lt;br /&gt;
&lt;br /&gt;
   (require &#039;iso-transl)&lt;br /&gt;
&lt;br /&gt;
さらに、これは不具合ではなく、新しい Emacs バージョンの機能です。メーリングリストでの本件に関するメッセージを読むと、以下であることが分かりました (https://lists.gnu.org/archive/html/help-gnu-emacs/2009-05/msg00179.html):&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;これは何も自動的にロードされないように見えます。なぜなら、iso-transl と iso-acc の間に選択があるからです。両方とも、C-x 8 あるいは ALt-&amp;lt;accent&amp;gt; プレフィックスでインプットメソッドを提供するように見えます。しかし、あなたとわたしがしたことは、アクセントのために、ただデッドキー（^, ´, `, ~, ¨）を押し、それからアクセントされる文字を &amp;quot;統合する&amp;quot; ため別のキーを押しただけです。そしてここでは Alt キーが押されていません！ドキュメントによると、これは8ビットエンコーディングに適しているように見えます。そのため UTF-8 では、かなり役立たないはずです。私は、これが紹介されたときにこの不具合を報告しました。しかし、このバグは機能として分類されたように見えます。。。多分これは、かなり役立たないけど、ただファイルが自動ロードされるためだけです。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== C-M-% やその他のバインディングが emacs nox で動作しない ===&lt;br /&gt;
&lt;br /&gt;
これはターミナルが Xorg よりも制限的であることが原因です。ただし、ターミナルによっては多くのバインディングを扱うことができることがあります。2つの解決法が考えられます:&lt;br /&gt;
* グラフィカルバージョンを使用する。&lt;br /&gt;
* サポートされているバインディングに変更する。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
{{hc|.emacs|&lt;br /&gt;
(global-set-key (kbd &amp;quot;C-M-y&amp;quot;) &#039;query-replace-regexp)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Emacs がフリーズする ===&lt;br /&gt;
&lt;br /&gt;
シングルスレッドであるがゆえに、Emacs は様々な操作でブロックします。フリーズが発生する状況は様々です。例えば、Emacs はあなたからの入力を待っているのかもしれません (例えばあるフレームでミニバッファを開いているのに他のフレームで作業しようとしている場合など)。あるいは、Emacs は完了するまで時間のかかるコードを実行中なのかもしれません。あるいはバグを踏んだという可能性もあります。Emacs プロセスを殺さずに Emacs のブロックを解除する方法は複数存在します。&lt;br /&gt;
&lt;br /&gt;
* {{ic|C-g}} を押してみる。Emacs が行っていることによっては、複数回押す必要があります。&lt;br /&gt;
* {{ic|ESC ESC ESC}} を押してみる。&lt;br /&gt;
* 他のターミナルで {{ic|killall -SIGUSR2 emacs}} を実行する。&lt;br /&gt;
&lt;br /&gt;
=== Emacs-nox の出力が汚い ===&lt;br /&gt;
&lt;br /&gt;
ターミナル上で動作している時、色、インデント、あるいは出力に関するものが狂ったように見えます。（多分？）Emacs がある点で特別な文字を送り、それが現在のターミナルと競合しているためのようです。&lt;br /&gt;
もしこれが起きた時、できることは {{ic|M-x redraw-display}} を実行することです。これにより、ターミナルの表示を再描画します。この問題が頻繁に起きるなら、たとえば&lt;br /&gt;
 (global-set-key (kbd &amp;quot;&amp;lt;f7&amp;gt;&amp;quot;) &#039;redraw-display)&lt;br /&gt;
といった記述を、.emacs ファイルに置くといった方法で、コマンドをキーに割り当てたいと思うかもしれません。&lt;br /&gt;
&lt;br /&gt;
グラフィカルバージョンの Emacs はこの問題が起きません。&lt;br /&gt;
&lt;br /&gt;
=== emacs ターミナルにおかしなエスケープ数字 (utf-8) が表示される ===&lt;br /&gt;
&lt;br /&gt;
{{ic|.bashrc}} または {{ic|.zshrc}} で以下の変数をエクスポートしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.bashrc|2=&lt;br /&gt;
export LANG=&amp;quot;en_US.UTF-8&amp;quot;&lt;br /&gt;
export LC_ALL=&amp;quot;en_US.UTF-8&amp;quot;&lt;br /&gt;
export TERM=xterm-256color&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
小文字の utf を使っていることがエラーの原因です (例: en_US.utf-8)。&lt;br /&gt;
&lt;br /&gt;
利用可能なロケールは {{ic|locale -a}} で確認できます。&lt;br /&gt;
&lt;br /&gt;
=== tmux で emacs を使っているときに Shift + 矢印キーが動作しない ===&lt;br /&gt;
&lt;br /&gt;
まず [[tmux]] の設定で xterm-keys を有効にしてください:&lt;br /&gt;
{{hc|.tmux.conf|&lt;br /&gt;
setw -g xterm-keys on&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
しかしながら、この設定は他のキーコンビネーションを破壊します。それを修正するために、以下を emacs の設定に記述します:&lt;br /&gt;
{{hc|~/.emacs|&lt;br /&gt;
(defadvice terminal-init-screen&lt;br /&gt;
  ;; `tmux&#039; と名付けることをアドバイスします。そして `terminal-init-screen&#039; が実行される前に実行します。&lt;br /&gt;
  (before tmux activate)&lt;br /&gt;
  ;; Docstring.  これはアドバイスを記述し、emacs 内部で有効になります;&lt;br /&gt;
  ;; たとえば、 C-h f terminal-init-screen RET を実行したときに表示されます。&lt;br /&gt;
  &amp;quot;Apply xterm keymap, allowing use of keys passed through tmux.&amp;quot;&lt;br /&gt;
  ;; これは elisp コードで、`terminal-init-screen&#039; より前に実行されます。&lt;br /&gt;
  (if (getenv &amp;quot;TMUX&amp;quot;)&lt;br /&gt;
    (let ((map (copy-keymap xterm-function-map)))&lt;br /&gt;
    (set-keymap-parent map (keymap-parent input-decode-map))&lt;br /&gt;
(set-keymap-parent input-decode-map map))))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://github.com/tmux/tmux/blob/master/FAQ#L242 tmux FAQ] を参照。&lt;br /&gt;
&lt;br /&gt;
=== KDE でウィンドウのリサイズがおかしい ===&lt;br /&gt;
KDE ユーザーには Emacs のウィンドウが正しくリサイズされないという現象がおこることがあります。リサイズした部分が透過されマウスでクリックしても下のウィンドウがクリックされます。この挙動を修正するには、KDE の GTK3 テーマを oxygen-gtk 以外のテーマに変更してください。例えば、{{Pkg|gtk3}} に含まれている Emacs テーマを使って下さい。&lt;br /&gt;
&lt;br /&gt;
KDE で Emacs を完全に最大化するには、タイトルバーの Emacs アイコンをクリックして、More Actions &amp;gt; Special Window Settings を選択してください。そして &amp;quot;Size &amp;amp; Position&amp;quot; タブで &amp;quot;Obey geometry restrictions&amp;quot; を選択して、ドロップダウンメニューで &amp;quot;Force&amp;quot; を選んで右のラジオボタンで &amp;quot;No&amp;quot; を選んで下さい。&lt;br /&gt;
&lt;br /&gt;
== 派生 ==&lt;br /&gt;
&lt;br /&gt;
Emacs の実装は多数存在します。おそらく GNU/Emacs が一番ポピュラーです。&lt;br /&gt;
&lt;br /&gt;
軽量な Emacs 互換のテキストエディタは Arch のリポジトリや [[AUR]] にあります。&lt;br /&gt;
&lt;br /&gt;
=== mg ===&lt;br /&gt;
&lt;br /&gt;
mg (旧名 MicroGnuEmacs) は C で書かれた軽量な Emacs の実装です。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mg}} パッケージから入手できますが、上流の [http://homepage.boetes.org/software/mg/ ページ] からソースをダウンロードすることも可能です。mg は UTF-8 をサポートしていません。&lt;br /&gt;
&lt;br /&gt;
=== zile ===&lt;br /&gt;
&lt;br /&gt;
公式ウェブ[https://www.gnu.org/software/zile/ ページ]によると &amp;quot;GNU Zile は軽量な Emacs クローンです。Zile は Zile Is Lossy Emacs の略となっています。Zile は出来る限り Emacs に近づくように書かれており、きっと全ての Emacs ユーザーの手に馴染むでしょう&amp;quot;。Zile は UTF-8 をサポートしていません。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|zile}} パッケージからインストールできます。&lt;br /&gt;
&lt;br /&gt;
最新の tarball は公式の GNU [http://ftp.sh.cvut.cz/MIRRORS/gnu/pub/gnu/zile/ ミラー] から落とせます。&lt;br /&gt;
&lt;br /&gt;
=== uemacs ===&lt;br /&gt;
&lt;br /&gt;
Linus Torvalds によるカスタム版 Micro-emacs。{{AUR|uemacs-git}} でインストール可能。&lt;br /&gt;
&lt;br /&gt;
最新 (2005) の tarball は [ftp://ftp.cs.helsinki.fi/pub/Software/Local/uEmacs-PK/ こちら] にあります。&lt;br /&gt;
&lt;br /&gt;
=== remacs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;remacs&#039;&#039;&#039; はコミュニティによる Emacs の Rust 移植です。{{AUR|remacs-git}} パッケージでインストールできます。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ GNU Emacs ホームページ]&lt;br /&gt;
* [https://www.gnu.org/software/emacs/manual/emacs.html GNU Emacs マニュアル]&lt;br /&gt;
* [http://www.emacswiki.org/cgi-bin/wiki/ Emacs Wiki]&lt;br /&gt;
* [http://wikemacs.org WikEmacs - 読みやすいが不完全な Emacs wiki]&lt;br /&gt;
* [http://www2.lib.uchicago.edu/keith/tcl-course/emacs-tutorial.html Emacs とそのショートカットの有用な紹介]&lt;br /&gt;
* [https://d0edfcdc0ccc1cd13cdab5eb986fb92e8660dbef.googledrive.com/host/0B6LMD0u8OhYYZEotN2QyR1hwR1k/ Emacs 教会 (Google ドライブ)]&lt;br /&gt;
* [https://www.gnu.org/software/emacs/refcards/pdf/refcard.pdf 公式リファレンスカード]&lt;br /&gt;
* [[EXWM]] - Emacs X Window Manager&lt;/div&gt;</summary>
		<author><name>がおびん</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Emacs&amp;diff=22612</id>
		<title>Emacs</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Emacs&amp;diff=22612"/>
		<updated>2021-11-30T13:37:23Z</updated>

		<summary type="html">&lt;p&gt;がおびん: /* ヒントとテクニック */ 英語の記述を日本語に翻訳した。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:テキストエディタ]]&lt;br /&gt;
[[Category:コンソールアプリケーション]]&lt;br /&gt;
[[Category:GNU]]&lt;br /&gt;
[[de:Emacs]]&lt;br /&gt;
[[en:Emacs]]&lt;br /&gt;
[[es:Emacs]]&lt;br /&gt;
[[fr:Emacs]]&lt;br /&gt;
[[sr:Emacs]]&lt;br /&gt;
[[zh-hans:Emacs]]&lt;br /&gt;
[[Wikipedia:ja:Emacs|Emacs]] は拡張性があり、カスタマイズ可能な、セルフドキュメント方式のリアルタイム表示エディタです。Emacs のコアには、多数の Emacs の内蔵機能や拡張を実装するのに使われている言語である、[[Wikipedia:ja:Emacs Lisp|Emacs Lisp]] のインタプリタが存在します。GNU Emacs 22 から GTK がデフォルトの X ツールキットとして使われていますが、CLI 環境でも負けず劣らずに機能します。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
Emacs には複数の種類があります (時々 &#039;&#039;emacsen&#039;&#039; と呼ばれます)。その中で最も一般的なのは [https://www.gnu.org/software/emacs/ GNU Emacs] です。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|emacs}} パッケージを[[インストール]]してください。いつもターミナルで作業をする場合は、GTK+ がいらない {{Pkg|emacs-nox}} の方が良いでしょう (サウンドなどの装飾的な機能もありません)。&lt;br /&gt;
ただしテキストバージョンにはいくつか欠点が存在します: サポートしている色やフォント処理の機能 (実行中にサイズを変更したり、単一の文章で複数のサイズを使うなど) が少なくなっています。その上、emacs-nox には Speedbar や GUD (デバッグ環境) などの高度な機能について制限があり、複雑なフェイスを使おうとするとやや遅くなります (&amp;quot;フェイス&amp;quot;とは Emacs におけるテキストの外観のことです)。&lt;br /&gt;
&lt;br /&gt;
== Emacs の実行 ==&lt;br /&gt;
&lt;br /&gt;
emacs を起動する前に、終了の方法を知っておきましょう (特にターミナルで実行する場合): {{ic|Ctrl+x}}{{ic|Ctrl+c}} キーシーケンスを使って下さい。&lt;br /&gt;
&lt;br /&gt;
Emacs を起動するには次を実行:&lt;br /&gt;
&lt;br /&gt;
 $ emacs&lt;br /&gt;
&lt;br /&gt;
また、コンソールから使うには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -nw&lt;br /&gt;
&lt;br /&gt;
(.emacs を使わずに) 高速でロードして CLI で編集するには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -Q -nw&lt;br /&gt;
&lt;br /&gt;
nox バージョンをインストールしている場合、&#039;emacs&#039; と &#039;emacs -nw&#039; は同じになります。&lt;br /&gt;
&lt;br /&gt;
ファイル名を指定することですぐにファイルを開くこともできます:&lt;br /&gt;
&lt;br /&gt;
 $ emacs filename.txt&lt;br /&gt;
&lt;br /&gt;
=== 色無し ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、Emacs はハイパーリンクが濃青で表示されるカラーテーマで起動します。Emacs をカラーテーマやスキームを使わずに起動するには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -nw --color=no&lt;br /&gt;
&lt;br /&gt;
このコマンドでは全てのテキストがターミナルの前景色だけで表示されます。通常は黒背景に白字か、白背景に黒字となります。&lt;br /&gt;
&lt;br /&gt;
=== デーモンとして ===&lt;br /&gt;
&lt;br /&gt;
毎回 {{ic|.emacs}} ファイルをロードするため Emacs を起動するときには時間が多少かかります。また、別のインスタンスから同じファイルにアクセスしたいと思うときもあるかもしれません。バージョン23から、Emacs はユーザーが接続できるデーモンとして起動することが可能になっています。Emacs をデーモンとして実行するには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs --daemon&lt;br /&gt;
&lt;br /&gt;
起動時にデーモンを実行してウィンドウをデーモンに接続すると良いでしょう。さらに、グラフィカル・コンソールクライアント&#039;&#039;両方を&#039;&#039;同意時にデーモンに接続して GUI を素早く起動することも可能です。&lt;br /&gt;
&lt;br /&gt;
デーモンに接続したいときは場合は次のコマンドを使って下さい (グラフィカル環境から実行したときはグラフィカルクライアントが、tty などのコンソールから実行したときはコンソールクライアントが起動します):&lt;br /&gt;
&lt;br /&gt;
 $ emacsclient&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境にいるときもコンソールクライアントを使いたい場合は次のコマンドを使って下さい:&lt;br /&gt;
&lt;br /&gt;
 $ emacsclient -t&lt;br /&gt;
&lt;br /&gt;
さらに、{{ic|-a &amp;quot;&amp;quot;}} パラメータを追加することもできます。&lt;br /&gt;
これで、最初にコマンドを実行したときは、デーモンとして emacs が起動します。バックグラウンドで動き続けるので後で呼び出した時に起動時間が早くなります (バッファも残り続けます)。&lt;br /&gt;
&lt;br /&gt;
ターミナルや他のプログラムからクライアントを起動した場合、呼び出すプログラムを使うことで Emacs クライアントを閉じなくてもクライアントを使い続けることができます。そのためには、 {{ic|-n}} ({{ic|--no-wait}}) パラメータを使ってクライアントを起動します:&lt;br /&gt;
 $ emacsclient -nc&lt;br /&gt;
&lt;br /&gt;
Mutt や Git などのプログラムは (コミットメッセージを読むための) エディタが終了するまで待機するため、{{ic|-n}} パラメータを使うことはできません。デフォルトエディタが設定されている場合、他のエディタを指定する必要があるかもしれません (例: {{ic|emacsclient -a &amp;quot;&amp;quot; -t}})。&lt;br /&gt;
&lt;br /&gt;
以下のシェル設定が利用できます:&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&lt;br /&gt;
alias emt=&#039;emacsclient -nc -a &amp;quot;&amp;quot;&#039;&lt;br /&gt;
alias emc=&#039;emacsclient -t -a &amp;quot;&amp;quot;&#039;&lt;br /&gt;
EDITOR=&#039;emacsclient -a &amp;quot;&amp;quot;&#039;&lt;br /&gt;
}}&lt;br /&gt;
ただしこれには注意事項があります: コマンドのスペースの関係で多数のプログラムが外部エディタをロードすることはできません。&lt;br /&gt;
&lt;br /&gt;
スクリプトを書くほうがもっと使い勝手が良く信頼性があります:&lt;br /&gt;
{{hc|/usr/local/bin/emc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
if [ -z &amp;quot;$DISPLAY&amp;quot; ]; then&lt;br /&gt;
    IS_GRAPHICAL=true&lt;br /&gt;
else&lt;br /&gt;
    IS_GRAPHICAL=$(emacs --batch -Q --eval=&#039;(if (fboundp &#039;&amp;quot;&#039;&amp;quot;&#039;tool-bar-mode) (message &amp;quot;true&amp;quot;) (message &amp;quot;false&amp;quot;))&#039; 2&amp;gt;&amp;amp;1)&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if $IS_GRAPHICAL; then&lt;br /&gt;
    emacsclient -a &amp;quot;&amp;quot; -nc &amp;quot;$@&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    emacsclient -a &amp;quot;&amp;quot; -t &amp;quot;$@&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
スクリプトは実行可能属性を付けて下さい:&lt;br /&gt;
 # chmod 755 /usr/local/bin/emc&lt;br /&gt;
&lt;br /&gt;
これで &#039;emc&#039; が期待通りに動作するようになります。このクライアントをデフォルトのエディタにしたいときは上記のスクリプトで {{ic|EDITOR}} 環境変数を設定すれば OK です。&lt;br /&gt;
&lt;br /&gt;
=== systemd ユニットとして ===&lt;br /&gt;
&lt;br /&gt;
Emacs 26.1 から systemd ユニットが含まれています。Emacs のインストール後に以下のように有効化してください:&lt;br /&gt;
&lt;br /&gt;
  $ systemctl --user enable --now emacs&lt;br /&gt;
&lt;br /&gt;
Emacs サーバーを実行したいユーザーで上記のコマンドを実行してください。サービスの起動後、Emacs の準備ができます。ユニットファイルは {{ic|/usr/lib/systemd/user/emacs.service}} に存在します。ユニットファイルの中身は以下のようになっています:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/lib/systemd/user/emacs.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Emacs text editor&lt;br /&gt;
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStart=/usr/bin/emacs --fg-daemon&lt;br /&gt;
ExecStop=/usr/bin/emacsclient --eval &amp;quot;(kill-emacs)&amp;quot;&lt;br /&gt;
Environment=SSH_AUTH_SOCK=%t/keyring/ssh&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
systemd のユーザーユニットはログインシェル ({{ic|~/.bash_profile}} など) から環境変数を継承しないため、{{ic|~/.pam_environment}} に変数を設定すると良いでしょう。詳しくは [[Systemd/ユーザー]]を参照。&lt;br /&gt;
&lt;br /&gt;
emacs をデーモンとして起動する場合、{{ic|VISUAL}} と {{ic|EDITOR}} 環境変数を {{ic|emacsclient}} に設定することでプログラムからエディタを起動するときにエディタの新しいインスタンスを起動するかわりに emacsclient が使われるようになります。外部エディタを使用するプログラムとしてメールプログラム (メッセージを編集するため) や Git (コミットメッセージを編集するため)、less ({{ic|v}} コマンドで表示されたファイルを編集するため) などが存在します。emacsclient の {{ic|-n}} ({{ic|--nowait}}) オプションは使用しないでください。基本的にプログラムはエディタが終了したときに編集が完了したと認識するためです。&lt;br /&gt;
&lt;br /&gt;
GUI の Emacs のスタートメニューエントリなども emacs ではなく emacsclient が使われるように変更することを推奨します。&lt;br /&gt;
&lt;br /&gt;
== クイックスタート ==&lt;br /&gt;
&lt;br /&gt;
Emacs は複雑ですが、そのカスタマイズと拡張性のレベルによってもたらされる利益を理解し始めるのにそう時間はかからないでしょう。さらに、幅広い拡張を利用することで Emacs はあらゆる種類の文章編集のための強力な環境に姿を変えることができます。&lt;br /&gt;
&lt;br /&gt;
Emacs には素晴らしいチュートリアルが内蔵されており、スプラッシュ画面の最初のリンクをクリックしてアクセスできます。メニューから &#039;&#039;Help-&amp;gt;Emacs Tutorial&#039;&#039; を選択するか &#039;F1&#039; の後に &#039;t&#039; を押して下さい。このページは Emacs を始めるのに追加的なリソースになるように書かれています。&lt;br /&gt;
&lt;br /&gt;
初心者にもエキスパートにも役立つ、リファレンスカードのセットも Emacs に含まれています、{{ic|/usr/share/emacs/&amp;lt;version&amp;gt;/etc/refcards/}} を見て下さい (&amp;lt;version&amp;gt; はあなたの emacs のバージョンに置き換えて下さい)。&lt;br /&gt;
&lt;br /&gt;
=== 基本的な用語と慣習 ===&lt;br /&gt;
&lt;br /&gt;
始めは慣れないと思うかもしれませんが Emacs にはいくつか特別な用語法と約束事があり、必要に応じて紹介していきます。ただ、Emacs を使うにあたって当然知ってるべきとされるような、基本的な用語についてはあらかじめ説明しておいたほうが良いでしょう。&lt;br /&gt;
&lt;br /&gt;
真っ先に知るべきは&#039;&#039;バッファ&#039;&#039;の概念です。バッファは Emacs の中のデータを表します。例えば、Emacs でファイルを開いたとき、ディスクからファイルから読み込まれてバッファに中身が保存され、バッファを編集して後でディスクに上書き保存することができます。バッファはテキストに限られず、画像やウィジェットなども含めます。作業中でもバッファでアプリケーションを表示することすらできます。こういう考え方もできます: ディスク上のデータは&#039;ファイル&#039;であり、一方、Emacs 上のデータは&#039;バッファ&#039;である。&lt;br /&gt;
&lt;br /&gt;
Emacs におけるキーシーケンスの決まり事も見慣れないかもしれません。即ち:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-x&#039;&#039;&#039; は Control-x を示します&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x&#039;&#039;&#039; は Meta-x を示します&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;Meta&#039; は多くの場合 Alt キーに相当します。また、Esc キーを使うことも可能です。}}&lt;br /&gt;
&lt;br /&gt;
例えば、Emacs を終了するには次のキーシーケンスを使います: &#039;&#039;&#039;C-x C-c&#039;&#039;&#039;。これは &amp;quot;Control を押しながら &#039;x&#039; を押す。手を離す。Control を押しながら &#039;c&#039; を押す&amp;quot; と読み替えることができます。Emacs にはメニューバーが存在しますが、キーシーケンスを使いこなせるように練習することを推奨します。以下から、Emacs で使われるキーバインディングと慣習について説明します。&lt;br /&gt;
&lt;br /&gt;
=== 移動 ===&lt;br /&gt;
&lt;br /&gt;
カーソルの移動は他のグラフィカルエディタとよく似ています。マウスや方向キーを使ってカーソルの位置 (Emacs では&#039;&#039;ポイント&#039;&#039;と呼ばれます) を変更することができます。一般的な移動コマンドは方向キーで出来ますが、Emacs には他にも便利なバインディングが存在します。1文字先に移動するには &#039;&#039;&#039;C-f&#039;&#039;&#039; を使用して、1文字前に移動するには &#039;&#039;&#039;C-b&#039;&#039;&#039; を使用します。&#039;&#039;&#039;C-n&#039;&#039;&#039; と &#039;&#039;&#039;C-p&#039;&#039;&#039; でそれぞれ次の行と前の行に移動できます。基本的に、マウスや方向キーを使うよりもこれらのキーシーケンスを使うことが推奨されています。&lt;br /&gt;
&lt;br /&gt;
当然、Emacs には、単語や文単位で移動できる、もっと高度な移動コマンドが用意されています。&#039;&#039;&#039;M-f&#039;&#039;&#039; は1単語先に移動して &#039;&#039;&#039;M-b&#039;&#039;&#039; は1単語前にポイント移動します。同じく、&#039;&#039;&#039;M-e&#039;&#039;&#039; は1文先にポイント移動して &#039;&#039;&#039;M-a&#039;&#039;&#039; は前に戻ります。&lt;br /&gt;
&lt;br /&gt;
ここまでは、紹介した全ての移動コマンドはポイントに関連しています。&#039;&#039;&#039;M-&amp;lt;&#039;&#039;&#039; を使うことでバッファの最初にポイントを移動することができ、逆に、&#039;&#039;&#039;M-&amp;gt;&#039;&#039;&#039; はバッファの最後に移動します。特定の行番号にポイントを移動するには、&#039;&#039;&#039;M-g g&#039;&#039;&#039; を使います。&#039;&#039;&#039;M-g g&#039;&#039;&#039; は移動したい行番号を尋ねます。また、現在の行の先頭と末尾に移動するには、&#039;&#039;&#039;C-a&#039;&#039;&#039; あるいは &#039;&#039;&#039;C-e&#039;&#039;&#039; を使って下さい。&lt;br /&gt;
&lt;br /&gt;
{{Note|上記のコマンドを含む全てのコマンドのキーバインドは、現在有効になっているモードによって&#039;&#039;多少&#039;&#039;ながら変わってくる可能性があります。しかしながら、同一の機能を実行するのにコマンドを置き換えることはあまりありません。詳しくは[[#モード|モード]]を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
=== ファイルとバッファ ===&lt;br /&gt;
&lt;br /&gt;
Emacs にはファイルを操作するためのコマンドが用意されています。このセクションでは最もよく使われるコマンドを紹介します。ファイルを開くには &#039;&#039;&#039;C-x C-f&#039;&#039;&#039; を使います (Emacs ではこのコマンドを &#039;find-file&#039; と呼びます)。指定されたファイルが存在しなかった場合、Emacs は空のバッファを開きます。バッファを保存するとバッファの中身が入ったファイルが作成されます。&#039;&#039;&#039;C-x C-s&#039;&#039;&#039; を使うことでバッファを保存できます。別のファイル名でバッファを保存するには、&#039;&#039;&#039;C-x C-w&#039;&#039;&#039; を使って下さい (this is a mnemonic for the command &#039;write-file&#039;)。新しいファイル名が尋ねられ、ディスクにファイルが書き込まれます。&#039;&#039;&#039;C-x s&#039;&#039;&#039; で全てのバッファを保存することも可能です。最後に保存されていた状態からバッファに変更が加えられている場合、保存を実行するかどうか訊くプロンプトが表示されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ファイルに対応するバッファが既に開かれている場合 &#039;&#039;&#039;C-x C-f&#039;&#039;&#039; はディスクからファイルを読み込みません。ディスクからファイルを再度読み込むには、(1) まずバッファを閉じて (&#039;&#039;&#039;C-x k&#039;&#039;&#039;)、それからファイルを開くか (&#039;&#039;&#039;C-x C-f&#039;&#039;&#039;) あるいは (2) &#039;&#039;&#039;M-x revert-buffer&#039;&#039;&#039; を使ってディスク上のデータに戻して下さい。それか (3) &#039;&#039;&#039;C-x C-v&#039;&#039;&#039; でファイルを現在のバッファにロードするか (4) &#039;&#039;&#039;C-x RET r RET&#039;&#039;&#039; で同一コードでファイルを再読み込みしてください。}}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;find-file&amp;quot; や &amp;quot;write-file&amp;quot; などのインタラクティブなコマンドでは Emacs ウィンドウの一番下の行に入力が求められます。この行のことは&#039;&#039;ミニバッファ&#039;&#039;と呼びます。ミニバッファでは基本的な編集コマンドを使うことができ、多くの *nix シェルで利用できるのと同じようなタブ補完機能があります。&#039;&#039;&#039;&amp;lt;TAB&amp;gt;&#039;&#039;&#039; を2回連続で押すと補完リストが表示され、マウスを使ってリストから補完候補を選択することも可能です。ミニバッファでの補完はコマンドやファイル名など様々な形で使えます。&lt;br /&gt;
&lt;br /&gt;
ミニバッファには履歴機能も存在します。前に入力したコマンドは &#039;&#039;&#039;Up Arrow&#039;&#039;&#039; または &#039;&#039;&#039;M-p&#039;&#039;&#039; を使うことで再呼び出しできます。&lt;br /&gt;
&lt;br /&gt;
ミニバッファは &#039;&#039;&#039;C-g&#039;&#039;&#039; を押すことでいつでも終了できます。&lt;br /&gt;
&lt;br /&gt;
ファイルを複数開いたら、ファイルを切り替える手段が必要です。Emacs 内に既に存在するバッファにファイルを開くと、Emacs はそのバッファに切り替えます。しかしながらこれは効率的とは言えません。Emacs には表示するバッファを選択する &#039;&#039;&#039;C-x b&#039;&#039;&#039; が存在します (タブ補完が使えます)。存在しないバッファの名前を入力すると、その名前で新しいバッファが作成されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|前のバッファに切り替えるには &#039;&#039;&#039;C-x b &amp;lt;RET&amp;gt;&#039;&#039;&#039; を使います。前のバッファがデフォルトだからです。}}&lt;br /&gt;
&lt;br /&gt;
全てのバッファのリストを &#039;&#039;&#039;C-x C-b&#039;&#039;&#039; で表示することができます。バッファが必要なくなったときは &#039;&#039;&#039;C-x k&#039;&#039;&#039; で削除することが可能です。&lt;br /&gt;
&lt;br /&gt;
=== 編集 ===&lt;br /&gt;
&lt;br /&gt;
Emacs には多数の編集コマンドが存在します。まだ紹介していない最も重要なコマンドはおそらく &#039;undo&#039; でしょう。&#039;&#039;&#039;C-_&#039;&#039;&#039; または &#039;&#039;&#039;C-/&#039;&#039;&#039; で実行することができます。基本的に移動コマンドには対応する削除コマンドが存在します。例えば &#039;&#039;&#039;M-&amp;lt;backspace&amp;gt;&#039;&#039;&#039; で後方の単語を削除することができ、{{ic|M-d}} で前方の単語を削除できます。行末または文章の終わりまで削除するにはそれぞれ {{ic|C-k}} または {{ic|M-k}} を使います。&lt;br /&gt;
&lt;br /&gt;
1行は80文字を超えていはいけないという経験則が存在します。1行の長さを長くしすぎないことで、特にウィンドウの縁で改行してしまうような場合に、可読性を維持することができます。改行の自動挿入 (または削除) は Emacs では詰め込み (&#039;&#039;filling&#039;&#039;) と呼ばれます。{{ic|M-q}} を使うことでパラグラフを折り返させることができます。&lt;br /&gt;
&lt;br /&gt;
文字列と単語はそれぞれ {{ic|C-t}} と {{ic|M-t}} で置き換えることが可能です。例えば {{ic|Hello World!}} を {{ic|World! Hello}} と置き換えられます。&lt;br /&gt;
&lt;br /&gt;
単語の大文字小文字はすぐに修正できます。{{ic|M-l}} は単語を小文字に変換し ({{ic|HELLO}} は {{ic|hello}})、{{ic|M-u}} は単語を大文字に変換します ({{ic|hello}} は {{ic|HELLO}})。そして {{ic|M-c}} は単語の最初の文字を大文字にして他の文字は小文字にします ({{ic|hElLo}} は {{ic|Hello}})。&lt;br /&gt;
&lt;br /&gt;
=== kill と yank とリージョン ===&lt;br /&gt;
&lt;br /&gt;
リージョンとは、2点間にあるテキストです。2点のうちの1つは、&#039;&#039;マーク&#039;&#039; と呼ばれ、もう1つはポイントです。 &#039;&#039;&#039;C-&amp;lt;SPC&amp;gt;&#039;&#039;&#039; によってマークの位置がセットされ、その後でポイントが移動することでリージョンが作られます。GNU Emacs 23.1 以降、リージョンはデフォルトで可視化されます。リージョン上で動作する多くのコマンドがあり、もっともよく使われるコマンドに &#039;&#039;killing&#039;&#039; コマンドがあります。&lt;br /&gt;
&lt;br /&gt;
Emacs では、カット＆ペーストはそれぞれ、&#039;&#039;kill&#039;&#039; と &#039;&#039;yank&#039;&#039; と呼ばれます。1文字以上の文字を削除するコマンド（ &#039;&#039;&#039;C-k&#039;&#039;&#039; や &#039;&#039;&#039;M-d&#039;&#039;&#039; といった上で記述したコマンドも含めて）は、実際にテキストをカットし、&#039;&#039;kill-ring&#039;&#039; として知られるものに追加します。kill-ring は、単に kill されたテキストのリストです。kill-ring は、デフォルトでは直近60個の kill されたテキストを保存します。kill に成功すると、リストの先頭に接続されて保存されます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-w&#039;&#039;&#039; と &#039;&#039;&#039;M-w&#039;&#039;&#039; によって、それぞれリージョンの kill とコピーができます。&lt;br /&gt;
&lt;br /&gt;
kill されたテキストをバッファに挿入する（&#039;yanking&#039; として知られます）ためには、&#039;&#039;&#039;C-y&#039;&#039;&#039; を使います。 &#039;&#039;&#039;C-y&#039;&#039;&#039; は、複数回使用することで、繰り返しテキストを yank できます。前述の通り、以前の kill は、リストに保存されます。しかし、&#039;&#039;&#039;C-y&#039;&#039;&#039; は、そのうち最初のものしか取得しません。それより前の kill は、&#039;&#039;&#039;M-y&#039;&#039;&#039; によってアクセスすることができます。これによって、&#039;yank&#039; で挿入されたテキストをリストの先頭に移動させます。 &#039;&#039;&#039;M-y&#039;&#039;&#039; は &#039;&#039;&#039;C-y&#039;&#039;&#039; に続けて使われなければならず、kill-ring をたどるために何度でも使えます。&lt;br /&gt;
&lt;br /&gt;
=== 検索と置換 ===&lt;br /&gt;
&lt;br /&gt;
文字列を検索することは、テキストの編集において一般的な作業です。検索は、&#039;&#039;&#039;C-s&#039;&#039;&#039; (後方検索) または &#039;&#039;&#039;C-r&#039;&#039;&#039; (前方検索) によって実行されます。これらのコマンドは、検索する文字列を入力するプロンプトを表示します。検索は1文字入力するごとに実行され、タイプごとに次に（あるいは前に）一致した文字列にマッチします。次の検索結果に行くには C-s を、前の検索結果に行くには C-r を押します。  もし探しているものが見つかったのであれば、&#039;&#039;&#039;&amp;lt;RET&amp;gt;&#039;&#039;&#039; を押すことで検索を終了できます。一方、検索を開始した場所に戻りたければ &#039;&#039;&#039;C-g &#039;&#039;&#039; を押します。&lt;br /&gt;
&lt;br /&gt;
いったん検索が完了すると (たとえば &#039;&#039;&#039;C-g&#039;&#039;&#039; 等で中断していない場合)、検索された文字列は、次の検索のデフォルト検索文字となります。検索された文字を使用するには、後方検索なら &#039;&#039;&#039;C-s C-s&#039;&#039;&#039; , 前方検索なら &#039;&#039;&#039;C-r C-r&#039;&#039;&#039; をそれぞれ押します。&lt;br /&gt;
&lt;br /&gt;
I-search には、いくつかの有用なコマンドがあります。 &#039;&#039;&#039;M-e&#039;&#039;&#039; によって、検索文字列の編集が可能です。 &#039;&#039;&#039;M-c&#039;&#039;&#039; によって、大文字小文字を区別するか、しないかを切り替えることができます。&lt;br /&gt;
&lt;br /&gt;
正規表現検索は、検索の開始コマンド以外、上述の検索と同様に動作します。 &#039;&#039;&#039;C-M-s&#039;&#039;&#039; あるいは &#039;&#039;&#039;C-M-r&#039;&#039;&#039; によって、それぞれ正規表現による後方検索、前方検索を開始します。いったん正規表現検索を開始すると、文字列検索と同様に &#039;&#039;&#039;C-s&#039;&#039;&#039; と &#039;&#039;&#039;C-r&#039;&#039;&#039; を後方検索、前方検索に使用することができます。&lt;br /&gt;
&lt;br /&gt;
検索に加え、文字列や正規表現を置換することができます（それぞれ &#039;&#039;&#039;M-%&#039;&#039;&#039; および &#039;&#039;&#039;C-M-%&#039;&#039;&#039; によって実行されます）。元のテキストと変換後のテキスト用にプロンプトが表示され、それからハイライトされた一致箇所に対する動作のために別のプロンプトが表示されます。多くのオプションが使用できますが（使用できるオプションの完全なリストは &#039;&#039;&#039;?&#039;&#039;&#039; を押してください）、もっとも一般的に使われるのは、変換を実行する &#039;&#039;&#039;y&#039;&#039;&#039; と、スキップする &#039;&#039;&#039;n&#039;&#039;&#039; 、そしてハイライトされている文字列を含め、以降すべての一致に対して変換する &#039;&#039;&#039;!&#039;&#039;&#039; になります。&lt;br /&gt;
&lt;br /&gt;
=== 前置引数 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-u&#039;&#039;&#039; は、&#039;universal-argument&#039; コマンドに対応づけられています。&#039;universal-argument&#039; を渡すことによって、より多くの情報をコマンドに提供できます（この情報を &#039;前置引数&#039; と呼びます）。たとえば&lt;br /&gt;
&lt;br /&gt;
 C-u 80 %&lt;br /&gt;
&lt;br /&gt;
は、%記号の行を挿入します。また、&lt;br /&gt;
&lt;br /&gt;
 C-u 4 M-d&lt;br /&gt;
&lt;br /&gt;
は4単語を削除します。この場合、&#039;&#039;&#039;M-d&#039;&#039;&#039; によって実行されるコマンドへ、要求する単語の数を渡しています。&lt;br /&gt;
&lt;br /&gt;
universal argument は、&#039;&#039;&#039;M-&amp;lt;数字&amp;gt;&#039;&#039;&#039; によって少し早く入力することができます。&lt;br /&gt;
&lt;br /&gt;
 M-80 %&lt;br /&gt;
&lt;br /&gt;
=== インデント ===&lt;br /&gt;
&lt;br /&gt;
インデントは、1行をインデントする &#039;&#039;&#039;&amp;lt;TAB&amp;gt;&#039;&#039;&#039; やリージョンをインデントする &#039;&#039;&#039;C-M-\&#039;&#039;&#039; によって実行されます。リージョンが有効（&#039;&#039;たとえば&#039;&#039;ハイライトされている）場合、&#039;&#039;&#039;&amp;lt;TAB&amp;gt;&#039;&#039;&#039; はリージョンもインデントします。&lt;br /&gt;
&lt;br /&gt;
テキストがどのようにインデントされるかは、正確には有効になっている &#039;&#039;メジャーモード&#039;&#039; に依ります。メジャーモードは、しばしば特定の種類のテキストをインデントするときに特化したインデントスタイルを定義します。（より詳しくは [[#モード|Modes]] を見てください。）&lt;br /&gt;
&lt;br /&gt;
いくつかの場合、ファイルタイプに対して適したメジャーモードがありません。その場合、手動でのインデントが必要になります。リージョンを作成（ [[#kill と yank とリージョン|kill と yank とリージョン]] 参照）し、&#039;&#039;&#039;C-u &amp;lt;n&amp;gt; C-x &amp;lt;TAB&amp;gt;&#039;&#039;&#039; でインデントを実行してください。（ここで、&#039;&amp;lt;n&amp;gt;&#039; はリージョンに含まれるテキストがインデントされる列の数です。）例えば、&lt;br /&gt;
&lt;br /&gt;
リージョンのインデントを4列追加する:&lt;br /&gt;
&lt;br /&gt;
 C-u 4 C-x &amp;lt;TAB&amp;gt;&lt;br /&gt;
&lt;br /&gt;
リージョンのインデントを2列減らす:&lt;br /&gt;
&lt;br /&gt;
 C-u -2 C-x &amp;lt;TAB&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ウィンドウとフレーム ===&lt;br /&gt;
&lt;br /&gt;
Emacs は、多くのファイルを同時に編集するために便利であるよう設計されています。これは、Emacs のインタフェースを3つの階層にわけることで実現されています。つまり、すでに紹介済みのバッファ、&#039;&#039;ウィンドウ&#039;&#039; と &#039;&#039;フレーム&#039;&#039; です。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ウィンドウ&#039;&#039;&#039; とは、Emacsでバッファを表示している場所のことです。1つのウィンドウは、一度に1つのバッファしか表示できません。しかし、1つのバッファは複数のウィンドウに表示できます。それぞれのウィンドウの下には、&#039;&#039;モードライン&#039;&#039; があります。モードラインには、そのバッファの情報が表示されています。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;フレーム&#039;&#039;&#039; とは、Emacs の&amp;quot;ウィンドウ&amp;quot;（一般的な意味。たとえば最近のデスクトップパラダイムの意味での &#039;ウィンドウ&#039;）です。フレームには、タイトルバー、メニューバー、1つ以上の &#039;ウィンドウ&#039; (Emacs 的な意味。たとえば上で定義した &#039;ウィンドウ&#039;) が含まれます。&lt;br /&gt;
&lt;br /&gt;
以降では、これらの単語は Emacs に存在するものでの定義として使用します。&lt;br /&gt;
&lt;br /&gt;
ウィンドウを水平あるいは垂直に分割するには、それぞれ &#039;&#039;&#039;C-x 2&#039;&#039;&#039; あるいは &#039;&#039;&#039;C-x 3&#039;&#039;&#039; を使います。これは、現在のフレームにもう1つのウィンドウを生成する効果があります。複数のウィンドウ間を巡回するには、&#039;&#039;&#039;C-x o&#039;&#039;&#039; を使用します。&lt;br /&gt;
&lt;br /&gt;
ウィンドウ分割の反対は、ウィンドウを削除することです。現在のウィンドウを削除するには &#039;&#039;&#039;C-x 0&#039;&#039;&#039; を使い、現在のウィンドウ以外を削除するには &#039;&#039;&#039;C-x 1&#039;&#039;&#039; を使います。&lt;br /&gt;
&lt;br /&gt;
ウィンドウと同様に、フレームも生成や削除が可能です。 &#039;&#039;&#039;C-x 5 2&#039;&#039;&#039; によってフレームを生成できます。 &#039;&#039;&#039;C-x 5 0&#039;&#039;&#039; によって現在のフレームを削除し、&#039;&#039;&#039;C-x 5 1&#039;&#039;&#039; によってr現在のフレーム以外のすべてのフレームを削除します。&lt;br /&gt;
&lt;br /&gt;
{{Note|これらのコマンドはバッファには影響しません。たとえば、ウィンドウを削除しても表示されているバッファは kill されません。}}&lt;br /&gt;
&lt;br /&gt;
=== モード ===&lt;br /&gt;
&lt;br /&gt;
Emacs モードは Emacs Lisp で書かれた拡張であり、接続されているバッファの挙動を制御します。大抵の場合、インデントやシンタックスハイライト、テキストを編集するときのキーバインドを提供します。洗練されたモードは Emacs を完全な IDE (統合開発環境) に変貌させます。Emacs は基本的にファイルの拡張子でモードをロードすべきか判断します。&lt;br /&gt;
&lt;br /&gt;
シェルスクリプトを編集するのに役立つモードとして sh-mode, line-number-mode, column-number-mode が存在します。同時に使用することができ、以下のコマンドで呼び出します:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x sh-mode &amp;lt;RET&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x column-number-mode &amp;lt;RET&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
line-number-mode はデフォルトで有効になっていますが、コマンドを再度実行することでオンとオフを切り替えられます:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x line-number-mode &amp;lt;RET&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
sh-mode は、&#039;&#039;メジャーモード&#039;&#039; の1つです。メジャーモードは Emacs を調整し、時には、特定の種類のテキストの編集用に特別なコマンドを提供します。それぞれのバッファでは、メジャーモードは1つだけが有効です。シンタックスハイライトやインデントサポートに加えて、sh-mode はシェルスクリプトを書く助けになるいくつかのコマンドを定義しています。以下に、それらの内のいくつかを示します。&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-c (&#039;&#039;&#039;	 関数定義を挿入する&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c C-f&#039;&#039;&#039;	 &#039;for&#039; ループを挿入する&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c TAB&#039;&#039;&#039;	 &#039;if&#039; 文を挿入する&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c C-w&#039;&#039;&#039;	 &#039;while&#039; ループを挿入する&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c C-l&#039;&#039;&#039;	 1 から n までの番号付きループを挿入する&lt;br /&gt;
&lt;br /&gt;
&#039;line-number-mode&#039; と &#039;column-number-mode&#039; は&#039;&#039;マイナーモード&#039;&#039;です。マイナーモードはメジャーモードを拡張することができ、同時に任意の数のマイナーモードを有効にできます。&lt;br /&gt;
&lt;br /&gt;
=== マニュアル ===&lt;br /&gt;
&lt;br /&gt;
Emacs を本当にマスターしたいのであれば、一番よく読むべき文章はやはり公式マニュアルです:&lt;br /&gt;
* Emacs: 完全な Emacs ユーザーマニュアル&lt;br /&gt;
* Emacs FAQ&lt;br /&gt;
* Emacs Lisp Intro: プログラミング言語を使用したことがない場合&lt;br /&gt;
* Elisp: プログラミング言語をよく知っている場合&lt;br /&gt;
&lt;br /&gt;
これらは、 [http://www.gnu.org/software/emacs/manual/ GNU.org] から PDF として入手できます。あるいは Emacs 自身にて組み込みの &#039;info&#039; リーダー &#039;&#039;&#039;C-h i&#039;&#039;&#039; を用いて直接読むこともできます。本を選択するには &#039;&#039;&#039;m&#039;&#039;&#039; を押してください。&lt;br /&gt;
&lt;br /&gt;
ユーザーの幾人かは、&#039;info&#039; で読むことを好みます。便利なショートカットであり、段落はウィンドウ幅に調整され、フォントは現在の画面解像度に調整されるためです。何人かは目に優しいと気づいています。最後に、本の内容を任意の Emacs バッファへ簡単にコピーでき、さらに例示されている Lisp コードを直接実行することさえできます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;info&#039;&#039;&#039; 本について、もっとよく知りたいなら、&#039;&#039;&#039;C-h i m info &amp;lt;RET&amp;gt;&#039;&#039;&#039; を実行してください。&lt;br /&gt;
info モードで &#039;&#039;&#039;?&#039;&#039;&#039; を押すと、ショートカットの簡易リストが表示されます。&lt;br /&gt;
&lt;br /&gt;
== カスタマイズ ==&lt;br /&gt;
&lt;br /&gt;
Emacs は {{ic|~/.emacs}} を編集するか &#039;&#039;&#039;M-x customize&#039;&#039;&#039; を使うことで設定をすることができます。このセクションでは手動で {{ic|~/.emacs}} を編集する方に焦点をあて、いくつかのカスタマイズ例を示すことで、一般的な Emacs の設定をデモンストレーションします。customize コマンドは調整を行うためのシンプルなインターフェイスを提供しますが、おそらく Emacs に慣れてくるにつれて制約を感じるようになるでしょう。&lt;br /&gt;
&lt;br /&gt;
ここでの例は、すべて Emacs が動作している間に動作します。Emacs 内で式を評価するには、以下を使います。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-M-x&#039;&#039;&#039; ポイントがある式を評価する&lt;br /&gt;
&lt;br /&gt;
あるいは、&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-x C-e&#039;&#039;&#039; ポイントの直前の &#039;)&#039; を最後のカッコとする式を評価する&lt;br /&gt;
&lt;br /&gt;
何人かのユーザーは、プロンプトで &#039;yes&#039; や &#039;no&#039; をタイプすると、すぐに疲れます。その代わりに &#039;y&#039; や &#039;n&#039; を使うために:&lt;br /&gt;
&lt;br /&gt;
 (defalias &#039;yes-or-no-p &#039;y-or-n-p)&lt;br /&gt;
&lt;br /&gt;
カーソルの点滅を止めるには、次を使用:&lt;br /&gt;
&lt;br /&gt;
 (blink-cursor-mode -1)&lt;br /&gt;
&lt;br /&gt;
同じく、前のセクションにある column-number-mode を有効にするには:&lt;br /&gt;
&lt;br /&gt;
 (column-number-mode 1)&lt;br /&gt;
&lt;br /&gt;
前の2つのコマンドに類似性があるのは偶然ではありません。blink-cursor-mode と column-number-mode は、共にマイナーモードです。ルールとして、マイナーモードは正の数を引数にとると有効になり、負の数で無効になります。引数が省略された時、マイナーモードは on/off を切り替えます。&lt;br /&gt;
&lt;br /&gt;
マイナーモードのその他いくつかの例を示します。以下はそれぞれ、スクロールバー、メニューバー、ツールバーを無効にします。&lt;br /&gt;
&lt;br /&gt;
 (scroll-bar-mode -1)&lt;br /&gt;
 (menu-bar-mode -1)&lt;br /&gt;
 (tool-bar-mode -1)&lt;br /&gt;
&lt;br /&gt;
変数 &#039;auto-mode-alist&#039; によって、特定のファイル名に対してデフォルトで使われるメジャーモードを変更することができます。以下の例では、&#039;.tut&#039; および &#039;.req&#039; ファイルのデフォルトのメジャーモードを &#039;text-mode&#039; にします。&lt;br /&gt;
&lt;br /&gt;
 (setq auto-mode-alist&lt;br /&gt;
   (append&lt;br /&gt;
     &#039;((&amp;quot;\\.tut$&amp;quot; . text-mode)&lt;br /&gt;
       (&amp;quot;\\.req$&amp;quot; . text-mode))&lt;br /&gt;
     auto-mode-alist))&lt;br /&gt;
&lt;br /&gt;
設定は、基底となるモードごとに適用することもできます。基本的な方法は、&#039;&#039;hook&#039;&#039; に関数を追加することです。例えば、text-mode でだけインデントをタブの代わりに強制的にスペースを使用するためには:&lt;br /&gt;
&lt;br /&gt;
 (add-hook &#039;text-mode-hook (lambda () (setq indent-tabs-mode nil)))&lt;br /&gt;
&lt;br /&gt;
同様に、場所によらずインデントにてスペースを使用するには:&lt;br /&gt;
&lt;br /&gt;
 (setq-default indent-tabs-mode nil)&lt;br /&gt;
&lt;br /&gt;
キーバインドは、2つの方法で調整できます。1つ目の方法は &#039;define-key&#039; です。&#039;define-key&#039; は、コマンドに対するキーバインドを作成できますが、1つのモードに対してだけ作成します。以下の例では、&#039;&#039;&#039;F8&#039;&#039;&#039; に、&#039;text-mode&#039; バッファでは行末のホワイトスペースを除去するよう割り当てます。&lt;br /&gt;
&lt;br /&gt;
 (define-key text-mode-map (kbd &amp;quot;&amp;lt;f8&amp;gt;&amp;quot;) &#039;delete-trailing-whitespace)&lt;br /&gt;
&lt;br /&gt;
もう1つの方法は、&#039;global-set-key&#039; です。これによって、場所によらずキーにコマンドを割り当てることができます。&#039;query-replace-regexp&#039; (&#039;&#039;&#039;C-M-%&#039;&#039;&#039;) を &#039;&amp;lt;f7&amp;gt;&#039; に割り当てるには:&lt;br /&gt;
&lt;br /&gt;
 (global-set-key (kbd &amp;quot;&amp;lt;f7&amp;gt;&amp;quot;) &#039;query-replace-regexp)&lt;br /&gt;
&lt;br /&gt;
他のキーにコマンドを割り当てることは、既存の割当を入れ替えるわけではありません。たとえば、上記例の後、&#039;query-replace-regexp&#039; は、&#039;&#039;&#039;F7&#039;&#039;&#039; と &#039;&#039;&#039;C-M-%&#039;&#039;&#039; の両方に割り当てられます。&lt;br /&gt;
&lt;br /&gt;
Emacs のほとんどすべてがカスタマイズできます。[http://emacswiki.org/ Emacs Wiki] を通して見ることが基礎固めに適しています。&lt;br /&gt;
&lt;br /&gt;
=== マルチ設定 ===&lt;br /&gt;
&lt;br /&gt;
複数の設定を使い、Emacs にどれか一つをロードさせることができます。&lt;br /&gt;
&lt;br /&gt;
例えば、2つの設定ファイルを定義してみましょう。&lt;br /&gt;
&lt;br /&gt;
{{hc|.emacs|&lt;br /&gt;
(load &amp;quot;~/.emacs.d/main&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/functions&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/modes&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/plugins&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/theme&amp;quot; nil t)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これによって、デーモンとしての起動用にフルカスタムをロードします。しかし、&#039;&#039;plugins&#039;&#039; ファイルは巨大で、ロードが遅いです。&#039;&#039;plugins&#039;&#039; 機能が不要な新しい Emacs インスタンスを生成したい場合、&#039;&#039;plugins&#039;&#039; を毎回ロードすることは面倒です。&lt;br /&gt;
&lt;br /&gt;
{{hc|.emacs-light|&lt;br /&gt;
(load &amp;quot;~/.emacs.d/main&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/functions&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/modes&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/theme&amp;quot; nil t)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Emacs を以下のコマンドで起動します。&lt;br /&gt;
 emacs -q -l ~/.emacs-light&lt;br /&gt;
これによって、エイリアスを生成して、呼び出しを簡単にすることができます。&lt;br /&gt;
&lt;br /&gt;
=== ローカル・カスタム変数 ===&lt;br /&gt;
&lt;br /&gt;
設定ファイル内で変数を定義することができます。この変数はファイル内でローカルに変更することができます。&lt;br /&gt;
&lt;br /&gt;
 (defcustom my-compiler &amp;quot;gcc&amp;quot; &amp;quot;Some documentation&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
どんなファイルでもローカル変数を定義するには2つの方法があります。[https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html 完全な詳細のマニュアル ] を参照してください&lt;br /&gt;
&lt;br /&gt;
* {{ic| M-x add-file-local-variable-prop-line}} は、ファイルの先頭に以下のようなコメント行を追加します。&lt;br /&gt;
 // -*- my-compiler:g++; mode:c++ -*-&lt;br /&gt;
* {{ic| M-x add-file-local-variable}} は、ファイルの末尾付近に行を追加します。&lt;br /&gt;
 // Local Variables:&lt;br /&gt;
 // my-compiler: g++&lt;br /&gt;
 // mode: c++&lt;br /&gt;
 // End:&lt;br /&gt;
&lt;br /&gt;
変数の効果を得るためには、{{ic|M-x revert-buffer}} を実行する必要あることに注意してください。&lt;br /&gt;
&lt;br /&gt;
カスタム変数は、デフォルトでは安全でないと考えられています。もしカスタム変数によって再定義されたローカル変数を含むファイルを開こうとすると、Emacs は確認するよう通知します。&lt;br /&gt;
&lt;br /&gt;
変数を安全であるとして宣言することもできます。これによって確認のためのプロンプトを除去することができます。新しい変数が安全と考えられるためには検証されなければならない、と述語を指定する必要があります。&lt;br /&gt;
&lt;br /&gt;
 (defcustom my-compiler &amp;quot;gcc&amp;quot; &amp;quot;Some documentation&amp;quot; :safe &#039;stringp)&lt;br /&gt;
&lt;br /&gt;
この例では、文字列以外の何かにセットしようとすると、Emacs は安全でないと考えます。&lt;br /&gt;
&lt;br /&gt;
=== カスタムカラーとテーマ ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;face&#039;&#039; を使うことで簡単に色をカスタマイズすることができます:&lt;br /&gt;
 (set-face-background  &#039;region                 &amp;quot;color-17&amp;quot;)&lt;br /&gt;
 (set-face-foreground  &#039;region                 &amp;quot;white&amp;quot;)&lt;br /&gt;
 (set-face-bold-p      &#039;font-lock-builtin-face t ) &lt;br /&gt;
&lt;br /&gt;
ポイントがある場所の face の名前を Emacs に表示させることができます。そのためには &#039;&#039;customize-face&#039;&#039; を使います。どのように色、太字、下線、等が設定されているかを示すことができます。&lt;br /&gt;
&lt;br /&gt;
コンソール上の Emacs は、256色を扱うことができます。しかし、それには適したターミナルを使わなければなりません。たとえば URxvt は256色をサポートしています。&#039;&#039;list-colors-display&#039;&#039; によって、サポートされる色の包括的なリストが表示できます。これは強くターミナルに依存します。&lt;br /&gt;
&lt;br /&gt;
=== SyncTeX サポート ===&lt;br /&gt;
&lt;br /&gt;
Emacs は強力な LaTeX エディタです。LaTeX モードを必要に応じて自由に編集・作成することができます。&lt;br /&gt;
&lt;br /&gt;
SyncTeX サポートといった、まだいくつかの挑戦があります。最初に TeX ディストリビューションに SyncTeX があるかを確認する必要があります。もし TeX Live を手動でインストールした場合、&#039;&#039;synctex&#039;&#039; パッケージをインストールする必要があるかもしれません。&lt;br /&gt;
 # umask 022 &amp;amp;&amp;amp; tlmgr install synctex&lt;br /&gt;
&lt;br /&gt;
SyncTeX サポートは、ビューア依存です。ここでは例として Zathura を使用します。他の PDF ビューアを使用する場合、コードを変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
 (defcustom tex-my-viewer &amp;quot;zathura --fork -s -x \&amp;quot;emacsclient --eval &#039;(progn (switch-to-buffer  (file-name-nondirectory \&amp;quot;&#039;\&amp;quot;&#039;\&amp;quot;%{input}\&amp;quot;&#039;\&amp;quot;&#039;\&amp;quot;)) (goto-line %{line}))&#039;\&amp;quot;&amp;quot; &lt;br /&gt;
   &amp;quot;TeX 文書用 PDF ビューア。&lt;br /&gt;
    同じドキュメントを2回起動したこと検出する、または Emacs を&lt;br /&gt;
    閉じても表示を継続するためにビューアを fork したい場合、&lt;br /&gt;
  &lt;br /&gt;
 シンプルなコマンド:&lt;br /&gt;
 &lt;br /&gt;
   zathura --fork&lt;br /&gt;
 &lt;br /&gt;
 SyncTex を用いて pdf を逆検索するために以下が使用できる。&lt;br /&gt;
 &lt;br /&gt;
   emacsclient --eval &#039;(progn (switch-to-buffer  (file-name-nondirectory \&amp;quot;%{input}\&amp;quot;)) (goto-line %{line}))&#039;&lt;br /&gt;
 &lt;br /&gt;
 引用符および二重引用符は必須で、適切にエスケープされなければならない点に注意。&amp;quot;&lt;br /&gt;
 :safe &#039;stringp)&lt;br /&gt;
&lt;br /&gt;
カスタム変数を定義します。もし AucTeX や Emacs 標準の LaTeX-mode を使用しているなら、それに応じてビューアを設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
LaTeX ソースファイルを Emacs で開き、文書をコンパイルし、ビューアを起動します。Zathura が起動します。{{ic|Ctrl+Left click}} を押すと、Emacs は対応する位置にポイントを移動させます。&lt;br /&gt;
&lt;br /&gt;
=== Systemd ファイルのシンタックスハイライト ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/holomorph/systemd-mode systemd-mode] を使うことができます。&lt;br /&gt;
&lt;br /&gt;
もしくは init ファイルに以下を追加することで、簡単に emacs で systemd のファイル (サービスやタイマーなど) をカラー表示できます:&lt;br /&gt;
&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.service\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.timer\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.target\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.mount\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.automount\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.slice\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.socket\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.path\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.netdev\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.network\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.link\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
&lt;br /&gt;
=== emacs-nox のクリップボードサポート ===&lt;br /&gt;
&lt;br /&gt;
emacs-nox で [[Xorg]] クリップボードを使うには、{{Pkg|xclip}} を[[インストール]]して以下の関数を {{ic|~/.emacs}} に追加してください [https://lists.gnu.org/archive/html/help-gnu-emacs/2014-08/msg00189.html]:&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&lt;br /&gt;
;; use xclip to copy/paste in emacs-nox&lt;br /&gt;
(unless window-system&lt;br /&gt;
  (when (getenv &amp;quot;DISPLAY&amp;quot;)&lt;br /&gt;
    (defun xclip-cut-function (text &amp;amp;optional push)&lt;br /&gt;
      (with-temp-buffer&lt;br /&gt;
	(insert text)&lt;br /&gt;
	(call-process-region (point-min) (point-max) &amp;quot;xclip&amp;quot; nil 0 nil &amp;quot;-i&amp;quot; &amp;quot;-selection&amp;quot; &amp;quot;clipboard&amp;quot;)))&lt;br /&gt;
    (defun xclip-paste-function()&lt;br /&gt;
      (let ((xclip-output (shell-command-to-string &amp;quot;xclip -o -selection clipboard&amp;quot;)))&lt;br /&gt;
	(unless (string= (car kill-ring) xclip-output)&lt;br /&gt;
	  xclip-output )))&lt;br /&gt;
    (setq interprogram-cut-function &#039;xclip-cut-function)&lt;br /&gt;
    (setq interprogram-paste-function &#039;xclip-paste-function)&lt;br /&gt;
    ))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|以下を追加することでターミナルマウスサポートも有効にできます:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
;; xterm mouse support&lt;br /&gt;
(require &#039;mouse)&lt;br /&gt;
(xterm-mouse-mode t)&lt;br /&gt;
}}&lt;br /&gt;
[http://www.opensource.apple.com/source/emacs/emacs-51/emacs/lisp/mwheel.el mwheel.el] を参照。}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
前のセクションでは基本的な編集コマンドを説明していますが、それだけでは Emacs の可能性はわかりません。このセクションではより高度なテクニックや機能を紹介します。&lt;br /&gt;
&lt;br /&gt;
ただし全てを説明するとなると長くなりすぎます。そのためこのセクションはあくまで Emacs の雅やかな機能をいくつか&#039;&#039;デモ&#039;&#039;するだけにとどめます。&lt;br /&gt;
&lt;br /&gt;
全ての機能の詳細な説明は[[#ドキュメント|ドキュメント]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== TRAMP ===&lt;br /&gt;
&lt;br /&gt;
TRAMP (Transparent Remote Access, Multiple Protocols) は多数のプロトコルで、リモートファイルに透過的にアクセスすることができる拡張です。ファイル名を入力するときに、特定の形式を入力すると TRAMP が呼びだされます。例:&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/hosts}} を root 権限で開く前に root のパスワードを要求するには:&lt;br /&gt;
&lt;br /&gt;
 C-x C-f /sudo::/etc/hosts&lt;br /&gt;
&lt;br /&gt;
SSH で &#039;myhost&#039; に &#039;myuser&#039; として接続して {{ic|~/example.txt}} ファイルを開くには:&lt;br /&gt;
&lt;br /&gt;
 C-x C-f /ssh:myuser@myhost:~/example.txt&lt;br /&gt;
&lt;br /&gt;
TRAMP のパスは &#039;/[protocol]:[[user@]host]:&amp;lt;file&amp;gt;&#039; という形式で指定します。TRAMP がサポートしているのは上記の例に限りません。詳しくは TRAMP の info マニュアルを参照してください。マニュアルは Emacs に付属しています。&lt;br /&gt;
&lt;br /&gt;
=== キーボードマクロとレジスタ ===&lt;br /&gt;
&lt;br /&gt;
このセクションでは、2, 3の強力な編集機能に対する実用的なデモンストレーションを示します。つまり、&#039;&#039;keyboard macros&#039;&#039; と &#039;&#039;registers&#039;&#039; です。&lt;br /&gt;
&lt;br /&gt;
目的は、一連の文字のリストとこのリスト内での対応する位置を作ることです。それらは手動で成形することもできますが、遅く、間違いをおこしやすいです。その代わりに、Emacs のよりパワフルないくつかの編集機能によって、レバレッジを効かせられます。答えの前に、以下で使うテクニックの背景について詳細を示します。&lt;br /&gt;
&lt;br /&gt;
1つ目の機能は &#039;&#039;レジスタ&#039;&#039; です。レジスタ は、数字からウィンドウコンフィグまでに及ぶ様々なデータ型を格納し取得するために使われます。それぞれのレジスタには、1文字の名前が与えられます。この文字はレジスタへのアクセスに使われます。&lt;br /&gt;
&lt;br /&gt;
もう1つの機能は、&#039;&#039;キーボードマクロ&#039;&#039; です。キーボードマクロは、一連のコマンドを格納します。それによって後で簡単に繰り返すことができます。これらの変化を、ここでステップバイステップで実施してみます。&lt;br /&gt;
&lt;br /&gt;
文字集合を含むバッファから始めます。&lt;br /&gt;
 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&lt;br /&gt;
&lt;br /&gt;
&#039;number-to-register&#039; コマンド（&#039;&#039;&#039;C-x r n&#039;&#039;&#039;）を呼び出してレジスタを準備します。それから数字 &#039;0&#039; をレジスタ &#039;k&#039; に保存します。&lt;br /&gt;
&lt;br /&gt;
 C-x r n k&lt;br /&gt;
&lt;br /&gt;
バッファの先頭にポイントを移動させ、キーボードマクロ（&#039;&#039;&#039;C-x (&#039;&#039;&#039;）を実行開始し、文字のフォーマットを始めます。&lt;br /&gt;
&lt;br /&gt;
 C-x ( C-f M-4 .&lt;br /&gt;
&lt;br /&gt;
レジスタ &#039;k&#039; に挿入 (&#039;&#039;&#039;C-x r i&#039;&#039;&#039;) とインクリメント (&#039;&#039;&#039;C-x r +&#039;&#039;&#039;) を行います。前置引数 (&#039;&#039;&#039;C-u&#039;&#039;&#039;) によって、テキストを挿入した後でポイント位置を離します。&lt;br /&gt;
&lt;br /&gt;
 C-u C-x r i k C-x r + k&lt;br /&gt;
&lt;br /&gt;
改行を入れることでフォーマットを完了させます。残りの文字に対しては、Emacs はキーボードマクロを定義したポイント位置から始まるこのプロセスを繰り返すことができます。&#039;&#039;&#039;C-x e&#039;&#039;&#039; はキーボードマクロを完了して呼び出します。前置引数 &#039;&#039;&#039;M-0&#039;&#039;&#039; によって、エラーが起きるまでマクロを繰り返します。この場合、バッファの最後に到着すると中断します。&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;RET&amp;gt; M-0 C-x e&lt;br /&gt;
&lt;br /&gt;
結果は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
  A....0&lt;br /&gt;
  B....1&lt;br /&gt;
  C....2&lt;br /&gt;
  [...]&lt;br /&gt;
  x....49&lt;br /&gt;
  y....50&lt;br /&gt;
  z....51&lt;br /&gt;
&lt;br /&gt;
もし、後々使うためにマクロを保存したいなら、名前をつけて設定ファイルに保存する必要があります。&lt;br /&gt;
 name-last-kbd-macro &lt;br /&gt;
 insert-kbd-macro&lt;br /&gt;
&lt;br /&gt;
定義したマクロは、すべてマクロリングに格納されます。マクロを巡回するには、&lt;br /&gt;
 &#039;&#039;&#039;C-x C-k C-n&#039;&#039;&#039;  次のマクロ&lt;br /&gt;
 &#039;&#039;&#039;C-x C-k C-p&#039;&#039;&#039;  前のマクロ&lt;br /&gt;
&lt;br /&gt;
同様に、仮想的に何でも保存するためにレジスタを使えます。&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-x r SPC&#039;&#039;&#039; 現在のポイント（位置）をレジスタにコピーする&lt;br /&gt;
 &#039;&#039;&#039;C-x r w&#039;&#039;&#039;   現在のウィンドウ設定をレジスタにコピーする&lt;br /&gt;
 &#039;&#039;&#039;C-x r j&#039;&#039;&#039;   レジスタに再保存する。&lt;br /&gt;
 &lt;br /&gt;
しばしば異なるプロジェクトごとにウィンドウを行ったり来たりして作業をするなら、別のプロジェクトのために設定を保存し、ある画角から別の画角へ簡単に切り替えることができます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;list-registers&#039;&#039;&#039; コマンドによって、使用したレジスタをリストにして表示することができます。&lt;br /&gt;
&lt;br /&gt;
=== 正規表現 ===&lt;br /&gt;
&lt;br /&gt;
Emacs Manual より: &amp;quot;正規表現 (&#039;&#039;regexp&#039;&#039; と略す) とは、一致する可能性がある一連の (無限個でもよい) 文字列を表現するパターンである&amp;quot;。このセクションでは正規表現自体には深くは立ち入りません (単純に説明しきれない)。そのかわり正規表現のパワーを簡単にデモンストレーションします。詳しい説明は Emacs Manual の [https://www.gnu.org/software/emacs/manual/html_node/elisp/Regular-Expressions.html#Regular-Expressions Regular Expressions] セクションを見て下さい。&lt;br /&gt;
&lt;br /&gt;
上と同じシナリオが与えられた場合、つまり複数文字のリストがあり、そのリスト内に複数文字の相対位置を持つリストを考えます。(参照 [[#キーボードマクロとレジスタ|キーボードマクロとレジスタ]]) 再度、以下を含むバッファから開始します。&lt;br /&gt;
&lt;br /&gt;
 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&lt;br /&gt;
&lt;br /&gt;
バッファの最初に &#039;&#039;&#039;C-M-%&#039;&#039;&#039; を使用します。（もしキー列が実行するには難しいなら、&#039;&#039;&#039;M-x query-replace-regexp&#039;&#039;&#039; を使う方がより快適かもしれません。）プロンプトには以下を入力します：&lt;br /&gt;
 \(.\)&lt;br /&gt;
これは、単に1文字にマッチします。それから置換先のプロンプトには：&lt;br /&gt;
 \1....\#^J&lt;br /&gt;
{{Note|&#039;^J&#039; は、改行を配置することを意味します。改行は、プロンプト内で入力できません。改行記号は、その他に &#039;&#039;&#039;C-q C-j&#039;&#039;&#039; を使って入力することもできます。}}&lt;br /&gt;
置換先の表現は、以下のように読みます： &amp;quot;最初のカッコに囲まれた部分にマッチするテキストを挿入しなさい (今回は1文字)。次にピリオドを4文字挿入し、それから自動的にインクリメントされた数を挿入し、改行が続きます。&amp;quot;&lt;br /&gt;
&lt;br /&gt;
最後に、&#039;&#039;&#039;!&#039;&#039;&#039; を押すことで、バッファ全体に渡って適用します。前のセクションで実行したすべてのフォーマットが、1つの正規表現置換で実行できます。&lt;br /&gt;
&lt;br /&gt;
=== 矩形選択 ===&lt;br /&gt;
&lt;br /&gt;
先進的なテキストエディタが当然備えているべき強力な機能として、テキストを矩形で選択・編集できるというのがあるでしょう。&lt;br /&gt;
&lt;br /&gt;
Emacs でも矩形選択は可能です。&#039;&#039;&#039;C-SPC&#039;&#039;&#039; で普通にテキストを選択してから、複数の矩形コマンドを使うことができます。&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-x r t&#039;&#039;&#039;  矩形領域にテキストを挿入する&lt;br /&gt;
 &#039;&#039;&#039;C-x r k&#039;&#039;&#039;  矩形領域を kill する (kill-ring に保存する)&lt;br /&gt;
 &#039;&#039;&#039;C-x r y&#039;&#039;&#039;  矩形領域を Yank する&lt;br /&gt;
 &#039;&#039;&#039;C-x r o&#039;&#039;&#039;  矩形領域にスペースを挿入する&lt;br /&gt;
&lt;br /&gt;
たとえ矩形の外のテキストがハイライトされていても、上記のコマンドが影響を与えることはありません。&lt;br /&gt;
&lt;br /&gt;
=== ブックマーク ===&lt;br /&gt;
&lt;br /&gt;
Emacs は開いたファイルのリストを保存できます。&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-x r m&#039;&#039;&#039; カレントバッファをブックマークに追加。&lt;br /&gt;
 &#039;&#039;&#039;C-x r b&#039;&#039;&#039; ブックマークからバッファを開く。&lt;br /&gt;
 &#039;&#039;&#039;C-x r l&#039;&#039;&#039; ブックマークの確認。&lt;br /&gt;
&lt;br /&gt;
=== Elisp インタプリタ ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;eval-last-sexp&#039;&#039;&#039; (&#039;&#039;&#039;C-x C-e&#039;&#039;&#039;) を使うことで、elisp 式を評価することができます。Emacs は、開始時に常に &#039;&#039;&#039;*scratch*&#039;&#039;&#039; バッファを生成します。*scratch* バッファはディスクに保存されず、自由にテキストやコードを記述することができます。これは特にelispの評価に有用です。このバッファは、デフォルトで &#039;&#039;&#039;lisp-interaction-mode&#039;&#039;&#039; 有効で開始することに注意してください。&lt;br /&gt;
&lt;br /&gt;
その他に、Emacs は、&#039;&#039;&#039;ielm&#039;&#039;&#039; コマンドでトップレベルの elisp インタプリタを提供します。&lt;br /&gt;
&lt;br /&gt;
=== スマートなウィンドウ切り替え ===&lt;br /&gt;
&lt;br /&gt;
長い間使っていると &#039;&#039;&#039;C-x o&#039;&#039;&#039; による伝統的なウィンドウ切り替えは面倒かもしれません。&#039;&#039;&#039;windmove&#039;&#039;&#039; コマンドはもっと便利にウィンドウを切り替えることができます。{{ic|Shift}} を押しながら方向キーでウィンドウを指定するだけです。&lt;br /&gt;
&lt;br /&gt;
windmove キーを有効にするには、設定ファイルに以下を記述してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.emacs|&lt;br /&gt;
(when (fboundp &#039;windmove-default-keybindings)&lt;br /&gt;
  (windmove-default-keybindings))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== シェルコマンドの実行 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-!&#039;&#039;&#039; を使うことで、外部コマンドを呼び出すことができます。前置引数を使用する（&#039;&#039;&#039;C-u M-!&#039;&#039;&#039;）ことで、結果を現在のバッファのポイント位置に出力することができます。&lt;br /&gt;
&lt;br /&gt;
リージョン上で &#039;&#039;&#039;M-|&#039;&#039;&#039; を使うことで、リージョンをコマンドの入力として使うことができます。たとえば、&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-u M-| sort -u RET&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
によって、リージョンがソートされ、重複を除去して、リージョンをその結果で置き換えることができます。&lt;br /&gt;
&lt;br /&gt;
=== シェルバッファ ===&lt;br /&gt;
&lt;br /&gt;
シェルバッファを生成することで、ターミナルと同様にコマンドを実行することができます。&lt;br /&gt;
昔ながらのシェルバッファは、&#039;&#039;&#039;shell&#039;&#039;&#039; コマンドによって生成することができます。&lt;br /&gt;
&lt;br /&gt;
Emacs は、すべて Emacs Lisp で書かれた非常に強力なシェル &#039;&#039;&#039;eshell&#039;&#039;&#039; を機能として持っています。csh や zshといったシェルに対する主な優位点は、ネイティブなシェル言語が elisp そのものである点です。そのため、シェル関数として elisp のすべての先進的な機能を使用できます。&lt;br /&gt;
&lt;br /&gt;
=== 対応する括弧のハイライト ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;show-paren&#039;&#039;&#039; モードを使うことができます。デフォルトでは、対応する括弧が表示されるまで少し遅延がありますが、&#039;&#039;&#039;show-paren-delay&#039;&#039;&#039; を 0 に設定することでなくすことができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.emacs|&lt;br /&gt;
(setq show-paren-delay 0)&lt;br /&gt;
(show-paren-mode 1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== スペルチェック ===&lt;br /&gt;
&lt;br /&gt;
辞書を選択するには:&lt;br /&gt;
 &#039;&#039;&#039;M-x ispell-change-dictionary&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
一単語をチェックするには &#039;&#039;&#039;M-$&#039;&#039;&#039; を使います。&lt;br /&gt;
バッファ全体をチェックするには、&lt;br /&gt;
 &#039;&#039;&#039;M-x ispell-buffer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;flyspell-mode&#039;&#039;&#039; を有効にすることで、入力と同時に (on-the-fly) スペルチェックができます。ソースコードに対しては、代わりに &#039;&#039;&#039;flyspell-prog-mode&#039;&#039;&#039; を使うことで、コメントに限定して有効にできます。Emacs でスペルチェックをするには &#039;&#039;aspell&#039;&#039; パッケージも必要になります。それぞれの言語に対応したパッケージがあります。英語に対しては、（&#039;&#039;aspell&#039;&#039; と共に）&#039;&#039;aspell-en&#039;&#039; が必要になります。&lt;br /&gt;
&lt;br /&gt;
=== テーブル ===&lt;br /&gt;
&lt;br /&gt;
Emacs は、様々な言語での一般的なテーブルを扱う居力な機能を備えています。例を見てみましょう。&lt;br /&gt;
&lt;br /&gt;
 Fruits  Quantity&lt;br /&gt;
 Apples  5&lt;br /&gt;
 Melons  2&lt;br /&gt;
&lt;br /&gt;
この内容をリージョンで選択して、以下を実行します。&lt;br /&gt;
 table-capture&lt;br /&gt;
&lt;br /&gt;
半角スペース2文字を列の区切りとして、改行 (&#039;&#039;&#039;C-q C-j&#039;&#039;&#039;) を行の区切りとして使用します。&lt;br /&gt;
以下の結果を得ます。&lt;br /&gt;
&lt;br /&gt;
 +------+--------+&lt;br /&gt;
 |Fruits|Quantity|&lt;br /&gt;
 +------+--------+&lt;br /&gt;
 |Apples|5       |&lt;br /&gt;
 +------+--------+&lt;br /&gt;
 |Melons|2       |&lt;br /&gt;
 +------+--------+&lt;br /&gt;
&lt;br /&gt;
以下の操作で元に戻せます。&lt;br /&gt;
 table-release&lt;br /&gt;
&#039;&#039;table-insert-row&#039;&#039;, &#039;&#039;table-span-cell&#039;&#039;, &#039;&#039;table-widen-cell&#039;&#039;　といったような、たくさんの便利な &#039;&#039;table-*&#039;&#039; 関数があります。&lt;br /&gt;
&lt;br /&gt;
最後に、&#039;&#039;table&#039;&#039; 関数の究極の目的は、指定されたマークアップ言語に変換することです。&lt;br /&gt;
それには、&#039;&#039;table-generate-source&#039;&#039; が使われます。&lt;br /&gt;
LaTeX に対しては、前のテーブルは、以下の結果となります。&lt;br /&gt;
&lt;br /&gt;
 % This LaTeX table template is generated by emacs 24.2.1&lt;br /&gt;
 \begin{tabular}{|l|l|}&lt;br /&gt;
 \hline&lt;br /&gt;
 Fruits &amp;amp; Quantity \\&lt;br /&gt;
 \hline&lt;br /&gt;
 Apples &amp;amp; 5 \\&lt;br /&gt;
 \hline&lt;br /&gt;
 Melons &amp;amp; 2 \\&lt;br /&gt;
 \hline&lt;br /&gt;
 \end{tabular}&lt;br /&gt;
&lt;br /&gt;
table mode を使用することで、行ごとおよび列ごとの和といった、スプレッドシートの作業を行うこともできます。しかし、すぐに機能が限定的であると分かるでしょう。その上、非常に遅いです。より多くの強力な可能性については、[[#予定表、スプレッドシート、文章作成|org-mode]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== 予定表、スプレッドシート、文章作成 ===&lt;br /&gt;
&lt;br /&gt;
有名でパワフルな [http://orgmode.org/ Org mode] のおかげで、Emacs はパワフルなオフィス系機能をおすすめできます。このモードは、標準の Emacs ディストリビューションに含まれます。&lt;br /&gt;
&lt;br /&gt;
Org mode は元々強力な TODO およびアジェンダのエージェントですが、すぐにはるかに幅広い機能セットに進化しました。 &lt;br /&gt;
Org mode は単純に機能が多すぎて、すべての機能をざっと見ることすらできません。そのため、私たちはいくつかの例であなたの欲求を刺激するに留めます。&lt;br /&gt;
&lt;br /&gt;
TODO.org ファイルを新規ファイルとして開きます。Org mode がロードされるはずです。もしロードされなければ、&#039;&#039;&#039;M-x org-mode&#039;&#039;&#039; によって有効にできます。&lt;br /&gt;
{{hc|TODO.org|&lt;br /&gt;
* First entry&lt;br /&gt;
** Subentry&lt;br /&gt;
   Some comments&lt;br /&gt;
*** Subsubentry&lt;br /&gt;
* Second entry&lt;br /&gt;
  - List item 1&lt;br /&gt;
  - List item 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ここで、いくつかの有用なキーバインドは以下となります：&lt;br /&gt;
* &#039;&#039;&#039;TAB&#039;&#039;&#039; 現在のエントリーの折りたたみ・展開を切り替えます。&lt;br /&gt;
* &#039;&#039;&#039;S-TAB&#039;&#039;&#039; すべてのエントリーの折りたたみ・展開を切り替えます。&lt;br /&gt;
* &#039;&#039;&#039;M-RET&#039;&#039;&#039; 現在の項目と同じレベルに新しい項目を開始します。&lt;br /&gt;
* &#039;&#039;&#039;M-&amp;lt;left&amp;gt;&#039;&#039;&#039; および &#039;&#039;&#039;M-&amp;lt;right&amp;gt;&#039;&#039;&#039; レベルを変更します。&lt;br /&gt;
* &#039;&#039;&#039;M-&amp;lt;up&amp;gt;&#039;&#039;&#039; およｂ &#039;&#039;&#039;M-&amp;lt;down&amp;gt;&#039;&#039;&#039; すべてのサブセクションを含めて項目を移動します。&lt;br /&gt;
* &#039;&#039;&#039;S-&amp;lt;left&amp;gt;&#039;&#039;&#039; および &#039;&#039;&#039;S-&amp;lt;right&amp;gt;&#039;&#039;&#039; ステータスを変化させます。リストアイテムでは、項目のスタイルを変更します。&lt;br /&gt;
* &#039;&#039;&#039;S-&amp;lt;up&amp;gt;&#039;&#039;&#039; および &#039;&#039;&#039;S-&amp;lt;down&amp;gt;&#039;&#039;&#039; 優先度を変更します。&lt;br /&gt;
* &#039;&#039;&#039;C-c ^&#039;&#039;&#039; 現在のエントリーのすべてのサブエントリーをソートします。&lt;br /&gt;
* &#039;&#039;&#039;C-c .&#039;&#039;&#039; 現在のエントリーにタイムスタンプを追加します。{{ic|Shift}} と矢印を使って、数日や数週をスキップできます。カレンダーでマウスを使ったり、特定の日で {{ic|Enter}} を押したりして、それらを選択できます。&lt;br /&gt;
&lt;br /&gt;
スプレッドシート機能は、非常に包括的です。マニュアルから抜粋してみましょう：&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
	最後に、素晴らしい `calc.el &#039;パッケージでできることについて欲求を&lt;br /&gt;
 刺激するために、いくつかの関数に対する位置 `x&#039; で次数 `n&#039;のテイラー級数を&lt;br /&gt;
 計算する表を示します。 &lt;br /&gt;
&lt;br /&gt;
     |---+-------------+---+-----+--------------------------------------|&lt;br /&gt;
     |   | 関数        | n | x   | 結果                                  |&lt;br /&gt;
     |---+-------------+---+-----+--------------------------------------|&lt;br /&gt;
     | # | exp(x)      | 1 | x   | 1 + x                                |&lt;br /&gt;
     | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |&lt;br /&gt;
     | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |&lt;br /&gt;
     | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |&lt;br /&gt;
     | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |&lt;br /&gt;
     | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |&lt;br /&gt;
     |---+-------------+---+-----+--------------------------------------|&lt;br /&gt;
     #+TBLFM: $5=taylor($2,$4,$3);n3&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Org mode は、行においてパイプ &#039;&#039;&#039;|&#039;&#039;&#039; がホワイトスペース以外の最初の文字のとき、テーブルと認識します。前のテキストでは、線を描きませんでした。セル内の内容、または &#039;&#039;&#039;|-&#039;&#039;&#039; のあとに &#039;&#039;&#039;TAB&#039;&#039;&#039; が押されたとき、線が自動的に描かれています。結果列も手動では記述しておらず、最後の行の calc 式から計算されています。&#039;&#039;&#039;C-u C-c C-c&#039;&#039;&#039; を使うことで、テーブル内のすべての値を再計算することができます。&lt;br /&gt;
&lt;br /&gt;
TODO ファイルと同様に、行と列を操作するキーバインディングがあります。{{ic|Alt}} + 矢印キーで、列と行を移動することができます。&lt;br /&gt;
&lt;br /&gt;
より深く詳細を知るには、公式マニュアルを参照してください: &#039;&#039;&#039;C-h i m Org mode RET&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
=== リファクタリングとスマート補完 ===&lt;br /&gt;
&lt;br /&gt;
(Eclipse などの) IDE が大抵備えているプログラミング機能が必要な場合、[http://cedet.sourceforge.net/semantic.shtml Semantic] ツールが役に立ちます。Semantic は Emacs の標準ディストリビューションに含まれています。現在 C, C++, Scheme, Javascript, Java, HTML, Make がサポートされています。現在のサポート状況は [http://cedet.sourceforge.net/languagesupport.shtml CEDET のページ] で確認できます。&lt;br /&gt;
&lt;br /&gt;
Semantic がサポートする好みのプログラミング言語で書かれたファイルを開きます。そして Semantic マイナーモードを起動します。&lt;br /&gt;
 M-x semantic-mode&lt;br /&gt;
&lt;br /&gt;
Semantic は、あなたのファイルに含まれるライブラリ (たとえば C では、ほとんどの場合、標準ライブラリ) を2,3秒パースします。&lt;br /&gt;
&lt;br /&gt;
==== 機能 ====&lt;br /&gt;
&lt;br /&gt;
一旦完了すると、素晴らしい Semantic の機能が使えます。&lt;br /&gt;
;スマート補完&lt;br /&gt;
&#039;&#039;&#039;C-c , SPC&#039;&#039;&#039; を押すことで、ポイントにあるシンボルを補完することができます。それが引数の場合、型が正しいかチェックされます。&lt;br /&gt;
&lt;br /&gt;
;シンボルにジャンプする&lt;br /&gt;
&#039;&#039;&#039;C-c , j&#039;&#039;&#039; を押すことでシンボルを入力するプロンプトを表示し、その定義元にジャンプします。&#039;&#039;&#039;TAB&#039;&#039;&#039; で自動補完ができます。文字 &#039;&#039;&#039;J&#039;&#039;&#039; を押すと、シンボルを複数ファイルに渡って探索します。&lt;br /&gt;
&lt;br /&gt;
;シンボルの呼び出しをリスト表示する&lt;br /&gt;
&#039;&#039;&#039;C-c , g&#039;&#039;&#039; を押すことでシンボルを入力するプロンプトを表示し、参照されている場所のリストを表示します。&#039;&#039;&#039;n&#039;&#039;&#039; と &#039;&#039;&#039;p&#039;&#039;&#039; を押すことで結果表示を巡回できます。&#039;&#039;&#039;RET&#039;&#039;&#039; を押すことで詳細をトグルし、参照箇所で再度 &#039;&#039;&#039;RET&#039;&#039;&#039; を押すことで参照元にジャンプします。&#039;&#039;&#039;G&#039;&#039;&#039; を押すことで、入力したシンボルの場所を複数ファイルに対してリスト表示します。&lt;br /&gt;
&lt;br /&gt;
;リファクタリング&lt;br /&gt;
最初に前述のコマンドでリファクタリングしたいシンボルの使用先をリスト化します。&#039;&#039;&#039;(&#039;&#039;&#039; を押すと、シンボルに対するマクロ定義を開始します。これは実際、リファクタリングに比べてより非常に強力です。なぜなら、シンボルに任意の関数を適用したり、周囲のシンボルに作用することさえしたりできます。&#039;&#039;&#039;C-x )&#039;&#039;&#039; を押すことで、マクロ定義を終了し、&#039;&#039;&#039;E&#039;&#039;&#039; キーにて実行します。&lt;br /&gt;
&lt;br /&gt;
;シンボルの説明&lt;br /&gt;
以下の関数を呼び出すことで、シンボルの詳細を表示します。&lt;br /&gt;
 semantic-ia-show-summary&lt;br /&gt;
これは複雑なデータ構造とプロトタイプに対して非常に有用です 。デフォルトではキーバインドがありません。&lt;br /&gt;
&lt;br /&gt;
==== 設定 ====&lt;br /&gt;
&lt;br /&gt;
以下に、サポートされているすべてのプログラミング言語で Semantic を使用するためのサンプル設定を示します。キーバインディングのと表示設定の例です。 &lt;br /&gt;
&lt;br /&gt;
 ;; ghost 表示での Semantic (M-n と M-p で完了をブラウズできます)&lt;br /&gt;
 (semantic-mode 1)&lt;br /&gt;
 (define-key my-keys-minor-mode-map (kbd &amp;quot;C-c , d&amp;quot;) &#039;semantic-ia-show-summary)&lt;br /&gt;
 (setq semantic-complete-inline-analyzer-displayor-class &#039;semantic-displayor-ghost)&lt;br /&gt;
&lt;br /&gt;
特定の言語に対して特化した設定を追加することもできます。ここでは C のために：&lt;br /&gt;
 (add-hook&lt;br /&gt;
  &#039;c-mode-hook&lt;br /&gt;
  (lambda ()&lt;br /&gt;
    (local-set-key (kbd &amp;quot;M-TAB&amp;quot;) &#039;semantic-complete-analyze-inline)&lt;br /&gt;
    (local-set-key &amp;quot;.&amp;quot; &#039;semantic-complete-self-insert)&lt;br /&gt;
    (local-set-key &amp;quot;&amp;gt;&amp;quot; &#039;semantic-complete-self-insert)))&lt;br /&gt;
&lt;br /&gt;
==== 文献 ====&lt;br /&gt;
&lt;br /&gt;
Emacs から直接 info マニュアルにアクセスすることが可能です: &#039;&#039;&#039;C-h i m Semantic RET&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
=== Emacs を git のマージツールとして使う ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、git はマージツールとして Emacs の Emerge モードをサポートしています。しかしながら、Ediff モードの方をより好むかもしれません。不幸にも、このモードは技術的な理由により git によってサポートされていません。Ediff モードを使用する方法はまだあります。emacs call 上で以下の elisp コードを評価します。&lt;br /&gt;
&lt;br /&gt;
{{hc|.gitconfig|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[mergetool.ediff]&lt;br /&gt;
    cmd = emacs --eval \&amp;quot; (progn (defun ediff-write-merge-buffer () (let ((file ediff-merge-store-file)) (set-buffer ediff-buffer-C) (write-region (point-min) (point-max) file) (message \\\&amp;quot;Merge buffer saved in: %s\\\&amp;quot; file) (set-buffer-modified-p nil) (sit-for 1))) (setq ediff-quit-hook &#039;kill-emacs ediff-quit-merge-hook &#039;ediff-write-merge-buffer) (ediff-merge-files-with-ancestor \\\&amp;quot;$LOCAL\\\&amp;quot; \\\&amp;quot;$REMOTE\\\&amp;quot; \\\&amp;quot;$BASE\\\&amp;quot; nil \\\&amp;quot;$MERGED\\\&amp;quot;))\&amp;quot; &lt;br /&gt;
&lt;br /&gt;
[merge]&lt;br /&gt;
	tool = ediff&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
コマンドは1行で書かれなければならない点に注意してください。&lt;br /&gt;
上の例では、Emacs を新たに起動します。より早く起動するために emacsclient を使いたいかもしれませんが、推奨されていません。なぜなら Ediff 呼び出しは実際にはクリーンではないためで、現在の Emacs セッションを混乱させる可能性があります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;-q&#039;&#039;&#039; オプションを使用して、即席で起動することができます。設定の一部を残したまま Emacs を素早く起動するには、Emacs を以下のように呼び出します。&lt;br /&gt;
  emacs -q -l ~/.emacs-light&lt;br /&gt;
ここで、Ediff のために必要なことのみを記した軽量な設定ファイルがロードされます。&lt;br /&gt;
&lt;br /&gt;
このトリックおよび Ediff の問題点についての詳細は、[http://kerneltrap.org/mailarchive/git/2007/7/1/250424 kerneltrap.org] および [https://stackoverflow.com/questions/1817370/using-ediff-as-git-mergetool stackoverflow] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Caps Lock キーを Control キーとして使う ===&lt;br /&gt;
いわゆる &#039;emacs 小指&#039; にならないようにこちらの挙動を好むユーザーもいます。X で試用してみたいときは、次を実行:&lt;br /&gt;
 $ setxkbmap -option &#039;ctrl:nocaps&#039;&lt;br /&gt;
&lt;br /&gt;
また、キーを&#039;&#039;&#039;交換&#039;&#039;&#039;するには、次を実行:&lt;br /&gt;
 $ setxkbmap -option &#039;ctrl:swapcaps&#039;&lt;br /&gt;
&lt;br /&gt;
永続的に設定したくなったら、{{ic|.xinitrc}} ファイルに上のコマンドを追加してください。&lt;br /&gt;
&lt;br /&gt;
リージョンを小文字から大文字にする必要がある場合は、デフォルトの {{ic|C-x C-u}} キーバインディングを使って下さい、{{ic|upcase-region}} 関数が呼び出されます。&lt;br /&gt;
&lt;br /&gt;
Caps Lock がない場合は、両方の &amp;quot;Shift&amp;quot; にマッピングしてください:&lt;br /&gt;
 $ setxkbmap -option &amp;quot;shift:both_capslock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
一部のデスクトップ環境にはキーボードのマッピングを変更するためのグラフィカルなツールが含まれています。例えば [[Plasma|Plasma 5]] ならシステム設定を開いて入力デバイスをクリックしてください。キーボードを選択して高度な設定タブから Caps Lock を Ctrl として使用するように設定できます。&lt;br /&gt;
&lt;br /&gt;
== パッケージ ==&lt;br /&gt;
&lt;br /&gt;
Emacs の機能はサードパーティ製のパッケージで拡張できます。公式にサポートされているパッケージマネージャとして {{ic|package.el}} が組み込まれていますが、Emacs のコミュニティメンバーによって書かれたパッケージマネージャが他にも存在します。{{ic|package.el}} は {{ic|package-archives}} 変数を使ってパッケージを検索します。デフォルトでは [https://elpa.gnu.org/ Emacs Lisp Package Archive (ELPA)] が含まれています。{{ic|M-x list-packages}} で Emacs が認識している全てのパッケージが列挙されたバッファが作成されます。マニュアル ({{ic|[https://www.gnu.org/software/emacs/manual/html_node/emacs/Packages.html (info &amp;quot;(emacs) Packages&amp;quot;)]}}) にはさらに詳しい情報が載っています。&lt;br /&gt;
&lt;br /&gt;
サードパーティ製のパッケージのアーカイブを追加することもできます。[https://melpa.org/ MELPA] が広く使われています。&lt;br /&gt;
&lt;br /&gt;
人気の拡張の多くは {{ic|[community]}} リポジトリのパッケージや [[AUR]] からインストールできます。大抵の場合、パッケージの名前の前に &#039;emacs-&#039; が付きますが (例: {{Pkg|emacs-lua-mode}})、常にそうなっているわけではありません (例: {{AUR|auctex}})。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Arch Linux の Wiki を編集している場合は [[Emacs Mediawiki]] パッケージが役に立ちます。}}&lt;br /&gt;
&lt;br /&gt;
パッケージによっては設定ファイルに変更を加えないと機能が有効にならない場合があります。例えば、{{AUR|auctex}} をインストールしたときは、設定ファイルに以下を追加:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
(load &amp;quot;auctex.el&amp;quot; nil t t)&lt;br /&gt;
(load &amp;quot;preview-latex.el&amp;quot; nil t t)}}&lt;br /&gt;
&lt;br /&gt;
パッケージのソースコードや README で有効化する方法が書かれているはずです。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== Emacs が &#039;Undefined color: &amp;quot;WINDOW_FOREGROUND&amp;quot;&#039; というエラーメッセージで起動しない ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mcpp}} パッケージまたは {{Pkg|gcc}} パッケージをインストールする必要があります。&#039;&#039;xrdb&#039;&#039; は [[X resources]] を前処理するために C のプリプロセッサ &#039;&#039;cpp&#039;&#039; を使用します。C のプリプロセッサがインストールされていない場合、&#039;&#039;xrdb&#039;&#039; は C のプリプロセッサを実行しないため WINDOW_FOREGROUND が16進数のカラーコードに展開されません。&lt;br /&gt;
&lt;br /&gt;
=== カラー出力の問題 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、Emacs シェルはカラー表示に使われるエスケープシーケンスをそのまま表示してしまいます。つまり、カラー出力がされるべきところに変な記号が表示されます。&lt;br /&gt;
&lt;br /&gt;
この問題を解決するには以下を {{ic|~/.emacs}} に記述してください:&lt;br /&gt;
 (add-hook &#039;shell-mode-hook &#039;ansi-color-for-comint-mode-on)&lt;br /&gt;
&lt;br /&gt;
=== X ウィンドウでの文字の表示問題 ===&lt;br /&gt;
&lt;br /&gt;
X ウィンドウで emacs を起動した時にメインウィンドウの文字が全て黒縁の白四角になってしまう場合 (対応するフォントがインストールされていない文字を表示したときと同じような記号)、{{Pkg|xorg-fonts-75dpi}} や {{Pkg|xorg-fonts-100dpi}} をインストールして X ウィンドウを再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== 起動が遅い ===&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[#systemd ユニットとして|systemd ユニットとして]] Emacs を起動する方法でも起動時間を短縮できます。}}&lt;br /&gt;
&lt;br /&gt;
しばしば起動時間が遅くなる原因は2つあります。&lt;br /&gt;
&lt;br /&gt;
どちらが原因なのか調べるために、次のコマンドで Emacs を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -q&lt;br /&gt;
&lt;br /&gt;
このコマンドでも Emacs の起動が遅い場合、[[#不適切なネットワーク設定|不適切なネットワーク設定]]を参照してください。そうでない場合は、ほぼ確実に .emacs に問題があります。&lt;br /&gt;
&lt;br /&gt;
* {{ic|/etc/hosts}} の設定が間違っていると、Emacs の起動が5秒以上遅くなることになります。詳しくはネットワーク設定ガイドの &#039;[[ネットワーク設定#ホストネームの設定|ホストネームの設定]]&#039; を見てください。&lt;br /&gt;
&lt;br /&gt;
* A simple way to search for the cause is to comment-out (i.e., prefix lines with &#039;;&#039;) suspect sections of your {{ic|~/.emacs}} (or {{ic|~/.emacs.d/init.el}}) then start Emacs again to see if there&#039;s any change.  Keep in mind use of &amp;quot;require&amp;quot; and &amp;quot;load&amp;quot; can slow the startup down, especially when used with larger extensions.  They should, as a rule, only be used when their target is either: needed once Emacs starts or provides little more than &amp;quot;autoloads&amp;quot; for an extension.  Otherwise, use the &#039;autoload function directly.  For example, instead of:&lt;br /&gt;
&lt;br /&gt;
 (require &#039;anything)&lt;br /&gt;
&lt;br /&gt;
you might use:&lt;br /&gt;
&lt;br /&gt;
 (autoload &#039;anything &amp;quot;anything&amp;quot; &amp;quot;Select anything&amp;quot; t)&lt;br /&gt;
&lt;br /&gt;
=== Cannot open load file: ... ===&lt;br /&gt;
&lt;br /&gt;
The most common cause of this error is the &#039;load-path&#039; variable not including the path to the directory within which the extension is located.  To solve this, add the appropriate path to the list to be searched prior to attempting to load the extension:&lt;br /&gt;
&lt;br /&gt;
  (add-to-list &#039;load-path &amp;quot;/path/to/directory/&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
When attempting to use packages for extensions and Emacs has been configured with a prefix other than &#039;/usr&#039;, the load-path will need to be updated.  Place the following in {{ic|~/.emacs}} prior to the instructions provided by the package:&lt;br /&gt;
&lt;br /&gt;
  (add-to-list &#039;load-path &amp;quot;/usr/share/emacs/site-lisp&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
If compiling Emacs by hand, keep in mind that the default prefix is &#039;/usr/local&#039;.&lt;br /&gt;
&lt;br /&gt;
=== デッドアクセントキーの問題: &#039;&amp;lt;dead-acute&amp;gt; is undefined&#039; ===&lt;br /&gt;
&lt;br /&gt;
このバグについて Google で検索すると、次のリンクが見つかります:&lt;br /&gt;
https://lists.gnu.org/archive/html/help-gnu-emacs/2009-05/msg00167.html&lt;br /&gt;
&lt;br /&gt;
Explaining the problem: in recent versions of&lt;br /&gt;
b72&lt;br /&gt;
 Emacs, the normal way to use accent keys doesn&#039;t work as expected. Trying to accent a word like &#039;fiancé&#039; will produce the message above.&lt;br /&gt;
&lt;br /&gt;
A way to solve it is just put the line above on your startup file, {{ic|~/.emacs}}:&lt;br /&gt;
&lt;br /&gt;
   (require &#039;iso-transl)&lt;br /&gt;
&lt;br /&gt;
And no, it isn&#039;t a bug, but a feature of new Emacs versions. Reading the subsequent messages about it on the mail list, we found it (https://lists.gnu.org/archive/html/help-gnu-emacs/2009-05/msg00179.html):&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;It seems that nothing is loaded automatically because there is a choice betwee iso-transl and iso-acc. Both seem to provide an input method with C-x 8 or Alt-&amp;lt;accent&amp;gt; prefix, but what you and I are doing is just pressing a dead key (^, ´, `, ~, ¨) for the accent and then another key to &amp;quot;compose&amp;quot; the accented character. And there is no Alt key used in this! And according to documentation it seems be appropriate for 8-bit encodings, so it should be pretty useless in UTF-8. I reported this bug when it was introduced, but the bug seems to be classified as a feature ... Maybe it&#039;s just because the file is auto-loaded though pretty useless. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== C-M-% やその他のバインディングが emacs nox で動作しない ===&lt;br /&gt;
&lt;br /&gt;
これはターミナルが Xorg よりも制限的であることが原因です。ただし、ターミナルによっては多くのバインディングを扱うことができることがあります。2つの解決法が考えられます:&lt;br /&gt;
* グラフィカルバージョンを使用する。&lt;br /&gt;
* サポートされているバインディングに変更する。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
{{hc|.emacs|&lt;br /&gt;
(global-set-key (kbd &amp;quot;C-M-y&amp;quot;) &#039;query-replace-regexp)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Emacs がフリーズする ===&lt;br /&gt;
&lt;br /&gt;
シングルスレッドであるがゆえに、Emacs は様々な操作でブロックします。フリーズが発生する状況は様々です。例えば、Emacs はあなたからの入力を待っているのかもしれません (例えばあるフレームでミニバッファを開いているのに他のフレームで作業しようとしている場合など)。あるいは、Emacs は完了するまで時間のかかるコードを実行中なのかもしれません。あるいはバグを踏んだという可能性もあります。Emacs プロセスを殺さずに Emacs のブロックを解除する方法は複数存在します。&lt;br /&gt;
&lt;br /&gt;
* {{ic|C-g}} を押してみる。Emacs が行っていることによっては、複数回押す必要があります。&lt;br /&gt;
* {{ic|ESC ESC ESC}} を押してみる。&lt;br /&gt;
* 他のターミナルで {{ic|killall -SIGUSR2 emacs}} を実行する。&lt;br /&gt;
&lt;br /&gt;
=== Emacs-nox の出力が汚い ===&lt;br /&gt;
&lt;br /&gt;
When working in a terminal, the color, indentation, or anything related to the output might become crazy. This is (probably?) because Emacs was sent a special character at some point which may conflict with the current terminal.&lt;br /&gt;
If this happens you can do {{ic|M-x redraw-display}}, which will redraw the terminal&#039;s display. If this problem happens frequently, you might want to bind the command to a key, e.g. by putting something like&lt;br /&gt;
 (global-set-key (kbd &amp;quot;&amp;lt;f7&amp;gt;&amp;quot;) &#039;redraw-display)&lt;br /&gt;
in your .emacs file.&lt;br /&gt;
&lt;br /&gt;
Graphical Emacs does not suffer from this issue.&lt;br /&gt;
&lt;br /&gt;
=== emacs ターミナルにおかしなエスケープ数字 (utf-8) が表示される ===&lt;br /&gt;
&lt;br /&gt;
{{ic|.bashrc}} または {{ic|.zshrc}} で以下の変数をエクスポートしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.bashrc|2=&lt;br /&gt;
export LANG=&amp;quot;en_US.UTF-8&amp;quot;&lt;br /&gt;
export LC_ALL=&amp;quot;en_US.UTF-8&amp;quot;&lt;br /&gt;
export TERM=xterm-256color&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
小文字の utf を使っていることがエラーの原因です (例: en_US.utf-8)。&lt;br /&gt;
&lt;br /&gt;
利用可能なロケールは {{ic|locale -a}} で確認できます。&lt;br /&gt;
&lt;br /&gt;
=== tmux で emacs を使っているときに Shift + 矢印キーが動作しない ===&lt;br /&gt;
&lt;br /&gt;
まず [[tmux]] の設定で xterm-keys を有効にしてください:&lt;br /&gt;
{{hc|.tmux.conf|&lt;br /&gt;
setw -g xterm-keys on&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
しかしながら、この設定は他のキーコンビネーションを破壊します。それを修正するために、以下を emacs の設定に記述します:&lt;br /&gt;
{{hc|~/.emacs|&lt;br /&gt;
(defadvice terminal-init-screen&lt;br /&gt;
  ;; The advice is named `tmux&#039;, and is run before `terminal-init-screen&#039; runs.&lt;br /&gt;
  (before tmux activate)&lt;br /&gt;
  ;; Docstring.  This describes the advice and is made available inside emacs;&lt;br /&gt;
  ;; for example when doing C-h f terminal-init-screen RET&lt;br /&gt;
  &amp;quot;Apply xterm keymap, allowing use of keys passed through tmux.&amp;quot;&lt;br /&gt;
  ;; This is the elisp code that is run before `terminal-init-screen&#039;.&lt;br /&gt;
  (if (getenv &amp;quot;TMUX&amp;quot;)&lt;br /&gt;
    (let ((map (copy-keymap xterm-function-map)))&lt;br /&gt;
    (set-keymap-parent map (keymap-parent input-decode-map))&lt;br /&gt;
(set-keymap-parent input-decode-map map))))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://github.com/tmux/tmux/blob/master/FAQ#L242 tmux FAQ] を参照。&lt;br /&gt;
&lt;br /&gt;
=== KDE でウィンドウのリサイズがおかしい ===&lt;br /&gt;
KDE ユーザーには Emacs のウィンドウが正しくリサイズされないという現象がおこることがあります。リサイズした部分が透過されマウスでクリックしても下のウィンドウがクリックされます。この挙動を修正するには、KDE の GTK3 テーマを oxygen-gtk 以外のテーマに変更してください。例えば、{{Pkg|gtk3}} に含まれている Emacs テーマを使って下さい。&lt;br /&gt;
&lt;br /&gt;
KDE で Emacs を完全に最大化するには、タイトルバーの Emacs アイコンをクリックして、More Actions &amp;gt; Special Window Settings を選択してください。そして &amp;quot;Size &amp;amp; Position&amp;quot; タブで &amp;quot;Obey geometry restrictions&amp;quot; を選択して、ドロップダウンメニューで &amp;quot;Force&amp;quot; を選んで右のラジオボタンで &amp;quot;No&amp;quot; を選んで下さい。&lt;br /&gt;
&lt;br /&gt;
== 派生 ==&lt;br /&gt;
&lt;br /&gt;
Emacs の実装は多数存在します。おそらく GNU/Emacs が一番ポピュラーです。&lt;br /&gt;
&lt;br /&gt;
軽量な Emacs 互換のテキストエディタは Arch のリポジトリや [[AUR]] にあります。&lt;br /&gt;
&lt;br /&gt;
=== mg ===&lt;br /&gt;
&lt;br /&gt;
mg (旧名 MicroGnuEmacs) は C で書かれた軽量な Emacs の実装です。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mg}} パッケージから入手できますが、上流の [http://homepage.boetes.org/software/mg/ ページ] からソースをダウンロードすることも可能です。mg は UTF-8 をサポートしていません。&lt;br /&gt;
&lt;br /&gt;
=== zile ===&lt;br /&gt;
&lt;br /&gt;
公式ウェブ[https://www.gnu.org/software/zile/ ページ]によると &amp;quot;GNU Zile は軽量な Emacs クローンです。Zile は Zile Is Lossy Emacs の略となっています。Zile は出来る限り Emacs に近づくように書かれており、きっと全ての Emacs ユーザーの手に馴染むでしょう&amp;quot;。Zile は UTF-8 をサポートしていません。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|zile}} パッケージからインストールできます。&lt;br /&gt;
&lt;br /&gt;
最新の tarball は公式の GNU [http://ftp.sh.cvut.cz/MIRRORS/gnu/pub/gnu/zile/ ミラー] から落とせます。&lt;br /&gt;
&lt;br /&gt;
=== uemacs ===&lt;br /&gt;
&lt;br /&gt;
Linus Torvalds によるカスタム版 Micro-emacs。{{AUR|uemacs-git}} でインストール可能。&lt;br /&gt;
&lt;br /&gt;
最新 (2005) の tarball は [ftp://ftp.cs.helsinki.fi/pub/Software/Local/uEmacs-PK/ こちら] にあります。&lt;br /&gt;
&lt;br /&gt;
=== remacs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;remacs&#039;&#039;&#039; はコミュニティによる Emacs の Rust 移植です。{{AUR|remacs-git}} パッケージでインストールできます。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ GNU Emacs ホームページ]&lt;br /&gt;
* [https://www.gnu.org/software/emacs/manual/emacs.html GNU Emacs マニュアル]&lt;br /&gt;
* [http://www.emacswiki.org/cgi-bin/wiki/ Emacs Wiki]&lt;br /&gt;
* [http://wikemacs.org WikEmacs - 読みやすいが不完全な Emacs wiki]&lt;br /&gt;
* [http://www2.lib.uchicago.edu/keith/tcl-course/emacs-tutorial.html Emacs とそのショートカットの有用な紹介]&lt;br /&gt;
* [https://d0edfcdc0ccc1cd13cdab5eb986fb92e8660dbef.googledrive.com/host/0B6LMD0u8OhYYZEotN2QyR1hwR1k/ Emacs 教会 (Google ドライブ)]&lt;br /&gt;
* [https://www.gnu.org/software/emacs/refcards/pdf/refcard.pdf 公式リファレンスカード]&lt;br /&gt;
* [[EXWM]] - Emacs X Window Manager&lt;/div&gt;</summary>
		<author><name>がおびん</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Emacs&amp;diff=22490</id>
		<title>Emacs</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Emacs&amp;diff=22490"/>
		<updated>2021-11-24T12:56:14Z</updated>

		<summary type="html">&lt;p&gt;がおびん: /* カスタマイズ */ 英語の記述を日本語に翻訳した。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:テキストエディタ]]&lt;br /&gt;
[[Category:コンソールアプリケーション]]&lt;br /&gt;
[[Category:GNU]]&lt;br /&gt;
[[de:Emacs]]&lt;br /&gt;
[[en:Emacs]]&lt;br /&gt;
[[es:Emacs]]&lt;br /&gt;
[[fr:Emacs]]&lt;br /&gt;
[[sr:Emacs]]&lt;br /&gt;
[[zh-hans:Emacs]]&lt;br /&gt;
[[Wikipedia:ja:Emacs|Emacs]] は拡張性があり、カスタマイズ可能な、セルフドキュメント方式のリアルタイム表示エディタです。Emacs のコアには、多数の Emacs の内蔵機能や拡張を実装するのに使われている言語である、[[Wikipedia:ja:Emacs Lisp|Emacs Lisp]] のインタプリタが存在します。GNU Emacs 22 から GTK がデフォルトの X ツールキットとして使われていますが、CLI 環境でも負けず劣らずに機能します。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
Emacs には複数の種類があります (時々 &#039;&#039;emacsen&#039;&#039; と呼ばれます)。その中で最も一般的なのは [https://www.gnu.org/software/emacs/ GNU Emacs] です。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|emacs}} パッケージを[[インストール]]してください。いつもターミナルで作業をする場合は、GTK+ がいらない {{Pkg|emacs-nox}} の方が良いでしょう (サウンドなどの装飾的な機能もありません)。&lt;br /&gt;
ただしテキストバージョンにはいくつか欠点が存在します: サポートしている色やフォント処理の機能 (実行中にサイズを変更したり、単一の文章で複数のサイズを使うなど) が少なくなっています。その上、emacs-nox には Speedbar や GUD (デバッグ環境) などの高度な機能について制限があり、複雑なフェイスを使おうとするとやや遅くなります (&amp;quot;フェイス&amp;quot;とは Emacs におけるテキストの外観のことです)。&lt;br /&gt;
&lt;br /&gt;
== Emacs の実行 ==&lt;br /&gt;
&lt;br /&gt;
emacs を起動する前に、終了の方法を知っておきましょう (特にターミナルで実行する場合): {{ic|Ctrl+x}}{{ic|Ctrl+c}} キーシーケンスを使って下さい。&lt;br /&gt;
&lt;br /&gt;
Emacs を起動するには次を実行:&lt;br /&gt;
&lt;br /&gt;
 $ emacs&lt;br /&gt;
&lt;br /&gt;
また、コンソールから使うには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -nw&lt;br /&gt;
&lt;br /&gt;
(.emacs を使わずに) 高速でロードして CLI で編集するには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -Q -nw&lt;br /&gt;
&lt;br /&gt;
nox バージョンをインストールしている場合、&#039;emacs&#039; と &#039;emacs -nw&#039; は同じになります。&lt;br /&gt;
&lt;br /&gt;
ファイル名を指定することですぐにファイルを開くこともできます:&lt;br /&gt;
&lt;br /&gt;
 $ emacs filename.txt&lt;br /&gt;
&lt;br /&gt;
=== 色無し ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、Emacs はハイパーリンクが濃青で表示されるカラーテーマで起動します。Emacs をカラーテーマやスキームを使わずに起動するには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -nw --color=no&lt;br /&gt;
&lt;br /&gt;
このコマンドでは全てのテキストがターミナルの前景色だけで表示されます。通常は黒背景に白字か、白背景に黒字となります。&lt;br /&gt;
&lt;br /&gt;
=== デーモンとして ===&lt;br /&gt;
&lt;br /&gt;
毎回 {{ic|.emacs}} ファイルをロードするため Emacs を起動するときには時間が多少かかります。また、別のインスタンスから同じファイルにアクセスしたいと思うときもあるかもしれません。バージョン23から、Emacs はユーザーが接続できるデーモンとして起動することが可能になっています。Emacs をデーモンとして実行するには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs --daemon&lt;br /&gt;
&lt;br /&gt;
起動時にデーモンを実行してウィンドウをデーモンに接続すると良いでしょう。さらに、グラフィカル・コンソールクライアント&#039;&#039;両方を&#039;&#039;同意時にデーモンに接続して GUI を素早く起動することも可能です。&lt;br /&gt;
&lt;br /&gt;
デーモンに接続したいときは場合は次のコマンドを使って下さい (グラフィカル環境から実行したときはグラフィカルクライアントが、tty などのコンソールから実行したときはコンソールクライアントが起動します):&lt;br /&gt;
&lt;br /&gt;
 $ emacsclient&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境にいるときもコンソールクライアントを使いたい場合は次のコマンドを使って下さい:&lt;br /&gt;
&lt;br /&gt;
 $ emacsclient -t&lt;br /&gt;
&lt;br /&gt;
さらに、{{ic|-a &amp;quot;&amp;quot;}} パラメータを追加することもできます。&lt;br /&gt;
これで、最初にコマンドを実行したときは、デーモンとして emacs が起動します。バックグラウンドで動き続けるので後で呼び出した時に起動時間が早くなります (バッファも残り続けます)。&lt;br /&gt;
&lt;br /&gt;
ターミナルや他のプログラムからクライアントを起動した場合、呼び出すプログラムを使うことで Emacs クライアントを閉じなくてもクライアントを使い続けることができます。そのためには、 {{ic|-n}} ({{ic|--no-wait}}) パラメータを使ってクライアントを起動します:&lt;br /&gt;
 $ emacsclient -nc&lt;br /&gt;
&lt;br /&gt;
Mutt や Git などのプログラムは (コミットメッセージを読むための) エディタが終了するまで待機するため、{{ic|-n}} パラメータを使うことはできません。デフォルトエディタが設定されている場合、他のエディタを指定する必要があるかもしれません (例: {{ic|emacsclient -a &amp;quot;&amp;quot; -t}})。&lt;br /&gt;
&lt;br /&gt;
以下のシェル設定が利用できます:&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&lt;br /&gt;
alias emt=&#039;emacsclient -nc -a &amp;quot;&amp;quot;&#039;&lt;br /&gt;
alias emc=&#039;emacsclient -t -a &amp;quot;&amp;quot;&#039;&lt;br /&gt;
EDITOR=&#039;emacsclient -a &amp;quot;&amp;quot;&#039;&lt;br /&gt;
}}&lt;br /&gt;
ただしこれには注意事項があります: コマンドのスペースの関係で多数のプログラムが外部エディタをロードすることはできません。&lt;br /&gt;
&lt;br /&gt;
スクリプトを書くほうがもっと使い勝手が良く信頼性があります:&lt;br /&gt;
{{hc|/usr/local/bin/emc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
if [ -z &amp;quot;$DISPLAY&amp;quot; ]; then&lt;br /&gt;
    IS_GRAPHICAL=true&lt;br /&gt;
else&lt;br /&gt;
    IS_GRAPHICAL=$(emacs --batch -Q --eval=&#039;(if (fboundp &#039;&amp;quot;&#039;&amp;quot;&#039;tool-bar-mode) (message &amp;quot;true&amp;quot;) (message &amp;quot;false&amp;quot;))&#039; 2&amp;gt;&amp;amp;1)&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if $IS_GRAPHICAL; then&lt;br /&gt;
    emacsclient -a &amp;quot;&amp;quot; -nc &amp;quot;$@&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    emacsclient -a &amp;quot;&amp;quot; -t &amp;quot;$@&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
スクリプトは実行可能属性を付けて下さい:&lt;br /&gt;
 # chmod 755 /usr/local/bin/emc&lt;br /&gt;
&lt;br /&gt;
これで &#039;emc&#039; が期待通りに動作するようになります。このクライアントをデフォルトのエディタにしたいときは上記のスクリプトで {{ic|EDITOR}} 環境変数を設定すれば OK です。&lt;br /&gt;
&lt;br /&gt;
=== systemd ユニットとして ===&lt;br /&gt;
&lt;br /&gt;
Emacs 26.1 から systemd ユニットが含まれています。Emacs のインストール後に以下のように有効化してください:&lt;br /&gt;
&lt;br /&gt;
  $ systemctl --user enable --now emacs&lt;br /&gt;
&lt;br /&gt;
Emacs サーバーを実行したいユーザーで上記のコマンドを実行してください。サービスの起動後、Emacs の準備ができます。ユニットファイルは {{ic|/usr/lib/systemd/user/emacs.service}} に存在します。ユニットファイルの中身は以下のようになっています:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/lib/systemd/user/emacs.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Emacs text editor&lt;br /&gt;
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStart=/usr/bin/emacs --fg-daemon&lt;br /&gt;
ExecStop=/usr/bin/emacsclient --eval &amp;quot;(kill-emacs)&amp;quot;&lt;br /&gt;
Environment=SSH_AUTH_SOCK=%t/keyring/ssh&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
systemd のユーザーユニットはログインシェル ({{ic|~/.bash_profile}} など) から環境変数を継承しないため、{{ic|~/.pam_environment}} に変数を設定すると良いでしょう。詳しくは [[Systemd/ユーザー]]を参照。&lt;br /&gt;
&lt;br /&gt;
emacs をデーモンとして起動する場合、{{ic|VISUAL}} と {{ic|EDITOR}} 環境変数を {{ic|emacsclient}} に設定することでプログラムからエディタを起動するときにエディタの新しいインスタンスを起動するかわりに emacsclient が使われるようになります。外部エディタを使用するプログラムとしてメールプログラム (メッセージを編集するため) や Git (コミットメッセージを編集するため)、less ({{ic|v}} コマンドで表示されたファイルを編集するため) などが存在します。emacsclient の {{ic|-n}} ({{ic|--nowait}}) オプションは使用しないでください。基本的にプログラムはエディタが終了したときに編集が完了したと認識するためです。&lt;br /&gt;
&lt;br /&gt;
GUI の Emacs のスタートメニューエントリなども emacs ではなく emacsclient が使われるように変更することを推奨します。&lt;br /&gt;
&lt;br /&gt;
== クイックスタート ==&lt;br /&gt;
&lt;br /&gt;
Emacs は複雑ですが、そのカスタマイズと拡張性のレベルによってもたらされる利益を理解し始めるのにそう時間はかからないでしょう。さらに、幅広い拡張を利用することで Emacs はあらゆる種類の文章編集のための強力な環境に姿を変えることができます。&lt;br /&gt;
&lt;br /&gt;
Emacs には素晴らしいチュートリアルが内蔵されており、スプラッシュ画面の最初のリンクをクリックしてアクセスできます。メニューから &#039;&#039;Help-&amp;gt;Emacs Tutorial&#039;&#039; を選択するか &#039;F1&#039; の後に &#039;t&#039; を押して下さい。このページは Emacs を始めるのに追加的なリソースになるように書かれています。&lt;br /&gt;
&lt;br /&gt;
初心者にもエキスパートにも役立つ、リファレンスカードのセットも Emacs に含まれています、{{ic|/usr/share/emacs/&amp;lt;version&amp;gt;/etc/refcards/}} を見て下さい (&amp;lt;version&amp;gt; はあなたの emacs のバージョンに置き換えて下さい)。&lt;br /&gt;
&lt;br /&gt;
=== 基本的な用語と慣習 ===&lt;br /&gt;
&lt;br /&gt;
始めは慣れないと思うかもしれませんが Emacs にはいくつか特別な用語法と約束事があり、必要に応じて紹介していきます。ただ、Emacs を使うにあたって当然知ってるべきとされるような、基本的な用語についてはあらかじめ説明しておいたほうが良いでしょう。&lt;br /&gt;
&lt;br /&gt;
真っ先に知るべきは&#039;&#039;バッファ&#039;&#039;の概念です。バッファは Emacs の中のデータを表します。例えば、Emacs でファイルを開いたとき、ディスクからファイルから読み込まれてバッファに中身が保存され、バッファを編集して後でディスクに上書き保存することができます。バッファはテキストに限られず、画像やウィジェットなども含めます。作業中でもバッファでアプリケーションを表示することすらできます。こういう考え方もできます: ディスク上のデータは&#039;ファイル&#039;であり、一方、Emacs 上のデータは&#039;バッファ&#039;である。&lt;br /&gt;
&lt;br /&gt;
Emacs におけるキーシーケンスの決まり事も見慣れないかもしれません。即ち:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-x&#039;&#039;&#039; は Control-x を示します&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x&#039;&#039;&#039; は Meta-x を示します&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;Meta&#039; は多くの場合 Alt キーに相当します。また、Esc キーを使うことも可能です。}}&lt;br /&gt;
&lt;br /&gt;
例えば、Emacs を終了するには次のキーシーケンスを使います: &#039;&#039;&#039;C-x C-c&#039;&#039;&#039;。これは &amp;quot;Control を押しながら &#039;x&#039; を押す。手を離す。Control を押しながら &#039;c&#039; を押す&amp;quot; と読み替えることができます。Emacs にはメニューバーが存在しますが、キーシーケンスを使いこなせるように練習することを推奨します。以下から、Emacs で使われるキーバインディングと慣習について説明します。&lt;br /&gt;
&lt;br /&gt;
=== 移動 ===&lt;br /&gt;
&lt;br /&gt;
カーソルの移動は他のグラフィカルエディタとよく似ています。マウスや方向キーを使ってカーソルの位置 (Emacs では&#039;&#039;ポイント&#039;&#039;と呼ばれます) を変更することができます。一般的な移動コマンドは方向キーで出来ますが、Emacs には他にも便利なバインディングが存在します。1文字先に移動するには &#039;&#039;&#039;C-f&#039;&#039;&#039; を使用して、1文字前に移動するには &#039;&#039;&#039;C-b&#039;&#039;&#039; を使用します。&#039;&#039;&#039;C-n&#039;&#039;&#039; と &#039;&#039;&#039;C-p&#039;&#039;&#039; でそれぞれ次の行と前の行に移動できます。基本的に、マウスや方向キーを使うよりもこれらのキーシーケンスを使うことが推奨されています。&lt;br /&gt;
&lt;br /&gt;
当然、Emacs には、単語や文単位で移動できる、もっと高度な移動コマンドが用意されています。&#039;&#039;&#039;M-f&#039;&#039;&#039; は1単語先に移動して &#039;&#039;&#039;M-b&#039;&#039;&#039; は1単語前にポイント移動します。同じく、&#039;&#039;&#039;M-e&#039;&#039;&#039; は1文先にポイント移動して &#039;&#039;&#039;M-a&#039;&#039;&#039; は前に戻ります。&lt;br /&gt;
&lt;br /&gt;
ここまでは、紹介した全ての移動コマンドはポイントに関連しています。&#039;&#039;&#039;M-&amp;lt;&#039;&#039;&#039; を使うことでバッファの最初にポイントを移動することができ、逆に、&#039;&#039;&#039;M-&amp;gt;&#039;&#039;&#039; はバッファの最後に移動します。特定の行番号にポイントを移動するには、&#039;&#039;&#039;M-g g&#039;&#039;&#039; を使います。&#039;&#039;&#039;M-g g&#039;&#039;&#039; は移動したい行番号を尋ねます。また、現在の行の先頭と末尾に移動するには、&#039;&#039;&#039;C-a&#039;&#039;&#039; あるいは &#039;&#039;&#039;C-e&#039;&#039;&#039; を使って下さい。&lt;br /&gt;
&lt;br /&gt;
{{Note|上記のコマンドを含む全てのコマンドのキーバインドは、現在有効になっているモードによって&#039;&#039;多少&#039;&#039;ながら変わってくる可能性があります。しかしながら、同一の機能を実行するのにコマンドを置き換えることはあまりありません。詳しくは[[#モード|モード]]を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
=== ファイルとバッファ ===&lt;br /&gt;
&lt;br /&gt;
Emacs にはファイルを操作するためのコマンドが用意されています。このセクションでは最もよく使われるコマンドを紹介します。ファイルを開くには &#039;&#039;&#039;C-x C-f&#039;&#039;&#039; を使います (Emacs ではこのコマンドを &#039;find-file&#039; と呼びます)。指定されたファイルが存在しなかった場合、Emacs は空のバッファを開きます。バッファを保存するとバッファの中身が入ったファイルが作成されます。&#039;&#039;&#039;C-x C-s&#039;&#039;&#039; を使うことでバッファを保存できます。別のファイル名でバッファを保存するには、&#039;&#039;&#039;C-x C-w&#039;&#039;&#039; を使って下さい (this is a mnemonic for the command &#039;write-file&#039;)。新しいファイル名が尋ねられ、ディスクにファイルが書き込まれます。&#039;&#039;&#039;C-x s&#039;&#039;&#039; で全てのバッファを保存することも可能です。最後に保存されていた状態からバッファに変更が加えられている場合、保存を実行するかどうか訊くプロンプトが表示されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ファイルに対応するバッファが既に開かれている場合 &#039;&#039;&#039;C-x C-f&#039;&#039;&#039; はディスクからファイルを読み込みません。ディスクからファイルを再度読み込むには、(1) まずバッファを閉じて (&#039;&#039;&#039;C-x k&#039;&#039;&#039;)、それからファイルを開くか (&#039;&#039;&#039;C-x C-f&#039;&#039;&#039;) あるいは (2) &#039;&#039;&#039;M-x revert-buffer&#039;&#039;&#039; を使ってディスク上のデータに戻して下さい。それか (3) &#039;&#039;&#039;C-x C-v&#039;&#039;&#039; でファイルを現在のバッファにロードするか (4) &#039;&#039;&#039;C-x RET r RET&#039;&#039;&#039; で同一コードでファイルを再読み込みしてください。}}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;find-file&amp;quot; や &amp;quot;write-file&amp;quot; などのインタラクティブなコマンドでは Emacs ウィンドウの一番下の行に入力が求められます。この行のことは&#039;&#039;ミニバッファ&#039;&#039;と呼びます。ミニバッファでは基本的な編集コマンドを使うことができ、多くの *nix シェルで利用できるのと同じようなタブ補完機能があります。&#039;&#039;&#039;&amp;lt;TAB&amp;gt;&#039;&#039;&#039; を2回連続で押すと補完リストが表示され、マウスを使ってリストから補完候補を選択することも可能です。ミニバッファでの補完はコマンドやファイル名など様々な形で使えます。&lt;br /&gt;
&lt;br /&gt;
ミニバッファには履歴機能も存在します。前に入力したコマンドは &#039;&#039;&#039;Up Arrow&#039;&#039;&#039; または &#039;&#039;&#039;M-p&#039;&#039;&#039; を使うことで再呼び出しできます。&lt;br /&gt;
&lt;br /&gt;
ミニバッファは &#039;&#039;&#039;C-g&#039;&#039;&#039; を押すことでいつでも終了できます。&lt;br /&gt;
&lt;br /&gt;
ファイルを複数開いたら、ファイルを切り替える手段が必要です。Emacs 内に既に存在するバッファにファイルを開くと、Emacs はそのバッファに切り替えます。しかしながらこれは効率的とは言えません。Emacs には表示するバッファを選択する &#039;&#039;&#039;C-x b&#039;&#039;&#039; が存在します (タブ補完が使えます)。存在しないバッファの名前を入力すると、その名前で新しいバッファが作成されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|前のバッファに切り替えるには &#039;&#039;&#039;C-x b &amp;lt;RET&amp;gt;&#039;&#039;&#039; を使います。前のバッファがデフォルトだからです。}}&lt;br /&gt;
&lt;br /&gt;
全てのバッファのリストを &#039;&#039;&#039;C-x C-b&#039;&#039;&#039; で表示することができます。バッファが必要なくなったときは &#039;&#039;&#039;C-x k&#039;&#039;&#039; で削除することが可能です。&lt;br /&gt;
&lt;br /&gt;
=== 編集 ===&lt;br /&gt;
&lt;br /&gt;
Emacs には多数の編集コマンドが存在します。まだ紹介していない最も重要なコマンドはおそらく &#039;undo&#039; でしょう。&#039;&#039;&#039;C-_&#039;&#039;&#039; または &#039;&#039;&#039;C-/&#039;&#039;&#039; で実行することができます。基本的に移動コマンドには対応する削除コマンドが存在します。例えば &#039;&#039;&#039;M-&amp;lt;backspace&amp;gt;&#039;&#039;&#039; で後方の単語を削除することができ、{{ic|M-d}} で前方の単語を削除できます。行末または文章の終わりまで削除するにはそれぞれ {{ic|C-k}} または {{ic|M-k}} を使います。&lt;br /&gt;
&lt;br /&gt;
1行は80文字を超えていはいけないという経験則が存在します。1行の長さを長くしすぎないことで、特にウィンドウの縁で改行してしまうような場合に、可読性を維持することができます。改行の自動挿入 (または削除) は Emacs では詰め込み (&#039;&#039;filling&#039;&#039;) と呼ばれます。{{ic|M-q}} を使うことでパラグラフを折り返させることができます。&lt;br /&gt;
&lt;br /&gt;
文字列と単語はそれぞれ {{ic|C-t}} と {{ic|M-t}} で置き換えることが可能です。例えば {{ic|Hello World!}} を {{ic|World! Hello}} と置き換えられます。&lt;br /&gt;
&lt;br /&gt;
単語の大文字小文字はすぐに修正できます。{{ic|M-l}} は単語を小文字に変換し ({{ic|HELLO}} は {{ic|hello}})、{{ic|M-u}} は単語を大文字に変換します ({{ic|hello}} は {{ic|HELLO}})。そして {{ic|M-c}} は単語の最初の文字を大文字にして他の文字は小文字にします ({{ic|hElLo}} は {{ic|Hello}})。&lt;br /&gt;
&lt;br /&gt;
=== kill と yank とリージョン ===&lt;br /&gt;
&lt;br /&gt;
リージョンとは、2点間にあるテキストです。2点のうちの1つは、&#039;&#039;マーク&#039;&#039; と呼ばれ、もう1つはポイントです。 &#039;&#039;&#039;C-&amp;lt;SPC&amp;gt;&#039;&#039;&#039; によってマークの位置がセットされ、その後でポイントが移動することでリージョンが作られます。GNU Emacs 23.1 以降、リージョンはデフォルトで可視化されます。リージョン上で動作する多くのコマンドがあり、もっともよく使われるコマンドに &#039;&#039;killing&#039;&#039; コマンドがあります。&lt;br /&gt;
&lt;br /&gt;
Emacs では、カット＆ペーストはそれぞれ、&#039;&#039;kill&#039;&#039; と &#039;&#039;yank&#039;&#039; と呼ばれます。1文字以上の文字を削除するコマンド（ &#039;&#039;&#039;C-k&#039;&#039;&#039; や &#039;&#039;&#039;M-d&#039;&#039;&#039; といった上で記述したコマンドも含めて）は、実際にテキストをカットし、&#039;&#039;kill-ring&#039;&#039; として知られるものに追加します。kill-ring は、単に kill されたテキストのリストです。kill-ring は、デフォルトでは直近60個の kill されたテキストを保存します。kill に成功すると、リストの先頭に接続されて保存されます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-w&#039;&#039;&#039; と &#039;&#039;&#039;M-w&#039;&#039;&#039; によって、それぞれリージョンの kill とコピーができます。&lt;br /&gt;
&lt;br /&gt;
kill されたテキストをバッファに挿入する（&#039;yanking&#039; として知られます）ためには、&#039;&#039;&#039;C-y&#039;&#039;&#039; を使います。 &#039;&#039;&#039;C-y&#039;&#039;&#039; は、複数回使用することで、繰り返しテキストを yank できます。前述の通り、以前の kill は、リストに保存されます。しかし、&#039;&#039;&#039;C-y&#039;&#039;&#039; は、そのうち最初のものしか取得しません。それより前の kill は、&#039;&#039;&#039;M-y&#039;&#039;&#039; によってアクセスすることができます。これによって、&#039;yank&#039; で挿入されたテキストをリストの先頭に移動させます。 &#039;&#039;&#039;M-y&#039;&#039;&#039; は &#039;&#039;&#039;C-y&#039;&#039;&#039; に続けて使われなければならず、kill-ring をたどるために何度でも使えます。&lt;br /&gt;
&lt;br /&gt;
=== 検索と置換 ===&lt;br /&gt;
&lt;br /&gt;
文字列を検索することは、テキストの編集において一般的な作業です。検索は、&#039;&#039;&#039;C-s&#039;&#039;&#039; (後方検索) または &#039;&#039;&#039;C-r&#039;&#039;&#039; (前方検索) によって実行されます。これらのコマンドは、検索する文字列を入力するプロンプトを表示します。検索は1文字入力するごとに実行され、タイプごとに次に（あるいは前に）一致した文字列にマッチします。次の検索結果に行くには C-s を、前の検索結果に行くには C-r を押します。  もし探しているものが見つかったのであれば、&#039;&#039;&#039;&amp;lt;RET&amp;gt;&#039;&#039;&#039; を押すことで検索を終了できます。一方、検索を開始した場所に戻りたければ &#039;&#039;&#039;C-g &#039;&#039;&#039; を押します。&lt;br /&gt;
&lt;br /&gt;
いったん検索が完了すると (たとえば &#039;&#039;&#039;C-g&#039;&#039;&#039; 等で中断していない場合)、検索された文字列は、次の検索のデフォルト検索文字となります。検索された文字を使用するには、後方検索なら &#039;&#039;&#039;C-s C-s&#039;&#039;&#039; , 前方検索なら &#039;&#039;&#039;C-r C-r&#039;&#039;&#039; をそれぞれ押します。&lt;br /&gt;
&lt;br /&gt;
I-search には、いくつかの有用なコマンドがあります。 &#039;&#039;&#039;M-e&#039;&#039;&#039; によって、検索文字列の編集が可能です。 &#039;&#039;&#039;M-c&#039;&#039;&#039; によって、大文字小文字を区別するか、しないかを切り替えることができます。&lt;br /&gt;
&lt;br /&gt;
正規表現検索は、検索の開始コマンド以外、上述の検索と同様に動作します。 &#039;&#039;&#039;C-M-s&#039;&#039;&#039; あるいは &#039;&#039;&#039;C-M-r&#039;&#039;&#039; によって、それぞれ正規表現による後方検索、前方検索を開始します。いったん正規表現検索を開始すると、文字列検索と同様に &#039;&#039;&#039;C-s&#039;&#039;&#039; と &#039;&#039;&#039;C-r&#039;&#039;&#039; を後方検索、前方検索に使用することができます。&lt;br /&gt;
&lt;br /&gt;
検索に加え、文字列や正規表現を置換することができます（それぞれ &#039;&#039;&#039;M-%&#039;&#039;&#039; および &#039;&#039;&#039;C-M-%&#039;&#039;&#039; によって実行されます）。元のテキストと変換後のテキスト用にプロンプトが表示され、それからハイライトされた一致箇所に対する動作のために別のプロンプトが表示されます。多くのオプションが使用できますが（使用できるオプションの完全なリストは &#039;&#039;&#039;?&#039;&#039;&#039; を押してください）、もっとも一般的に使われるのは、変換を実行する &#039;&#039;&#039;y&#039;&#039;&#039; と、スキップする &#039;&#039;&#039;n&#039;&#039;&#039; 、そしてハイライトされている文字列を含め、以降すべての一致に対して変換する &#039;&#039;&#039;!&#039;&#039;&#039; になります。&lt;br /&gt;
&lt;br /&gt;
=== 前置引数 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-u&#039;&#039;&#039; は、&#039;universal-argument&#039; コマンドに対応づけられています。&#039;universal-argument&#039; を渡すことによって、より多くの情報をコマンドに提供できます（この情報を &#039;前置引数&#039; と呼びます）。たとえば&lt;br /&gt;
&lt;br /&gt;
 C-u 80 %&lt;br /&gt;
&lt;br /&gt;
は、%記号の行を挿入します。また、&lt;br /&gt;
&lt;br /&gt;
 C-u 4 M-d&lt;br /&gt;
&lt;br /&gt;
は4単語を削除します。この場合、&#039;&#039;&#039;M-d&#039;&#039;&#039; によって実行されるコマンドへ、要求する単語の数を渡しています。&lt;br /&gt;
&lt;br /&gt;
universal argument は、&#039;&#039;&#039;M-&amp;lt;数字&amp;gt;&#039;&#039;&#039; によって少し早く入力することができます。&lt;br /&gt;
&lt;br /&gt;
 M-80 %&lt;br /&gt;
&lt;br /&gt;
=== インデント ===&lt;br /&gt;
&lt;br /&gt;
インデントは、1行をインデントする &#039;&#039;&#039;&amp;lt;TAB&amp;gt;&#039;&#039;&#039; やリージョンをインデントする &#039;&#039;&#039;C-M-\&#039;&#039;&#039; によって実行されます。リージョンが有効（&#039;&#039;たとえば&#039;&#039;ハイライトされている）場合、&#039;&#039;&#039;&amp;lt;TAB&amp;gt;&#039;&#039;&#039; はリージョンもインデントします。&lt;br /&gt;
&lt;br /&gt;
テキストがどのようにインデントされるかは、正確には有効になっている &#039;&#039;メジャーモード&#039;&#039; に依ります。メジャーモードは、しばしば特定の種類のテキストをインデントするときに特化したインデントスタイルを定義します。（より詳しくは [[#モード|Modes]] を見てください。）&lt;br /&gt;
&lt;br /&gt;
いくつかの場合、ファイルタイプに対して適したメジャーモードがありません。その場合、手動でのインデントが必要になります。リージョンを作成（ [[#kill と yank とリージョン|kill と yank とリージョン]] 参照）し、&#039;&#039;&#039;C-u &amp;lt;n&amp;gt; C-x &amp;lt;TAB&amp;gt;&#039;&#039;&#039; でインデントを実行してください。（ここで、&#039;&amp;lt;n&amp;gt;&#039; はリージョンに含まれるテキストがインデントされる列の数です。）例えば、&lt;br /&gt;
&lt;br /&gt;
リージョンのインデントを4列追加する:&lt;br /&gt;
&lt;br /&gt;
 C-u 4 C-x &amp;lt;TAB&amp;gt;&lt;br /&gt;
&lt;br /&gt;
リージョンのインデントを2列減らす:&lt;br /&gt;
&lt;br /&gt;
 C-u -2 C-x &amp;lt;TAB&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ウィンドウとフレーム ===&lt;br /&gt;
&lt;br /&gt;
Emacs は、多くのファイルを同時に編集するために便利であるよう設計されています。これは、Emacs のインタフェースを3つの階層にわけることで実現されています。つまり、すでに紹介済みのバッファ、&#039;&#039;ウィンドウ&#039;&#039; と &#039;&#039;フレーム&#039;&#039; です。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ウィンドウ&#039;&#039;&#039; とは、Emacsでバッファを表示している場所のことです。1つのウィンドウは、一度に1つのバッファしか表示できません。しかし、1つのバッファは複数のウィンドウに表示できます。それぞれのウィンドウの下には、&#039;&#039;モードライン&#039;&#039; があります。モードラインには、そのバッファの情報が表示されています。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;フレーム&#039;&#039;&#039; とは、Emacs の&amp;quot;ウィンドウ&amp;quot;（一般的な意味。たとえば最近のデスクトップパラダイムの意味での &#039;ウィンドウ&#039;）です。フレームには、タイトルバー、メニューバー、1つ以上の &#039;ウィンドウ&#039; (Emacs 的な意味。たとえば上で定義した &#039;ウィンドウ&#039;) が含まれます。&lt;br /&gt;
&lt;br /&gt;
以降では、これらの単語は Emacs に存在するものでの定義として使用します。&lt;br /&gt;
&lt;br /&gt;
ウィンドウを水平あるいは垂直に分割するには、それぞれ &#039;&#039;&#039;C-x 2&#039;&#039;&#039; あるいは &#039;&#039;&#039;C-x 3&#039;&#039;&#039; を使います。これは、現在のフレームにもう1つのウィンドウを生成する効果があります。複数のウィンドウ間を巡回するには、&#039;&#039;&#039;C-x o&#039;&#039;&#039; を使用します。&lt;br /&gt;
&lt;br /&gt;
ウィンドウ分割の反対は、ウィンドウを削除することです。現在のウィンドウを削除するには &#039;&#039;&#039;C-x 0&#039;&#039;&#039; を使い、現在のウィンドウ以外を削除するには &#039;&#039;&#039;C-x 1&#039;&#039;&#039; を使います。&lt;br /&gt;
&lt;br /&gt;
ウィンドウと同様に、フレームも生成や削除が可能です。 &#039;&#039;&#039;C-x 5 2&#039;&#039;&#039; によってフレームを生成できます。 &#039;&#039;&#039;C-x 5 0&#039;&#039;&#039; によって現在のフレームを削除し、&#039;&#039;&#039;C-x 5 1&#039;&#039;&#039; によってr現在のフレーム以外のすべてのフレームを削除します。&lt;br /&gt;
&lt;br /&gt;
{{Note|これらのコマンドはバッファには影響しません。たとえば、ウィンドウを削除しても表示されているバッファは kill されません。}}&lt;br /&gt;
&lt;br /&gt;
=== モード ===&lt;br /&gt;
&lt;br /&gt;
Emacs モードは Emacs Lisp で書かれた拡張であり、接続されているバッファの挙動を制御します。大抵の場合、インデントやシンタックスハイライト、テキストを編集するときのキーバインドを提供します。洗練されたモードは Emacs を完全な IDE (統合開発環境) に変貌させます。Emacs は基本的にファイルの拡張子でモードをロードすべきか判断します。&lt;br /&gt;
&lt;br /&gt;
シェルスクリプトを編集するのに役立つモードとして sh-mode, line-number-mode, column-number-mode が存在します。同時に使用することができ、以下のコマンドで呼び出します:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x sh-mode &amp;lt;RET&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x column-number-mode &amp;lt;RET&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
line-number-mode はデフォルトで有効になっていますが、コマンドを再度実行することでオンとオフを切り替えられます:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x line-number-mode &amp;lt;RET&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
sh-mode は、&#039;&#039;メジャーモード&#039;&#039; の1つです。メジャーモードは Emacs を調整し、時には、特定の種類のテキストの編集用に特別なコマンドを提供します。それぞれのバッファでは、メジャーモードは1つだけが有効です。シンタックスハイライトやインデントサポートに加えて、sh-mode はシェルスクリプトを書く助けになるいくつかのコマンドを定義しています。以下に、それらの内のいくつかを示します。&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-c (&#039;&#039;&#039;	 関数定義を挿入する&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c C-f&#039;&#039;&#039;	 &#039;for&#039; ループを挿入する&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c TAB&#039;&#039;&#039;	 &#039;if&#039; 文を挿入する&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c C-w&#039;&#039;&#039;	 &#039;while&#039; ループを挿入する&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c C-l&#039;&#039;&#039;	 1 から n までの番号付きループを挿入する&lt;br /&gt;
&lt;br /&gt;
&#039;line-number-mode&#039; と &#039;column-number-mode&#039; は&#039;&#039;マイナーモード&#039;&#039;です。マイナーモードはメジャーモードを拡張することができ、同時に任意の数のマイナーモードを有効にできます。&lt;br /&gt;
&lt;br /&gt;
=== マニュアル ===&lt;br /&gt;
&lt;br /&gt;
Emacs を本当にマスターしたいのであれば、一番よく読むべき文章はやはり公式マニュアルです:&lt;br /&gt;
* Emacs: 完全な Emacs ユーザーマニュアル&lt;br /&gt;
* Emacs FAQ&lt;br /&gt;
* Emacs Lisp Intro: プログラミング言語を使用したことがない場合&lt;br /&gt;
* Elisp: プログラミング言語をよく知っている場合&lt;br /&gt;
&lt;br /&gt;
これらは、 [http://www.gnu.org/software/emacs/manual/ GNU.org] から PDF として入手できます。あるいは Emacs 自身にて組み込みの &#039;info&#039; リーダー &#039;&#039;&#039;C-h i&#039;&#039;&#039; を用いて直接読むこともできます。本を選択するには &#039;&#039;&#039;m&#039;&#039;&#039; を押してください。&lt;br /&gt;
&lt;br /&gt;
ユーザーの幾人かは、&#039;info&#039; で読むことを好みます。便利なショートカットであり、段落はウィンドウ幅に調整され、フォントは現在の画面解像度に調整されるためです。何人かは目に優しいと気づいています。最後に、本の内容を任意の Emacs バッファへ簡単にコピーでき、さらに例示されている Lisp コードを直接実行することさえできます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;info&#039;&#039;&#039; 本について、もっとよく知りたいなら、&#039;&#039;&#039;C-h i m info &amp;lt;RET&amp;gt;&#039;&#039;&#039; を実行してください。&lt;br /&gt;
info モードで &#039;&#039;&#039;?&#039;&#039;&#039; を押すと、ショートカットの簡易リストが表示されます。&lt;br /&gt;
&lt;br /&gt;
== カスタマイズ ==&lt;br /&gt;
&lt;br /&gt;
Emacs は {{ic|~/.emacs}} を編集するか &#039;&#039;&#039;M-x customize&#039;&#039;&#039; を使うことで設定をすることができます。このセクションでは手動で {{ic|~/.emacs}} を編集する方に焦点をあて、いくつかのカスタマイズ例を示すことで、一般的な Emacs の設定をデモンストレーションします。customize コマンドは調整を行うためのシンプルなインターフェイスを提供しますが、おそらく Emacs に慣れてくるにつれて制約を感じるようになるでしょう。&lt;br /&gt;
&lt;br /&gt;
ここでの例は、すべて Emacs が動作している間に動作します。Emacs 内で式を評価するには、以下を使います。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-M-x&#039;&#039;&#039; ポイントがある式を評価する&lt;br /&gt;
&lt;br /&gt;
あるいは、&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-x C-e&#039;&#039;&#039; ポイントの直前の &#039;)&#039; を最後のカッコとする式を評価する&lt;br /&gt;
&lt;br /&gt;
何人かのユーザーは、プロンプトで &#039;yes&#039; や &#039;no&#039; をタイプすると、すぐに疲れます。その代わりに &#039;y&#039; や &#039;n&#039; を使うために:&lt;br /&gt;
&lt;br /&gt;
 (defalias &#039;yes-or-no-p &#039;y-or-n-p)&lt;br /&gt;
&lt;br /&gt;
カーソルの点滅を止めるには、次を使用:&lt;br /&gt;
&lt;br /&gt;
 (blink-cursor-mode -1)&lt;br /&gt;
&lt;br /&gt;
同じく、前のセクションにある column-number-mode を有効にするには:&lt;br /&gt;
&lt;br /&gt;
 (column-number-mode 1)&lt;br /&gt;
&lt;br /&gt;
前の2つのコマンドに類似性があるのは偶然ではありません。blink-cursor-mode と column-number-mode は、共にマイナーモードです。ルールとして、マイナーモードは正の数を引数にとると有効になり、負の数で無効になります。引数が省略された時、マイナーモードは on/off を切り替えます。&lt;br /&gt;
&lt;br /&gt;
マイナーモードのその他いくつかの例を示します。以下はそれぞれ、スクロールバー、メニューバー、ツールバーを無効にします。&lt;br /&gt;
&lt;br /&gt;
 (scroll-bar-mode -1)&lt;br /&gt;
 (menu-bar-mode -1)&lt;br /&gt;
 (tool-bar-mode -1)&lt;br /&gt;
&lt;br /&gt;
変数 &#039;auto-mode-alist&#039; によって、特定のファイル名に対してデフォルトで使われるメジャーモードを変更することができます。以下の例では、&#039;.tut&#039; および &#039;.req&#039; ファイルのデフォルトのメジャーモードを &#039;text-mode&#039; にします。&lt;br /&gt;
&lt;br /&gt;
 (setq auto-mode-alist&lt;br /&gt;
   (append&lt;br /&gt;
     &#039;((&amp;quot;\\.tut$&amp;quot; . text-mode)&lt;br /&gt;
       (&amp;quot;\\.req$&amp;quot; . text-mode))&lt;br /&gt;
     auto-mode-alist))&lt;br /&gt;
&lt;br /&gt;
設定は、基底となるモードごとに適用することもできます。基本的な方法は、&#039;&#039;hook&#039;&#039; に関数を追加することです。例えば、text-mode でだけインデントをタブの代わりに強制的にスペースを使用するためには:&lt;br /&gt;
&lt;br /&gt;
 (add-hook &#039;text-mode-hook (lambda () (setq indent-tabs-mode nil)))&lt;br /&gt;
&lt;br /&gt;
同様に、場所によらずインデントにてスペースを使用するには:&lt;br /&gt;
&lt;br /&gt;
 (setq-default indent-tabs-mode nil)&lt;br /&gt;
&lt;br /&gt;
キーバインドは、2つの方法で調整できます。1つ目の方法は &#039;define-key&#039; です。&#039;define-key&#039; は、コマンドに対するキーバインドを作成できますが、1つのモードに対してだけ作成します。以下の例では、&#039;&#039;&#039;F8&#039;&#039;&#039; に、&#039;text-mode&#039; バッファでは行末のホワイトスペースを除去するよう割り当てます。&lt;br /&gt;
&lt;br /&gt;
 (define-key text-mode-map (kbd &amp;quot;&amp;lt;f8&amp;gt;&amp;quot;) &#039;delete-trailing-whitespace)&lt;br /&gt;
&lt;br /&gt;
もう1つの方法は、&#039;global-set-key&#039; です。これによって、場所によらずキーにコマンドを割り当てることができます。&#039;query-replace-regexp&#039; (&#039;&#039;&#039;C-M-%&#039;&#039;&#039;) を &#039;&amp;lt;f7&amp;gt;&#039; に割り当てるには:&lt;br /&gt;
&lt;br /&gt;
 (global-set-key (kbd &amp;quot;&amp;lt;f7&amp;gt;&amp;quot;) &#039;query-replace-regexp)&lt;br /&gt;
&lt;br /&gt;
他のキーにコマンドを割り当てることは、既存の割当を入れ替えるわけではありません。たとえば、上記例の後、&#039;query-replace-regexp&#039; は、&#039;&#039;&#039;F7&#039;&#039;&#039; と &#039;&#039;&#039;C-M-%&#039;&#039;&#039; の両方に割り当てられます。&lt;br /&gt;
&lt;br /&gt;
Emacs のほとんどすべてがカスタマイズできます。[http://emacswiki.org/ Emacs Wiki] を通して見ることが基礎固めに適しています。&lt;br /&gt;
&lt;br /&gt;
=== マルチ設定 ===&lt;br /&gt;
&lt;br /&gt;
複数の設定を使い、Emacs にどれか一つをロードさせることができます。&lt;br /&gt;
&lt;br /&gt;
例えば、2つの設定ファイルを定義してみましょう。&lt;br /&gt;
&lt;br /&gt;
{{hc|.emacs|&lt;br /&gt;
(load &amp;quot;~/.emacs.d/main&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/functions&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/modes&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/plugins&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/theme&amp;quot; nil t)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これによって、デーモンとしての起動用にフルカスタムをロードします。しかし、&#039;&#039;plugins&#039;&#039; ファイルは巨大で、ロードが遅いです。&#039;&#039;plugins&#039;&#039; 機能が不要な新しい Emacs インスタンスを生成したい場合、&#039;&#039;plugins&#039;&#039; を毎回ロードすることは面倒です。&lt;br /&gt;
&lt;br /&gt;
{{hc|.emacs-light|&lt;br /&gt;
(load &amp;quot;~/.emacs.d/main&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/functions&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/modes&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/theme&amp;quot; nil t)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Emacs を以下のコマンドで起動します。&lt;br /&gt;
 emacs -q -l ~/.emacs-light&lt;br /&gt;
これによって、エイリアスを生成して、呼び出しを簡単にすることができます。&lt;br /&gt;
&lt;br /&gt;
=== ローカル・カスタム変数 ===&lt;br /&gt;
&lt;br /&gt;
設定ファイル内で変数を定義することができます。この変数はファイル内でローカルに変更することができます。&lt;br /&gt;
&lt;br /&gt;
 (defcustom my-compiler &amp;quot;gcc&amp;quot; &amp;quot;Some documentation&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
どんなファイルでもローカル変数を定義するには2つの方法があります。[https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html 完全な詳細のマニュアル ] を参照してください&lt;br /&gt;
&lt;br /&gt;
* {{ic| M-x add-file-local-variable-prop-line}} は、ファイルの先頭に以下のようなコメント行を追加します。&lt;br /&gt;
 // -*- my-compiler:g++; mode:c++ -*-&lt;br /&gt;
* {{ic| M-x add-file-local-variable}} は、ファイルの末尾付近に行を追加します。&lt;br /&gt;
 // Local Variables:&lt;br /&gt;
 // my-compiler: g++&lt;br /&gt;
 // mode: c++&lt;br /&gt;
 // End:&lt;br /&gt;
&lt;br /&gt;
変数の効果を得るためには、{{ic|M-x revert-buffer}} を実行する必要あることに注意してください。&lt;br /&gt;
&lt;br /&gt;
カスタム変数は、デフォルトでは安全でないと考えられています。もしカスタム変数によって再定義されたローカル変数を含むファイルを開こうとすると、Emacs は確認するよう通知します。&lt;br /&gt;
&lt;br /&gt;
変数を安全であるとして宣言することもできます。これによって確認のためのプロンプトを除去することができます。新しい変数が安全と考えられるためには検証されなければならない、と述語を指定する必要があります。&lt;br /&gt;
&lt;br /&gt;
 (defcustom my-compiler &amp;quot;gcc&amp;quot; &amp;quot;Some documentation&amp;quot; :safe &#039;stringp)&lt;br /&gt;
&lt;br /&gt;
この例では、文字列以外の何かにセットしようとすると、Emacs は安全でないと考えます。&lt;br /&gt;
&lt;br /&gt;
=== カスタムカラーとテーマ ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;face&#039;&#039; を使うことで簡単に色をカスタマイズすることができます:&lt;br /&gt;
 (set-face-background  &#039;region                 &amp;quot;color-17&amp;quot;)&lt;br /&gt;
 (set-face-foreground  &#039;region                 &amp;quot;white&amp;quot;)&lt;br /&gt;
 (set-face-bold-p      &#039;font-lock-builtin-face t ) &lt;br /&gt;
&lt;br /&gt;
ポイントがある場所の face の名前を Emacs に表示させることができます。そのためには &#039;&#039;customize-face&#039;&#039; を使います。どのように色、太字、下線、等が設定されているかを示すことができます。&lt;br /&gt;
&lt;br /&gt;
コンソール上の Emacs は、256色を扱うことができます。しかし、それには適したターミナルを使わなければなりません。たとえば URxvt は256色をサポートしています。&#039;&#039;list-colors-display&#039;&#039; によって、サポートされる色の包括的なリストが表示できます。これは強くターミナルに依存します。&lt;br /&gt;
&lt;br /&gt;
=== SyncTeX サポート ===&lt;br /&gt;
&lt;br /&gt;
Emacs は強力な LaTeX エディタです。LaTeX モードを必要に応じて自由に編集・作成することができます。&lt;br /&gt;
&lt;br /&gt;
SyncTeX サポートといった、まだいくつかの挑戦があります。最初に TeX ディストリビューションに SyncTeX があるかを確認する必要があります。もし TeX Live を手動でインストールした場合、&#039;&#039;synctex&#039;&#039; パッケージをインストールする必要があるかもしれません。&lt;br /&gt;
 # umask 022 &amp;amp;&amp;amp; tlmgr install synctex&lt;br /&gt;
&lt;br /&gt;
SyncTeX サポートは、ビューア依存です。ここでは例として Zathura を使用します。他の PDF ビューアを使用する場合、コードを変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
 (defcustom tex-my-viewer &amp;quot;zathura --fork -s -x \&amp;quot;emacsclient --eval &#039;(progn (switch-to-buffer  (file-name-nondirectory \&amp;quot;&#039;\&amp;quot;&#039;\&amp;quot;%{input}\&amp;quot;&#039;\&amp;quot;&#039;\&amp;quot;)) (goto-line %{line}))&#039;\&amp;quot;&amp;quot; &lt;br /&gt;
   &amp;quot;TeX 文書用 PDF ビューア。&lt;br /&gt;
    同じドキュメントを2回起動したこと検出する、または Emacs を&lt;br /&gt;
    閉じても表示を継続するためにビューアを fork したい場合、&lt;br /&gt;
  &lt;br /&gt;
 シンプルなコマンド:&lt;br /&gt;
 &lt;br /&gt;
   zathura --fork&lt;br /&gt;
 &lt;br /&gt;
 SyncTex を用いて pdf を逆検索するために以下が使用できる。&lt;br /&gt;
 &lt;br /&gt;
   emacsclient --eval &#039;(progn (switch-to-buffer  (file-name-nondirectory \&amp;quot;%{input}\&amp;quot;)) (goto-line %{line}))&#039;&lt;br /&gt;
 &lt;br /&gt;
 引用符および二重引用符は必須で、適切にエスケープされなければならない点に注意。&amp;quot;&lt;br /&gt;
 :safe &#039;stringp)&lt;br /&gt;
&lt;br /&gt;
カスタム変数を定義します。もし AucTeX や Emacs 標準の LaTeX-mode を使用しているなら、それに応じてビューアを設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
LaTeX ソースファイルを Emacs で開き、文書をコンパイルし、ビューアを起動します。Zathura が起動します。{{ic|Ctrl+Left click}} を押すと、Emacs は対応する位置にポイントを移動させます。&lt;br /&gt;
&lt;br /&gt;
=== Systemd ファイルのシンタックスハイライト ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/holomorph/systemd-mode systemd-mode] を使うことができます。&lt;br /&gt;
&lt;br /&gt;
もしくは init ファイルに以下を追加することで、簡単に emacs で systemd のファイル (サービスやタイマーなど) をカラー表示できます:&lt;br /&gt;
&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.service\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.timer\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.target\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.mount\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.automount\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.slice\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.socket\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.path\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.netdev\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.network\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.link\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
&lt;br /&gt;
=== emacs-nox のクリップボードサポート ===&lt;br /&gt;
&lt;br /&gt;
emacs-nox で [[Xorg]] クリップボードを使うには、{{Pkg|xclip}} を[[インストール]]して以下の関数を {{ic|~/.emacs}} に追加してください [https://lists.gnu.org/archive/html/help-gnu-emacs/2014-08/msg00189.html]:&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&lt;br /&gt;
;; use xclip to copy/paste in emacs-nox&lt;br /&gt;
(unless window-system&lt;br /&gt;
  (when (getenv &amp;quot;DISPLAY&amp;quot;)&lt;br /&gt;
    (defun xclip-cut-function (text &amp;amp;optional push)&lt;br /&gt;
      (with-temp-buffer&lt;br /&gt;
	(insert text)&lt;br /&gt;
	(call-process-region (point-min) (point-max) &amp;quot;xclip&amp;quot; nil 0 nil &amp;quot;-i&amp;quot; &amp;quot;-selection&amp;quot; &amp;quot;clipboard&amp;quot;)))&lt;br /&gt;
    (defun xclip-paste-function()&lt;br /&gt;
      (let ((xclip-output (shell-command-to-string &amp;quot;xclip -o -selection clipboard&amp;quot;)))&lt;br /&gt;
	(unless (string= (car kill-ring) xclip-output)&lt;br /&gt;
	  xclip-output )))&lt;br /&gt;
    (setq interprogram-cut-function &#039;xclip-cut-function)&lt;br /&gt;
    (setq interprogram-paste-function &#039;xclip-paste-function)&lt;br /&gt;
    ))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|以下を追加することでターミナルマウスサポートも有効にできます:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
;; xterm mouse support&lt;br /&gt;
(require &#039;mouse)&lt;br /&gt;
(xterm-mouse-mode t)&lt;br /&gt;
}}&lt;br /&gt;
[http://www.opensource.apple.com/source/emacs/emacs-51/emacs/lisp/mwheel.el mwheel.el] を参照。}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
前のセクションでは基本的な編集コマンドを説明していますが、それだけでは Emacs の可能性はわかりません。このセクションではより高度なテクニックや機能を紹介します。&lt;br /&gt;
&lt;br /&gt;
ただし全てを説明するとなると長くなりすぎます。そのためこのセクションはあくまで Emacs の雅やかな機能をいくつか&#039;&#039;デモ&#039;&#039;するだけにとどめます。&lt;br /&gt;
&lt;br /&gt;
全ての機能の詳細な説明は[[#ドキュメント|ドキュメント]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== TRAMP ===&lt;br /&gt;
&lt;br /&gt;
TRAMP (Transparent Remote Access, Multiple Protocols) は多数のプロトコルで、リモートファイルに透過的にアクセスすることができる拡張です。ファイル名を入力するときに、特定の形式を入力すると TRAMP が呼びだされます。例:&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/hosts}} を root 権限で開く前に root のパスワードを要求するには:&lt;br /&gt;
&lt;br /&gt;
 C-x C-f /sudo::/etc/hosts&lt;br /&gt;
&lt;br /&gt;
SSH で &#039;myhost&#039; に &#039;myuser&#039; として接続して {{ic|~/example.txt}} ファイルを開くには:&lt;br /&gt;
&lt;br /&gt;
 C-x C-f /ssh:myuser@myhost:~/example.txt&lt;br /&gt;
&lt;br /&gt;
TRAMP のパスは &#039;/[protocol]:[[user@]host]:&amp;lt;file&amp;gt;&#039; という形式で指定します。TRAMP がサポートしているのは上記の例に限りません。詳しくは TRAMP の info マニュアルを参照してください。マニュアルは Emacs に付属しています。&lt;br /&gt;
&lt;br /&gt;
=== キーボードマクロとレジスタ ===&lt;br /&gt;
&lt;br /&gt;
This section will provide a practical demonstration of the use of a couple of more powerful editing features.  Namely, &#039;&#039;keyboard macros&#039;&#039; and &#039;&#039;registers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The aim will be to produce a listing of a series of characters and their corresponding position in this list.  While it is possible to format each of them by hand, this would be slow and error-prone.  Alternatively, some of Emacs&#039; more powerful editing functionality could be leveraged.  Before describing a solution, some details behind the techniques which will be used follow.&lt;br /&gt;
&lt;br /&gt;
The first feature which will be introduced is &#039;&#039;registers&#039;&#039;.  Registers are used to store and retrieve a variety of data types ranging from numbers to window configurations.  Each register is given a name of a single character: this character is used to access the register.&lt;br /&gt;
&lt;br /&gt;
The other which will be demonstrated is &#039;&#039;keyboard macros&#039;&#039;.  A keyboard macro stores a sequence of commands so they can be easily repeated later.  These changes will now be performed step-by-step.&lt;br /&gt;
&lt;br /&gt;
Starting with a buffer containing our set of characters:&lt;br /&gt;
 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&lt;br /&gt;
&lt;br /&gt;
Prepare a register by invoking the `number-to-register&#039; command (&#039;&#039;&#039;C-x r n&#039;&#039;&#039;) then storing the number &#039;0&#039; in register &#039;k&#039;:&lt;br /&gt;
&lt;br /&gt;
 C-x r n k&lt;br /&gt;
&lt;br /&gt;
With point at the beginning of the buffer, start a keyboard macro (&#039;&#039;&#039;C-x (&#039;&#039;&#039;) and begin to format the characters:&lt;br /&gt;
&lt;br /&gt;
 C-x ( C-f M-4 .&lt;br /&gt;
&lt;br /&gt;
Insert (&#039;&#039;&#039;C-x r i&#039;&#039;&#039;) and increment (&#039;&#039;&#039;C-x r +&#039;&#039;&#039;) the register &#039;k&#039;. The prefix argument (&#039;&#039;&#039;C-u&#039;&#039;&#039;) is used to leave point positioned after the inserted text:&lt;br /&gt;
&lt;br /&gt;
 C-u C-x r i k C-x r + k&lt;br /&gt;
&lt;br /&gt;
Complete the formatting by inserting a newline.  Emacs can then repeat that process, beginning from the point where we started defining the keyboard macro, for the rest of the characters.  &#039;&#039;&#039;C-x e&#039;&#039;&#039; completes then invokes the keyboard macro.  The prefix argument, &#039;&#039;&#039;M-0&#039;&#039;&#039;, causes the macro to repeat until it comes across an error.  In this case it aborts once it reaches the end of the buffer.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;RET&amp;gt; M-0 C-x e&lt;br /&gt;
&lt;br /&gt;
The result:&lt;br /&gt;
&lt;br /&gt;
  A....0&lt;br /&gt;
  B....1&lt;br /&gt;
  C....2&lt;br /&gt;
  [...]&lt;br /&gt;
  x....49&lt;br /&gt;
  y....50&lt;br /&gt;
  z....51&lt;br /&gt;
&lt;br /&gt;
If you want to save your macro for later use, you must give it a name and save it to your configuration file:&lt;br /&gt;
 name-last-kbd-macro &lt;br /&gt;
 insert-kbd-macro&lt;br /&gt;
&lt;br /&gt;
All defined macros are stored in the macro ring. To cycle between macros, use&lt;br /&gt;
 &#039;&#039;&#039;C-x C-k C-n&#039;&#039;&#039;  next macro&lt;br /&gt;
 &#039;&#039;&#039;C-x C-k C-p&#039;&#039;&#039;  previous macro&lt;br /&gt;
&lt;br /&gt;
You can also use registers to save virtually anything.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-x r SPC&#039;&#039;&#039; Copy current point (position) to register&lt;br /&gt;
 &#039;&#039;&#039;C-x r w&#039;&#039;&#039;   Copy current window configuration to register.&lt;br /&gt;
 &#039;&#039;&#039;C-x r j&#039;&#039;&#039;   Restore register.&lt;br /&gt;
 &lt;br /&gt;
So if you often work with windows side by side, for different project, you can save the configuration for the different projects and easily switch from one view to the other.&lt;br /&gt;
&lt;br /&gt;
You can list used registers with the &#039;&#039;&#039;list-registers&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== 正規表現 ===&lt;br /&gt;
&lt;br /&gt;
Emacs Manual より: &amp;quot;正規表現 (&#039;&#039;regexp&#039;&#039; と略す) とは、一致する可能性がある一連の (無限個でもよい) 文字列を表現するパターンである&amp;quot;。このセクションでは正規表現自体には深くは立ち入りません (単純に説明しきれない)。そのかわり正規表現のパワーを簡単にデモンストレーションします。詳しい説明は Emacs Manual の [https://www.gnu.org/software/emacs/manual/html_node/elisp/Regular-Expressions.html#Regular-Expressions Regular Expressions] セクションを見て下さい。&lt;br /&gt;
&lt;br /&gt;
Given the same scenario presented above: A list of characters which are to be formatted to represent their respective position in the list. (see [[#キーボードマクロとレジスタ|Keyboard macros and registers]]).  Again, starting with a buffer containing.&lt;br /&gt;
&lt;br /&gt;
 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&lt;br /&gt;
&lt;br /&gt;
At the beginning of the buffer, use &#039;&#039;&#039;C-M-%&#039;&#039;&#039; (if the key-sequence is difficult to perform, it may be more comfortable to use &#039;&#039;&#039;M-x query-replace-regexp&#039;&#039;&#039;).  At the prompt:&lt;br /&gt;
 \(.\)&lt;br /&gt;
which simply matches one character.  Then, when prompted for the replacement:&lt;br /&gt;
 \1....\#^J&lt;br /&gt;
{{Note|&#039;^J&#039; represents where a newline should be placed, it should not be entered into the prompt.  The newline must instead be inserted literally using &#039;&#039;&#039;C-q C-j&#039;&#039;&#039;.}}&lt;br /&gt;
The replacement expression reads: &amp;quot;Insert the matched text between the first set of parentheses (in this case, a single character), followed by 4 periods then insert an automatically incremented number followed by a newline.&lt;br /&gt;
&lt;br /&gt;
Finally, press &#039;&#039;&#039;!&#039;&#039;&#039; to apply this across the entire buffer.  All of the formatting that was performed in the previous section was performed with a single regexp replacement.&lt;br /&gt;
&lt;br /&gt;
=== 矩形選択 ===&lt;br /&gt;
&lt;br /&gt;
先進的なテキストエディタが当然備えているべき強力な機能として、テキストを矩形で選択・編集できるというのがあるでしょう。&lt;br /&gt;
&lt;br /&gt;
Emacs でも矩形選択は可能です。&#039;&#039;&#039;C-SPC&#039;&#039;&#039; で普通にテキストを選択してから、複数の矩形コマンドを使うことができます。&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-x r t&#039;&#039;&#039;  Replace rectangle with text.&lt;br /&gt;
 &#039;&#039;&#039;C-x r k&#039;&#039;&#039;  Kill (and save in kill-ring) rectangle.&lt;br /&gt;
 &#039;&#039;&#039;C-x r y&#039;&#039;&#039;  Yank rectangle.&lt;br /&gt;
 &#039;&#039;&#039;C-x r o&#039;&#039;&#039;  Blank out rectangle.&lt;br /&gt;
&lt;br /&gt;
たとえハイライトされていても、上記のコマンドが矩形の外のテキストに影響を与えることはありません。&lt;br /&gt;
&lt;br /&gt;
=== ブックマーク ===&lt;br /&gt;
&lt;br /&gt;
Emacs は開いたファイルのリストを記録できます。&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-x r m&#039;&#039;&#039; カレントバッファをブックマークに追加。&lt;br /&gt;
 &#039;&#039;&#039;C-x r b&#039;&#039;&#039; ブックマークからバッファを開く。&lt;br /&gt;
 &#039;&#039;&#039;C-x r l&#039;&#039;&#039; ブックマークの確認。&lt;br /&gt;
&lt;br /&gt;
=== Elisp インタプリタ ===&lt;br /&gt;
&lt;br /&gt;
Evaluate an elisp expression using &#039;&#039;&#039;eval-last-sexp&#039;&#039;&#039; (&#039;&#039;&#039;C-x C-e&#039;&#039;&#039;). Emacs always spawns a &#039;&#039;&#039;*scratch*&#039;&#039;&#039; buffer when started. It will not be saved to disk, feel free to add any text / code you want. It is especially useful for elisp evaluation. Note that this buffer starts using &#039;&#039;&#039;lisp-interaction-mode&#039;&#039;&#039; by default.&lt;br /&gt;
&lt;br /&gt;
Alternatively, Emacs provides a top-level elisp interpreter with the &#039;&#039;&#039;ielm&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== スマートなウィンドウ切り替え ===&lt;br /&gt;
&lt;br /&gt;
長い間使っていると &#039;&#039;&#039;C-x o&#039;&#039;&#039; による伝統的なウィンドウ切り替えは面倒かもしれません。&#039;&#039;&#039;windmove&#039;&#039;&#039; コマンドはもっと便利にウィンドウを切り替えることができます。{{ic|Shift}} を押しながら方向キーでウィンドウを指定するだけです。&lt;br /&gt;
&lt;br /&gt;
windmove キーを有効にするには、設定ファイルに以下を記述してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.emacs|&lt;br /&gt;
(when (fboundp &#039;windmove-default-keybindings)&lt;br /&gt;
  (windmove-default-keybindings))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== シェルコマンドの実行 ===&lt;br /&gt;
&lt;br /&gt;
Use &#039;&#039;&#039;M-!&#039;&#039;&#039; to call an external command. Use a prefix argument (&#039;&#039;&#039;C-u M-!&#039;&#039;&#039;) to output the result to current buffer at point.&lt;br /&gt;
&lt;br /&gt;
You can use &#039;&#039;&#039;M-|&#039;&#039;&#039; on a region to use it as input for a command. For instance&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-u M-| sort -u RET&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
will sort region, remove duplicates and replace the region with the result.&lt;br /&gt;
&lt;br /&gt;
=== シェルバッファ ===&lt;br /&gt;
&lt;br /&gt;
You can spawn a shell buffer and execute commands just like you would do in any terminal.&lt;br /&gt;
A classic shell buffer can be spawned with the &#039;&#039;&#039;shell&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
Emacs features a very powerful shell entirely written in Emacs Lisp, the &#039;&#039;&#039;eshell&#039;&#039;&#039;. The major advantage over shells like csh or zsh is that the native shell language is elisp itself. So you can use all advanced feature of elisp for your shell functions.&lt;br /&gt;
&lt;br /&gt;
=== 対応する括弧のハイライト ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;show-paren&#039;&#039;&#039; モードを使うことができます。デフォルトでは、対応する括弧が表示されるまで少し遅延がありますが、&#039;&#039;&#039;show-paren-delay&#039;&#039;&#039; を 0 に設定することでなくすことができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.emacs|&lt;br /&gt;
(setq show-paren-delay 0)&lt;br /&gt;
(show-paren-mode 1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== スペルチェック ===&lt;br /&gt;
&lt;br /&gt;
辞書を選択するには:&lt;br /&gt;
 &#039;&#039;&#039;M-x ispell-change-dictionary&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To check a single work use &#039;&#039;&#039;M-$&#039;&#039;&#039;.&lt;br /&gt;
You can start checking the whole buffer with&lt;br /&gt;
 &#039;&#039;&#039;M-x ispell-buffer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can enable on-the-fly spell checking by enabling the &#039;&#039;&#039;flyspell-mode&#039;&#039;&#039;. For source code files you can restrict the mode to comments by using the  &#039;&#039;&#039;flyspell-prog-mode&#039;&#039;&#039; instead. You will also need the &#039;&#039;aspell&#039;&#039; package for spelling in Emacs. There are corresponding packages for each language, so for English, you&#039;d also want &#039;&#039;aspell-en&#039;&#039; (as well as &#039;&#039;aspell&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== テーブル ===&lt;br /&gt;
&lt;br /&gt;
Emacs comes with some powerful functions to handle and generate tables for various languages. Let&#039;s show an example.&lt;br /&gt;
&lt;br /&gt;
 Fruits  Quantity&lt;br /&gt;
 Apples  5&lt;br /&gt;
 Melons  2&lt;br /&gt;
&lt;br /&gt;
Now select the previous content in a region, and run&lt;br /&gt;
 table-capture&lt;br /&gt;
&lt;br /&gt;
Use two spaces for the column delimiter, and a line break (&#039;&#039;&#039;C-q C-j&#039;&#039;&#039;) for the row delimiter.&lt;br /&gt;
This will lead to the following result.&lt;br /&gt;
&lt;br /&gt;
 +------+--------+&lt;br /&gt;
 |Fruits|Quantity|&lt;br /&gt;
 +------+--------+&lt;br /&gt;
 |Apples|5       |&lt;br /&gt;
 +------+--------+&lt;br /&gt;
 |Melons|2       |&lt;br /&gt;
 +------+--------+&lt;br /&gt;
&lt;br /&gt;
You can revert back the operation with &lt;br /&gt;
 table-release&lt;br /&gt;
There is a lot of handy &#039;&#039;table-*&#039;&#039; functions, like &#039;&#039;table-insert-row&#039;&#039;, &#039;&#039;table-span-cell&#039;&#039;, &#039;&#039;table-widen-cell&#039;&#039;, etc.&lt;br /&gt;
&lt;br /&gt;
Finally, the ultimate purpose of the &#039;&#039;table&#039;&#039; functions is to convert it to the desired markup language.&lt;br /&gt;
Use the &#039;&#039;table-generate-source&#039;&#039; for that.&lt;br /&gt;
For LaTeX, the previous table would result in&lt;br /&gt;
&lt;br /&gt;
 % This LaTeX table template is generated by emacs 24.2.1&lt;br /&gt;
 \begin{tabular}{|l|l|}&lt;br /&gt;
 \hline&lt;br /&gt;
 Fruits &amp;amp; Quantity \\&lt;br /&gt;
 \hline&lt;br /&gt;
 Apples &amp;amp; 5 \\&lt;br /&gt;
 \hline&lt;br /&gt;
 Melons &amp;amp; 2 \\&lt;br /&gt;
 \hline&lt;br /&gt;
 \end{tabular}&lt;br /&gt;
&lt;br /&gt;
Using the table mode you can also do some spreadsheet work like sum on rows and columns, but you will quickly find it limited. Besides it is quite slow. Have a look at the [[#予定表、スプレッドシート、文章作成|org-mode]] for much more powerful possibilities.&lt;br /&gt;
&lt;br /&gt;
=== 予定表、スプレッドシート、文章作成 ===&lt;br /&gt;
&lt;br /&gt;
Emacs can offer powerful office features thanks to the famous and powerful [http://orgmode.org/ Org mode]. This mode is part of the standard Emacs distribution.&lt;br /&gt;
&lt;br /&gt;
Org mode is originally a powerful TODO and Agenda agent, but has quickly evolved to a much wider set of features.&lt;br /&gt;
There is simply too much to tell about Org that we cannot aford even to skim over all the features. So we will only whet your appetite with a few exemples.&lt;br /&gt;
&lt;br /&gt;
Open a new file TODO.org file, Org mode should be loaded. If not, switch to it with &#039;&#039;&#039;M-x org-mode&#039;&#039;&#039;.&lt;br /&gt;
{{hc|TODO.org|&lt;br /&gt;
* First entry&lt;br /&gt;
** Subentry&lt;br /&gt;
   Some comments&lt;br /&gt;
*** Subsubentry&lt;br /&gt;
* Second entry&lt;br /&gt;
  - List item 1&lt;br /&gt;
  - List item 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Now a few useful bindings.&lt;br /&gt;
* &#039;&#039;&#039;TAB&#039;&#039;&#039; to cycle-fold current entry.&lt;br /&gt;
* &#039;&#039;&#039;S-TAB&#039;&#039;&#039; to cycle-fold all entries.&lt;br /&gt;
* &#039;&#039;&#039;M-RET&#039;&#039;&#039; to start a new item on the same level as the current one.&lt;br /&gt;
* &#039;&#039;&#039;M-&amp;lt;left&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;M-&amp;lt;right&amp;gt;&#039;&#039;&#039; to change level.&lt;br /&gt;
* &#039;&#039;&#039;M-&amp;lt;up&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;M-&amp;lt;down&amp;gt;&#039;&#039;&#039; to move item together with all its subsections.&lt;br /&gt;
* &#039;&#039;&#039;S-&amp;lt;left&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;S-&amp;lt;right&amp;gt;&#039;&#039;&#039; to change status. On list items it will change the item style.&lt;br /&gt;
* &#039;&#039;&#039;S-&amp;lt;up&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;S-&amp;lt;down&amp;gt;&#039;&#039;&#039; to change priority.&lt;br /&gt;
* &#039;&#039;&#039;C-c ^&#039;&#039;&#039; to sort all subentries of the current entry.&lt;br /&gt;
* &#039;&#039;&#039;C-c .&#039;&#039;&#039; to add a timestamp to the current entry. Use {{ic|Shift}} and arrows to skip days or weeks. Use the mouse on the calendar or press {{ic|Enter}} on a specific day to choose it.&lt;br /&gt;
&lt;br /&gt;
The spreadsheet features are very comprehensive. Let&#039;s give an excerpt from the manual:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
    Finally, just to whet your appetite for what can be done with the&lt;br /&gt;
 fantastic `calc.el&#039; package, here is a table that computes the Taylor&lt;br /&gt;
 series of degree `n&#039; at location `x&#039; for a couple of functions.&lt;br /&gt;
&lt;br /&gt;
     |---+-------------+---+-----+--------------------------------------|&lt;br /&gt;
     |   | Func        | n | x   | Result                               |&lt;br /&gt;
     |---+-------------+---+-----+--------------------------------------|&lt;br /&gt;
     | # | exp(x)      | 1 | x   | 1 + x                                |&lt;br /&gt;
     | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |&lt;br /&gt;
     | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |&lt;br /&gt;
     | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |&lt;br /&gt;
     | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |&lt;br /&gt;
     | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |&lt;br /&gt;
     |---+-------------+---+-----+--------------------------------------|&lt;br /&gt;
     #+TBLFM: $5=taylor($2,$4,$3);n3&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Org mode recognizes a table when the pipe &#039;&#039;&#039;|&#039;&#039;&#039; is the first non-whitespace character on line. In the previous text, no line was drawn. This is done automatically when &#039;&#039;&#039;TAB&#039;&#039;&#039; is pressed after an entry or the &#039;&#039;&#039;|-&#039;&#039;&#039; sequence. The result column was not written by hand neither, it is computed from the calc formula on the last line. Use &#039;&#039;&#039;C-u C-c C-c&#039;&#039;&#039; to recompute all values in a table.&lt;br /&gt;
&lt;br /&gt;
There is also some handy row and column manipulation bindings like those for the TODO file. {{ic|Alt}} plus arrows will move columns and arrows.&lt;br /&gt;
&lt;br /&gt;
For more in-depth details, refer to the official manual: &#039;&#039;&#039;C-h i m Org mode RET&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== リファクタリングとスマート補完 ===&lt;br /&gt;
&lt;br /&gt;
(Eclipse などの) IDE が大抵備えているプログラミング機能が必要な場合、[http://cedet.sourceforge.net/semantic.shtml Semantic] ツールが役に立ちます。Semantic は Emacs の標準ディストリビューションに含まれています。現在 C, C++, Scheme, Javascript, Java, HTML, Make がサポートされています。現在のサポート状況は [http://cedet.sourceforge.net/languagesupport.shtml CEDET のページ] で確認できます。&lt;br /&gt;
&lt;br /&gt;
Open a file in your favorite programming language supported by Semantic and turn on the Semantic minor mode with&lt;br /&gt;
 M-x semantic-mode&lt;br /&gt;
Semantic will work for a few seconds parsing the libraries included from your file (in C that would mostly be the standard library for instance).&lt;br /&gt;
&lt;br /&gt;
==== 機能 ====&lt;br /&gt;
&lt;br /&gt;
Once done, you can start using the great Semantic features:&lt;br /&gt;
;Smart completion&lt;br /&gt;
Press &#039;&#039;&#039;C-c , SPC&#039;&#039;&#039; to complete a symbol at point. If it is an argument, it will check for type correctness.&lt;br /&gt;
&lt;br /&gt;
;Jump to symbol&lt;br /&gt;
Press &#039;&#039;&#039;C-c , j&#039;&#039;&#039; to prompt for a symbol and jump to its definition. You can use auto-completion with &#039;&#039;&#039;TAB&#039;&#039;&#039;. Use a capital &#039;&#039;&#039;J&#039;&#039;&#039; to search for symbol accross files.&lt;br /&gt;
&lt;br /&gt;
;List symbol calls&lt;br /&gt;
Press &#039;&#039;&#039;C-c , g&#039;&#039;&#039; to prompt for a symbol and list the places where it is being referred to. You can use &#039;&#039;&#039;n&#039;&#039;&#039; and &#039;&#039;&#039;p&#039;&#039;&#039; to navigate through the resulting entries. Press &#039;&#039;&#039;RET&#039;&#039;&#039; to toggle details, and &#039;&#039;&#039;RET&#039;&#039;&#039; again on a reference to jump to it. Use a capital &#039;&#039;&#039;G&#039;&#039;&#039; in the first command to work across files.&lt;br /&gt;
&lt;br /&gt;
;Refactoring&lt;br /&gt;
First list use of the symbol you want to refactor with the aforementioned command. Now press &#039;&#039;&#039;(&#039;&#039;&#039; to start defining a macro on the symbol. This is actually much more powerful than refactoring since you can apply any function to the symbol and even act on its surrounding symbols. Press &#039;&#039;&#039;C-x )&#039;&#039;&#039; to finish the macro and &#039;&#039;&#039;E&#039;&#039;&#039; to call it.&lt;br /&gt;
&lt;br /&gt;
;Describe symbol&lt;br /&gt;
Call the following function to display details on a symbol.&lt;br /&gt;
 semantic-ia-show-summary&lt;br /&gt;
This can be very useful for complexe data structures and function prototypes. There is no binding by default.&lt;br /&gt;
&lt;br /&gt;
==== 設定 ====&lt;br /&gt;
&lt;br /&gt;
Here follows a sample configuration for use of Semantic with all supported programming languages: an example binding and a display configuration.&lt;br /&gt;
 ;; Semantic with ghost display (allows M-n and M-p to browse completion).&lt;br /&gt;
 (semantic-mode 1)&lt;br /&gt;
 (define-key my-keys-minor-mode-map (kbd &amp;quot;C-c , d&amp;quot;) &#039;semantic-ia-show-summary)&lt;br /&gt;
 (setq semantic-complete-inline-analyzer-displayor-class &#039;semantic-displayor-ghost)&lt;br /&gt;
&lt;br /&gt;
You can also add some specialization for a specific language. Here for C:&lt;br /&gt;
 (add-hook&lt;br /&gt;
  &#039;c-mode-hook&lt;br /&gt;
  (lambda ()&lt;br /&gt;
    (local-set-key (kbd &amp;quot;M-TAB&amp;quot;) &#039;semantic-complete-analyze-inline)&lt;br /&gt;
    (local-set-key &amp;quot;.&amp;quot; &#039;semantic-complete-self-insert)&lt;br /&gt;
    (local-set-key &amp;quot;&amp;gt;&amp;quot; &#039;semantic-complete-self-insert)))&lt;br /&gt;
&lt;br /&gt;
==== 文献 ====&lt;br /&gt;
&lt;br /&gt;
Emacs から直接 info マニュアルにアクセスすることが可能です: &#039;&#039;&#039;C-h i m Semantic RET&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
=== Emacs を git のマージツールとして使う ===&lt;br /&gt;
&lt;br /&gt;
By default, Git provides support for using Emacs&#039; Emerge mode as a merge tool. However you may prefer the Ediff mode. Unfortunately this mode is not supported by git for technical reasons. There is still a way to use it by evaluating some elisp code upon emacs call.&lt;br /&gt;
&lt;br /&gt;
{{hc|.gitconfig|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[mergetool.ediff]&lt;br /&gt;
    cmd = emacs --eval \&amp;quot; (progn (defun ediff-write-merge-buffer () (let ((file ediff-merge-store-file)) (set-buffer ediff-buffer-C) (write-region (point-min) (point-max) file) (message \\\&amp;quot;Merge buffer saved in: %s\\\&amp;quot; file) (set-buffer-modified-p nil) (sit-for 1))) (setq ediff-quit-hook &#039;kill-emacs ediff-quit-merge-hook &#039;ediff-write-merge-buffer) (ediff-merge-files-with-ancestor \\\&amp;quot;$LOCAL\\\&amp;quot; \\\&amp;quot;$REMOTE\\\&amp;quot; \\\&amp;quot;$BASE\\\&amp;quot; nil \\\&amp;quot;$MERGED\\\&amp;quot;))\&amp;quot; &lt;br /&gt;
&lt;br /&gt;
[merge]&lt;br /&gt;
	tool = ediff&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Note that the command has to be on a single line.&lt;br /&gt;
In the above example, we launch a new instance of Emacs. You might want to use emacsclient for quicker startup; it is not recommended though since the Ediff call is not really clean: it could mess with your current Emacs session.&lt;br /&gt;
&lt;br /&gt;
If you want an instant startup you can use the &#039;&#039;&#039;-q&#039;&#039;&#039; parameter. If you want to launch Emacs quickly while preserving at least a part of your configuration, you can call Emacs with&lt;br /&gt;
  emacs -q -l ~/.emacs-light&lt;br /&gt;
where the light configuration file loads only what you need for Ediff.&lt;br /&gt;
&lt;br /&gt;
See [http://kerneltrap.org/mailarchive/git/2007/7/1/250424 kerneltrap.org] and [https://stackoverflow.com/questions/1817370/using-ediff-as-git-mergetool stackoverflow] for more details on this trick and the Ediff issue.&lt;br /&gt;
&lt;br /&gt;
=== Caps Lock キーを Control キーとして使う ===&lt;br /&gt;
いわゆる &#039;emacs 小指&#039; にならないようにこちらの挙動を好むユーザーもいます。X で試用してみたいときは、次を実行:&lt;br /&gt;
 $ setxkbmap -option &#039;ctrl:nocaps&#039;&lt;br /&gt;
&lt;br /&gt;
また、キーを&#039;&#039;&#039;交換&#039;&#039;&#039;するには、次を実行:&lt;br /&gt;
 $ setxkbmap -option &#039;ctrl:swapcaps&#039;&lt;br /&gt;
&lt;br /&gt;
永続的に設定したくなったら、{{ic|.xinitrc}} ファイルに上のコマンドを追加してください。&lt;br /&gt;
&lt;br /&gt;
リージョンを小文字から大文字にする必要がある場合は、デフォルトの {{ic|C-x C-u}} キーバインディングを使って下さい、{{ic|upcase-region}} 関数が呼び出されます。&lt;br /&gt;
&lt;br /&gt;
Caps Lock がない場合は、両方の &amp;quot;Shift&amp;quot; にマッピングしてください:&lt;br /&gt;
 $ setxkbmap -option &amp;quot;shift:both_capslock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
一部のデスクトップ環境にはキーボードのマッピングを変更するためのグラフィカルなツールが含まれています。例えば [[Plasma|Plasma 5]] ならシステム設定を開いて入力デバイスをクリックしてください。キーボードを選択して高度な設定タブから Caps Lock を Ctrl として使用するように設定できます。&lt;br /&gt;
&lt;br /&gt;
== パッケージ ==&lt;br /&gt;
&lt;br /&gt;
Emacs の機能はサードパーティ製のパッケージで拡張できます。公式にサポートされているパッケージマネージャとして {{ic|package.el}} が組み込まれていますが、Emacs のコミュニティメンバーによって書かれたパッケージマネージャが他にも存在します。{{ic|package.el}} は {{ic|package-archives}} 変数を使ってパッケージを検索します。デフォルトでは [https://elpa.gnu.org/ Emacs Lisp Package Archive (ELPA)] が含まれています。{{ic|M-x list-packages}} で Emacs が認識している全てのパッケージが列挙されたバッファが作成されます。マニュアル ({{ic|[https://www.gnu.org/software/emacs/manual/html_node/emacs/Packages.html (info &amp;quot;(emacs) Packages&amp;quot;)]}}) にはさらに詳しい情報が載っています。&lt;br /&gt;
&lt;br /&gt;
サードパーティ製のパッケージのアーカイブを追加することもできます。[https://melpa.org/ MELPA] が広く使われています。&lt;br /&gt;
&lt;br /&gt;
人気の拡張の多くは {{ic|[community]}} リポジトリのパッケージや [[AUR]] からインストールできます。大抵の場合、パッケージの名前の前に &#039;emacs-&#039; が付きますが (例: {{Pkg|emacs-lua-mode}})、常にそうなっているわけではありません (例: {{AUR|auctex}})。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Arch Linux の Wiki を編集している場合は [[Emacs Mediawiki]] パッケージが役に立ちます。}}&lt;br /&gt;
&lt;br /&gt;
パッケージによっては設定ファイルに変更を加えないと機能が有効にならない場合があります。例えば、{{AUR|auctex}} をインストールしたときは、設定ファイルに以下を追加:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
(load &amp;quot;auctex.el&amp;quot; nil t t)&lt;br /&gt;
(load &amp;quot;preview-latex.el&amp;quot; nil t t)}}&lt;br /&gt;
&lt;br /&gt;
パッケージのソースコードや README で有効化する方法が書かれているはずです。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== Emacs が &#039;Undefined color: &amp;quot;WINDOW_FOREGROUND&amp;quot;&#039; というエラーメッセージで起動しない ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mcpp}} パッケージまたは {{Pkg|gcc}} パッケージをインストールする必要があります。&#039;&#039;xrdb&#039;&#039; は [[X resources]] を前処理するために C のプリプロセッサ &#039;&#039;cpp&#039;&#039; を使用します。C のプリプロセッサがインストールされていない場合、&#039;&#039;xrdb&#039;&#039; は C のプリプロセッサを実行しないため WINDOW_FOREGROUND が16進数のカラーコードに展開されません。&lt;br /&gt;
&lt;br /&gt;
=== カラー出力の問題 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、Emacs シェルはカラー表示に使われるエスケープシーケンスをそのまま表示してしまいます。つまり、カラー出力がされるべきところに変な記号が表示されます。&lt;br /&gt;
&lt;br /&gt;
この問題を解決するには以下を {{ic|~/.emacs}} に記述してください:&lt;br /&gt;
 (add-hook &#039;shell-mode-hook &#039;ansi-color-for-comint-mode-on)&lt;br /&gt;
&lt;br /&gt;
=== X ウィンドウでの文字の表示問題 ===&lt;br /&gt;
&lt;br /&gt;
X ウィンドウで emacs を起動した時にメインウィンドウの文字が全て黒縁の白四角になってしまう場合 (対応するフォントがインストールされていない文字を表示したときと同じような記号)、{{Pkg|xorg-fonts-75dpi}} や {{Pkg|xorg-fonts-100dpi}} をインストールして X ウィンドウを再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== 起動が遅い ===&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[#systemd ユニットとして|systemd ユニットとして]] Emacs を起動する方法でも起動時間を短縮できます。}}&lt;br /&gt;
&lt;br /&gt;
しばしば起動時間が遅くなる原因は2つあります。&lt;br /&gt;
&lt;br /&gt;
どちらが原因なのか調べるために、次のコマンドで Emacs を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -q&lt;br /&gt;
&lt;br /&gt;
このコマンドでも Emacs の起動が遅い場合、[[#不適切なネットワーク設定|不適切なネットワーク設定]]を参照してください。そうでない場合は、ほぼ確実に .emacs に問題があります。&lt;br /&gt;
&lt;br /&gt;
* {{ic|/etc/hosts}} の設定が間違っていると、Emacs の起動が5秒以上遅くなることになります。詳しくはネットワーク設定ガイドの &#039;[[ネットワーク設定#ホストネームの設定|ホストネームの設定]]&#039; を見てください。&lt;br /&gt;
&lt;br /&gt;
* A simple way to search for the cause is to comment-out (i.e., prefix lines with &#039;;&#039;) suspect sections of your {{ic|~/.emacs}} (or {{ic|~/.emacs.d/init.el}}) then start Emacs again to see if there&#039;s any change.  Keep in mind use of &amp;quot;require&amp;quot; and &amp;quot;load&amp;quot; can slow the startup down, especially when used with larger extensions.  They should, as a rule, only be used when their target is either: needed once Emacs starts or provides little more than &amp;quot;autoloads&amp;quot; for an extension.  Otherwise, use the &#039;autoload function directly.  For example, instead of:&lt;br /&gt;
&lt;br /&gt;
 (require &#039;anything)&lt;br /&gt;
&lt;br /&gt;
you might use:&lt;br /&gt;
&lt;br /&gt;
 (autoload &#039;anything &amp;quot;anything&amp;quot; &amp;quot;Select anything&amp;quot; t)&lt;br /&gt;
&lt;br /&gt;
=== Cannot open load file: ... ===&lt;br /&gt;
&lt;br /&gt;
The most common cause of this error is the &#039;load-path&#039; variable not including the path to the directory within which the extension is located.  To solve this, add the appropriate path to the list to be searched prior to attempting to load the extension:&lt;br /&gt;
&lt;br /&gt;
  (add-to-list &#039;load-path &amp;quot;/path/to/directory/&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
When attempting to use packages for extensions and Emacs has been configured with a prefix other than &#039;/usr&#039;, the load-path will need to be updated.  Place the following in {{ic|~/.emacs}} prior to the instructions provided by the package:&lt;br /&gt;
&lt;br /&gt;
  (add-to-list &#039;load-path &amp;quot;/usr/share/emacs/site-lisp&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
If compiling Emacs by hand, keep in mind that the default prefix is &#039;/usr/local&#039;.&lt;br /&gt;
&lt;br /&gt;
=== デッドアクセントキーの問題: &#039;&amp;lt;dead-acute&amp;gt; is undefined&#039; ===&lt;br /&gt;
&lt;br /&gt;
このバグについて Google で検索すると、次のリンクが見つかります:&lt;br /&gt;
https://lists.gnu.org/archive/html/help-gnu-emacs/2009-05/msg00167.html&lt;br /&gt;
&lt;br /&gt;
Explaining the problem: in recent versions of&lt;br /&gt;
b72&lt;br /&gt;
 Emacs, the normal way to use accent keys doesn&#039;t work as expected. Trying to accent a word like &#039;fiancé&#039; will produce the message above.&lt;br /&gt;
&lt;br /&gt;
A way to solve it is just put the line above on your startup file, {{ic|~/.emacs}}:&lt;br /&gt;
&lt;br /&gt;
   (require &#039;iso-transl)&lt;br /&gt;
&lt;br /&gt;
And no, it isn&#039;t a bug, but a feature of new Emacs versions. Reading the subsequent messages about it on the mail list, we found it (https://lists.gnu.org/archive/html/help-gnu-emacs/2009-05/msg00179.html):&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;It seems that nothing is loaded automatically because there is a choice betwee iso-transl and iso-acc. Both seem to provide an input method with C-x 8 or Alt-&amp;lt;accent&amp;gt; prefix, but what you and I are doing is just pressing a dead key (^, ´, `, ~, ¨) for the accent and then another key to &amp;quot;compose&amp;quot; the accented character. And there is no Alt key used in this! And according to documentation it seems be appropriate for 8-bit encodings, so it should be pretty useless in UTF-8. I reported this bug when it was introduced, but the bug seems to be classified as a feature ... Maybe it&#039;s just because the file is auto-loaded though pretty useless. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== C-M-% やその他のバインディングが emacs nox で動作しない ===&lt;br /&gt;
&lt;br /&gt;
これはターミナルが Xorg よりも制限的であることが原因です。ただし、ターミナルによっては多くのバインディングを扱うことができることがあります。2つの解決法が考えられます:&lt;br /&gt;
* グラフィカルバージョンを使用する。&lt;br /&gt;
* サポートされているバインディングに変更する。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
{{hc|.emacs|&lt;br /&gt;
(global-set-key (kbd &amp;quot;C-M-y&amp;quot;) &#039;query-replace-regexp)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Emacs がフリーズする ===&lt;br /&gt;
&lt;br /&gt;
シングルスレッドであるがゆえに、Emacs は様々な操作でブロックします。フリーズが発生する状況は様々です。例えば、Emacs はあなたからの入力を待っているのかもしれません (例えばあるフレームでミニバッファを開いているのに他のフレームで作業しようとしている場合など)。あるいは、Emacs は完了するまで時間のかかるコードを実行中なのかもしれません。あるいはバグを踏んだという可能性もあります。Emacs プロセスを殺さずに Emacs のブロックを解除する方法は複数存在します。&lt;br /&gt;
&lt;br /&gt;
* {{ic|C-g}} を押してみる。Emacs が行っていることによっては、複数回押す必要があります。&lt;br /&gt;
* {{ic|ESC ESC ESC}} を押してみる。&lt;br /&gt;
* 他のターミナルで {{ic|killall -SIGUSR2 emacs}} を実行する。&lt;br /&gt;
&lt;br /&gt;
=== Emacs-nox の出力が汚い ===&lt;br /&gt;
&lt;br /&gt;
When working in a terminal, the color, indentation, or anything related to the output might become crazy. This is (probably?) because Emacs was sent a special character at some point which may conflict with the current terminal.&lt;br /&gt;
If this happens you can do {{ic|M-x redraw-display}}, which will redraw the terminal&#039;s display. If this problem happens frequently, you might want to bind the command to a key, e.g. by putting something like&lt;br /&gt;
 (global-set-key (kbd &amp;quot;&amp;lt;f7&amp;gt;&amp;quot;) &#039;redraw-display)&lt;br /&gt;
in your .emacs file.&lt;br /&gt;
&lt;br /&gt;
Graphical Emacs does not suffer from this issue.&lt;br /&gt;
&lt;br /&gt;
=== emacs ターミナルにおかしなエスケープ数字 (utf-8) が表示される ===&lt;br /&gt;
&lt;br /&gt;
{{ic|.bashrc}} または {{ic|.zshrc}} で以下の変数をエクスポートしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.bashrc|2=&lt;br /&gt;
export LANG=&amp;quot;en_US.UTF-8&amp;quot;&lt;br /&gt;
export LC_ALL=&amp;quot;en_US.UTF-8&amp;quot;&lt;br /&gt;
export TERM=xterm-256color&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
小文字の utf を使っていることがエラーの原因です (例: en_US.utf-8)。&lt;br /&gt;
&lt;br /&gt;
利用可能なロケールは {{ic|locale -a}} で確認できます。&lt;br /&gt;
&lt;br /&gt;
=== tmux で emacs を使っているときに Shift + 矢印キーが動作しない ===&lt;br /&gt;
&lt;br /&gt;
まず [[tmux]] の設定で xterm-keys を有効にしてください:&lt;br /&gt;
{{hc|.tmux.conf|&lt;br /&gt;
setw -g xterm-keys on&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
しかしながら、この設定は他のキーコンビネーションを破壊します。それを修正するために、以下を emacs の設定に記述します:&lt;br /&gt;
{{hc|~/.emacs|&lt;br /&gt;
(defadvice terminal-init-screen&lt;br /&gt;
  ;; The advice is named `tmux&#039;, and is run before `terminal-init-screen&#039; runs.&lt;br /&gt;
  (before tmux activate)&lt;br /&gt;
  ;; Docstring.  This describes the advice and is made available inside emacs;&lt;br /&gt;
  ;; for example when doing C-h f terminal-init-screen RET&lt;br /&gt;
  &amp;quot;Apply xterm keymap, allowing use of keys passed through tmux.&amp;quot;&lt;br /&gt;
  ;; This is the elisp code that is run before `terminal-init-screen&#039;.&lt;br /&gt;
  (if (getenv &amp;quot;TMUX&amp;quot;)&lt;br /&gt;
    (let ((map (copy-keymap xterm-function-map)))&lt;br /&gt;
    (set-keymap-parent map (keymap-parent input-decode-map))&lt;br /&gt;
(set-keymap-parent input-decode-map map))))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://github.com/tmux/tmux/blob/master/FAQ#L242 tmux FAQ] を参照。&lt;br /&gt;
&lt;br /&gt;
=== KDE でウィンドウのリサイズがおかしい ===&lt;br /&gt;
KDE ユーザーには Emacs のウィンドウが正しくリサイズされないという現象がおこることがあります。リサイズした部分が透過されマウスでクリックしても下のウィンドウがクリックされます。この挙動を修正するには、KDE の GTK3 テーマを oxygen-gtk 以外のテーマに変更してください。例えば、{{Pkg|gtk3}} に含まれている Emacs テーマを使って下さい。&lt;br /&gt;
&lt;br /&gt;
KDE で Emacs を完全に最大化するには、タイトルバーの Emacs アイコンをクリックして、More Actions &amp;gt; Special Window Settings を選択してください。そして &amp;quot;Size &amp;amp; Position&amp;quot; タブで &amp;quot;Obey geometry restrictions&amp;quot; を選択して、ドロップダウンメニューで &amp;quot;Force&amp;quot; を選んで右のラジオボタンで &amp;quot;No&amp;quot; を選んで下さい。&lt;br /&gt;
&lt;br /&gt;
== 派生 ==&lt;br /&gt;
&lt;br /&gt;
Emacs の実装は多数存在します。おそらく GNU/Emacs が一番ポピュラーです。&lt;br /&gt;
&lt;br /&gt;
軽量な Emacs 互換のテキストエディタは Arch のリポジトリや [[AUR]] にあります。&lt;br /&gt;
&lt;br /&gt;
=== mg ===&lt;br /&gt;
&lt;br /&gt;
mg (旧名 MicroGnuEmacs) は C で書かれた軽量な Emacs の実装です。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mg}} パッケージから入手できますが、上流の [http://homepage.boetes.org/software/mg/ ページ] からソースをダウンロードすることも可能です。mg は UTF-8 をサポートしていません。&lt;br /&gt;
&lt;br /&gt;
=== zile ===&lt;br /&gt;
&lt;br /&gt;
公式ウェブ[https://www.gnu.org/software/zile/ ページ]によると &amp;quot;GNU Zile は軽量な Emacs クローンです。Zile は Zile Is Lossy Emacs の略となっています。Zile は出来る限り Emacs に近づくように書かれており、きっと全ての Emacs ユーザーの手に馴染むでしょう&amp;quot;。Zile は UTF-8 をサポートしていません。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|zile}} パッケージからインストールできます。&lt;br /&gt;
&lt;br /&gt;
最新の tarball は公式の GNU [http://ftp.sh.cvut.cz/MIRRORS/gnu/pub/gnu/zile/ ミラー] から落とせます。&lt;br /&gt;
&lt;br /&gt;
=== uemacs ===&lt;br /&gt;
&lt;br /&gt;
Linus Torvalds によるカスタム版 Micro-emacs。{{AUR|uemacs-git}} でインストール可能。&lt;br /&gt;
&lt;br /&gt;
最新 (2005) の tarball は [ftp://ftp.cs.helsinki.fi/pub/Software/Local/uEmacs-PK/ こちら] にあります。&lt;br /&gt;
&lt;br /&gt;
=== remacs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;remacs&#039;&#039;&#039; はコミュニティによる Emacs の Rust 移植です。{{AUR|remacs-git}} パッケージでインストールできます。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ GNU Emacs ホームページ]&lt;br /&gt;
* [https://www.gnu.org/software/emacs/manual/emacs.html GNU Emacs マニュアル]&lt;br /&gt;
* [http://www.emacswiki.org/cgi-bin/wiki/ Emacs Wiki]&lt;br /&gt;
* [http://wikemacs.org WikEmacs - 読みやすいが不完全な Emacs wiki]&lt;br /&gt;
* [http://www2.lib.uchicago.edu/keith/tcl-course/emacs-tutorial.html Emacs とそのショートカットの有用な紹介]&lt;br /&gt;
* [https://d0edfcdc0ccc1cd13cdab5eb986fb92e8660dbef.googledrive.com/host/0B6LMD0u8OhYYZEotN2QyR1hwR1k/ Emacs 教会 (Google ドライブ)]&lt;br /&gt;
* [https://www.gnu.org/software/emacs/refcards/pdf/refcard.pdf 公式リファレンスカード]&lt;br /&gt;
* [[EXWM]] - Emacs X Window Manager&lt;/div&gt;</summary>
		<author><name>がおびん</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Emacs&amp;diff=22487</id>
		<title>Emacs</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Emacs&amp;diff=22487"/>
		<updated>2021-11-23T14:36:53Z</updated>

		<summary type="html">&lt;p&gt;がおびん: /* クイックスタート */ 英語の記述を日本語に翻訳した。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:テキストエディタ]]&lt;br /&gt;
[[Category:コンソールアプリケーション]]&lt;br /&gt;
[[Category:GNU]]&lt;br /&gt;
[[de:Emacs]]&lt;br /&gt;
[[en:Emacs]]&lt;br /&gt;
[[es:Emacs]]&lt;br /&gt;
[[fr:Emacs]]&lt;br /&gt;
[[sr:Emacs]]&lt;br /&gt;
[[zh-hans:Emacs]]&lt;br /&gt;
[[Wikipedia:ja:Emacs|Emacs]] は拡張性があり、カスタマイズ可能な、セルフドキュメント方式のリアルタイム表示エディタです。Emacs のコアには、多数の Emacs の内蔵機能や拡張を実装するのに使われている言語である、[[Wikipedia:ja:Emacs Lisp|Emacs Lisp]] のインタプリタが存在します。GNU Emacs 22 から GTK がデフォルトの X ツールキットとして使われていますが、CLI 環境でも負けず劣らずに機能します。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
Emacs には複数の種類があります (時々 &#039;&#039;emacsen&#039;&#039; と呼ばれます)。その中で最も一般的なのは [https://www.gnu.org/software/emacs/ GNU Emacs] です。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|emacs}} パッケージを[[インストール]]してください。いつもターミナルで作業をする場合は、GTK+ がいらない {{Pkg|emacs-nox}} の方が良いでしょう (サウンドなどの装飾的な機能もありません)。&lt;br /&gt;
ただしテキストバージョンにはいくつか欠点が存在します: サポートしている色やフォント処理の機能 (実行中にサイズを変更したり、単一の文章で複数のサイズを使うなど) が少なくなっています。その上、emacs-nox には Speedbar や GUD (デバッグ環境) などの高度な機能について制限があり、複雑なフェイスを使おうとするとやや遅くなります (&amp;quot;フェイス&amp;quot;とは Emacs におけるテキストの外観のことです)。&lt;br /&gt;
&lt;br /&gt;
== Emacs の実行 ==&lt;br /&gt;
&lt;br /&gt;
emacs を起動する前に、終了の方法を知っておきましょう (特にターミナルで実行する場合): {{ic|Ctrl+x}}{{ic|Ctrl+c}} キーシーケンスを使って下さい。&lt;br /&gt;
&lt;br /&gt;
Emacs を起動するには次を実行:&lt;br /&gt;
&lt;br /&gt;
 $ emacs&lt;br /&gt;
&lt;br /&gt;
また、コンソールから使うには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -nw&lt;br /&gt;
&lt;br /&gt;
(.emacs を使わずに) 高速でロードして CLI で編集するには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -Q -nw&lt;br /&gt;
&lt;br /&gt;
nox バージョンをインストールしている場合、&#039;emacs&#039; と &#039;emacs -nw&#039; は同じになります。&lt;br /&gt;
&lt;br /&gt;
ファイル名を指定することですぐにファイルを開くこともできます:&lt;br /&gt;
&lt;br /&gt;
 $ emacs filename.txt&lt;br /&gt;
&lt;br /&gt;
=== 色無し ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、Emacs はハイパーリンクが濃青で表示されるカラーテーマで起動します。Emacs をカラーテーマやスキームを使わずに起動するには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -nw --color=no&lt;br /&gt;
&lt;br /&gt;
このコマンドでは全てのテキストがターミナルの前景色だけで表示されます。通常は黒背景に白字か、白背景に黒字となります。&lt;br /&gt;
&lt;br /&gt;
=== デーモンとして ===&lt;br /&gt;
&lt;br /&gt;
毎回 {{ic|.emacs}} ファイルをロードするため Emacs を起動するときには時間が多少かかります。また、別のインスタンスから同じファイルにアクセスしたいと思うときもあるかもしれません。バージョン23から、Emacs はユーザーが接続できるデーモンとして起動することが可能になっています。Emacs をデーモンとして実行するには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs --daemon&lt;br /&gt;
&lt;br /&gt;
起動時にデーモンを実行してウィンドウをデーモンに接続すると良いでしょう。さらに、グラフィカル・コンソールクライアント&#039;&#039;両方を&#039;&#039;同意時にデーモンに接続して GUI を素早く起動することも可能です。&lt;br /&gt;
&lt;br /&gt;
デーモンに接続したいときは場合は次のコマンドを使って下さい (グラフィカル環境から実行したときはグラフィカルクライアントが、tty などのコンソールから実行したときはコンソールクライアントが起動します):&lt;br /&gt;
&lt;br /&gt;
 $ emacsclient&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境にいるときもコンソールクライアントを使いたい場合は次のコマンドを使って下さい:&lt;br /&gt;
&lt;br /&gt;
 $ emacsclient -t&lt;br /&gt;
&lt;br /&gt;
さらに、{{ic|-a &amp;quot;&amp;quot;}} パラメータを追加することもできます。&lt;br /&gt;
これで、最初にコマンドを実行したときは、デーモンとして emacs が起動します。バックグラウンドで動き続けるので後で呼び出した時に起動時間が早くなります (バッファも残り続けます)。&lt;br /&gt;
&lt;br /&gt;
ターミナルや他のプログラムからクライアントを起動した場合、呼び出すプログラムを使うことで Emacs クライアントを閉じなくてもクライアントを使い続けることができます。そのためには、 {{ic|-n}} ({{ic|--no-wait}}) パラメータを使ってクライアントを起動します:&lt;br /&gt;
 $ emacsclient -nc&lt;br /&gt;
&lt;br /&gt;
Mutt や Git などのプログラムは (コミットメッセージを読むための) エディタが終了するまで待機するため、{{ic|-n}} パラメータを使うことはできません。デフォルトエディタが設定されている場合、他のエディタを指定する必要があるかもしれません (例: {{ic|emacsclient -a &amp;quot;&amp;quot; -t}})。&lt;br /&gt;
&lt;br /&gt;
以下のシェル設定が利用できます:&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&lt;br /&gt;
alias emt=&#039;emacsclient -nc -a &amp;quot;&amp;quot;&#039;&lt;br /&gt;
alias emc=&#039;emacsclient -t -a &amp;quot;&amp;quot;&#039;&lt;br /&gt;
EDITOR=&#039;emacsclient -a &amp;quot;&amp;quot;&#039;&lt;br /&gt;
}}&lt;br /&gt;
ただしこれには注意事項があります: コマンドのスペースの関係で多数のプログラムが外部エディタをロードすることはできません。&lt;br /&gt;
&lt;br /&gt;
スクリプトを書くほうがもっと使い勝手が良く信頼性があります:&lt;br /&gt;
{{hc|/usr/local/bin/emc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
if [ -z &amp;quot;$DISPLAY&amp;quot; ]; then&lt;br /&gt;
    IS_GRAPHICAL=true&lt;br /&gt;
else&lt;br /&gt;
    IS_GRAPHICAL=$(emacs --batch -Q --eval=&#039;(if (fboundp &#039;&amp;quot;&#039;&amp;quot;&#039;tool-bar-mode) (message &amp;quot;true&amp;quot;) (message &amp;quot;false&amp;quot;))&#039; 2&amp;gt;&amp;amp;1)&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if $IS_GRAPHICAL; then&lt;br /&gt;
    emacsclient -a &amp;quot;&amp;quot; -nc &amp;quot;$@&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    emacsclient -a &amp;quot;&amp;quot; -t &amp;quot;$@&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
スクリプトは実行可能属性を付けて下さい:&lt;br /&gt;
 # chmod 755 /usr/local/bin/emc&lt;br /&gt;
&lt;br /&gt;
これで &#039;emc&#039; が期待通りに動作するようになります。このクライアントをデフォルトのエディタにしたいときは上記のスクリプトで {{ic|EDITOR}} 環境変数を設定すれば OK です。&lt;br /&gt;
&lt;br /&gt;
=== systemd ユニットとして ===&lt;br /&gt;
&lt;br /&gt;
Emacs 26.1 から systemd ユニットが含まれています。Emacs のインストール後に以下のように有効化してください:&lt;br /&gt;
&lt;br /&gt;
  $ systemctl --user enable --now emacs&lt;br /&gt;
&lt;br /&gt;
Emacs サーバーを実行したいユーザーで上記のコマンドを実行してください。サービスの起動後、Emacs の準備ができます。ユニットファイルは {{ic|/usr/lib/systemd/user/emacs.service}} に存在します。ユニットファイルの中身は以下のようになっています:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/lib/systemd/user/emacs.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Emacs text editor&lt;br /&gt;
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStart=/usr/bin/emacs --fg-daemon&lt;br /&gt;
ExecStop=/usr/bin/emacsclient --eval &amp;quot;(kill-emacs)&amp;quot;&lt;br /&gt;
Environment=SSH_AUTH_SOCK=%t/keyring/ssh&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
systemd のユーザーユニットはログインシェル ({{ic|~/.bash_profile}} など) から環境変数を継承しないため、{{ic|~/.pam_environment}} に変数を設定すると良いでしょう。詳しくは [[Systemd/ユーザー]]を参照。&lt;br /&gt;
&lt;br /&gt;
emacs をデーモンとして起動する場合、{{ic|VISUAL}} と {{ic|EDITOR}} 環境変数を {{ic|emacsclient}} に設定することでプログラムからエディタを起動するときにエディタの新しいインスタンスを起動するかわりに emacsclient が使われるようになります。外部エディタを使用するプログラムとしてメールプログラム (メッセージを編集するため) や Git (コミットメッセージを編集するため)、less ({{ic|v}} コマンドで表示されたファイルを編集するため) などが存在します。emacsclient の {{ic|-n}} ({{ic|--nowait}}) オプションは使用しないでください。基本的にプログラムはエディタが終了したときに編集が完了したと認識するためです。&lt;br /&gt;
&lt;br /&gt;
GUI の Emacs のスタートメニューエントリなども emacs ではなく emacsclient が使われるように変更することを推奨します。&lt;br /&gt;
&lt;br /&gt;
== クイックスタート ==&lt;br /&gt;
&lt;br /&gt;
Emacs は複雑ですが、そのカスタマイズと拡張性のレベルによってもたらされる利益を理解し始めるのにそう時間はかからないでしょう。さらに、幅広い拡張を利用することで Emacs はあらゆる種類の文章編集のための強力な環境に姿を変えることができます。&lt;br /&gt;
&lt;br /&gt;
Emacs には素晴らしいチュートリアルが内蔵されており、スプラッシュ画面の最初のリンクをクリックしてアクセスできます。メニューから &#039;&#039;Help-&amp;gt;Emacs Tutorial&#039;&#039; を選択するか &#039;F1&#039; の後に &#039;t&#039; を押して下さい。このページは Emacs を始めるのに追加的なリソースになるように書かれています。&lt;br /&gt;
&lt;br /&gt;
初心者にもエキスパートにも役立つ、リファレンスカードのセットも Emacs に含まれています、{{ic|/usr/share/emacs/&amp;lt;version&amp;gt;/etc/refcards/}} を見て下さい (&amp;lt;version&amp;gt; はあなたの emacs のバージョンに置き換えて下さい)。&lt;br /&gt;
&lt;br /&gt;
=== 基本的な用語と慣習 ===&lt;br /&gt;
&lt;br /&gt;
始めは慣れないと思うかもしれませんが Emacs にはいくつか特別な用語法と約束事があり、必要に応じて紹介していきます。ただ、Emacs を使うにあたって当然知ってるべきとされるような、基本的な用語についてはあらかじめ説明しておいたほうが良いでしょう。&lt;br /&gt;
&lt;br /&gt;
真っ先に知るべきは&#039;&#039;バッファ&#039;&#039;の概念です。バッファは Emacs の中のデータを表します。例えば、Emacs でファイルを開いたとき、ディスクからファイルから読み込まれてバッファに中身が保存され、バッファを編集して後でディスクに上書き保存することができます。バッファはテキストに限られず、画像やウィジェットなども含めます。作業中でもバッファでアプリケーションを表示することすらできます。こういう考え方もできます: ディスク上のデータは&#039;ファイル&#039;であり、一方、Emacs 上のデータは&#039;バッファ&#039;である。&lt;br /&gt;
&lt;br /&gt;
Emacs におけるキーシーケンスの決まり事も見慣れないかもしれません。即ち:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-x&#039;&#039;&#039; は Control-x を示します&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x&#039;&#039;&#039; は Meta-x を示します&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;Meta&#039; は多くの場合 Alt キーに相当します。また、Esc キーを使うことも可能です。}}&lt;br /&gt;
&lt;br /&gt;
例えば、Emacs を終了するには次のキーシーケンスを使います: &#039;&#039;&#039;C-x C-c&#039;&#039;&#039;。これは &amp;quot;Control を押しながら &#039;x&#039; を押す。手を離す。Control を押しながら &#039;c&#039; を押す&amp;quot; と読み替えることができます。Emacs にはメニューバーが存在しますが、キーシーケンスを使いこなせるように練習することを推奨します。以下から、Emacs で使われるキーバインディングと慣習について説明します。&lt;br /&gt;
&lt;br /&gt;
=== 移動 ===&lt;br /&gt;
&lt;br /&gt;
カーソルの移動は他のグラフィカルエディタとよく似ています。マウスや方向キーを使ってカーソルの位置 (Emacs では&#039;&#039;ポイント&#039;&#039;と呼ばれます) を変更することができます。一般的な移動コマンドは方向キーで出来ますが、Emacs には他にも便利なバインディングが存在します。1文字先に移動するには &#039;&#039;&#039;C-f&#039;&#039;&#039; を使用して、1文字前に移動するには &#039;&#039;&#039;C-b&#039;&#039;&#039; を使用します。&#039;&#039;&#039;C-n&#039;&#039;&#039; と &#039;&#039;&#039;C-p&#039;&#039;&#039; でそれぞれ次の行と前の行に移動できます。基本的に、マウスや方向キーを使うよりもこれらのキーシーケンスを使うことが推奨されています。&lt;br /&gt;
&lt;br /&gt;
当然、Emacs には、単語や文単位で移動できる、もっと高度な移動コマンドが用意されています。&#039;&#039;&#039;M-f&#039;&#039;&#039; は1単語先に移動して &#039;&#039;&#039;M-b&#039;&#039;&#039; は1単語前にポイント移動します。同じく、&#039;&#039;&#039;M-e&#039;&#039;&#039; は1文先にポイント移動して &#039;&#039;&#039;M-a&#039;&#039;&#039; は前に戻ります。&lt;br /&gt;
&lt;br /&gt;
ここまでは、紹介した全ての移動コマンドはポイントに関連しています。&#039;&#039;&#039;M-&amp;lt;&#039;&#039;&#039; を使うことでバッファの最初にポイントを移動することができ、逆に、&#039;&#039;&#039;M-&amp;gt;&#039;&#039;&#039; はバッファの最後に移動します。特定の行番号にポイントを移動するには、&#039;&#039;&#039;M-g g&#039;&#039;&#039; を使います。&#039;&#039;&#039;M-g g&#039;&#039;&#039; は移動したい行番号を尋ねます。また、現在の行の先頭と末尾に移動するには、&#039;&#039;&#039;C-a&#039;&#039;&#039; あるいは &#039;&#039;&#039;C-e&#039;&#039;&#039; を使って下さい。&lt;br /&gt;
&lt;br /&gt;
{{Note|上記のコマンドを含む全てのコマンドのキーバインドは、現在有効になっているモードによって&#039;&#039;多少&#039;&#039;ながら変わってくる可能性があります。しかしながら、同一の機能を実行するのにコマンドを置き換えることはあまりありません。詳しくは[[#モード|モード]]を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
=== ファイルとバッファ ===&lt;br /&gt;
&lt;br /&gt;
Emacs にはファイルを操作するためのコマンドが用意されています。このセクションでは最もよく使われるコマンドを紹介します。ファイルを開くには &#039;&#039;&#039;C-x C-f&#039;&#039;&#039; を使います (Emacs ではこのコマンドを &#039;find-file&#039; と呼びます)。指定されたファイルが存在しなかった場合、Emacs は空のバッファを開きます。バッファを保存するとバッファの中身が入ったファイルが作成されます。&#039;&#039;&#039;C-x C-s&#039;&#039;&#039; を使うことでバッファを保存できます。別のファイル名でバッファを保存するには、&#039;&#039;&#039;C-x C-w&#039;&#039;&#039; を使って下さい (this is a mnemonic for the command &#039;write-file&#039;)。新しいファイル名が尋ねられ、ディスクにファイルが書き込まれます。&#039;&#039;&#039;C-x s&#039;&#039;&#039; で全てのバッファを保存することも可能です。最後に保存されていた状態からバッファに変更が加えられている場合、保存を実行するかどうか訊くプロンプトが表示されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ファイルに対応するバッファが既に開かれている場合 &#039;&#039;&#039;C-x C-f&#039;&#039;&#039; はディスクからファイルを読み込みません。ディスクからファイルを再度読み込むには、(1) まずバッファを閉じて (&#039;&#039;&#039;C-x k&#039;&#039;&#039;)、それからファイルを開くか (&#039;&#039;&#039;C-x C-f&#039;&#039;&#039;) あるいは (2) &#039;&#039;&#039;M-x revert-buffer&#039;&#039;&#039; を使ってディスク上のデータに戻して下さい。それか (3) &#039;&#039;&#039;C-x C-v&#039;&#039;&#039; でファイルを現在のバッファにロードするか (4) &#039;&#039;&#039;C-x RET r RET&#039;&#039;&#039; で同一コードでファイルを再読み込みしてください。}}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;find-file&amp;quot; や &amp;quot;write-file&amp;quot; などのインタラクティブなコマンドでは Emacs ウィンドウの一番下の行に入力が求められます。この行のことは&#039;&#039;ミニバッファ&#039;&#039;と呼びます。ミニバッファでは基本的な編集コマンドを使うことができ、多くの *nix シェルで利用できるのと同じようなタブ補完機能があります。&#039;&#039;&#039;&amp;lt;TAB&amp;gt;&#039;&#039;&#039; を2回連続で押すと補完リストが表示され、マウスを使ってリストから補完候補を選択することも可能です。ミニバッファでの補完はコマンドやファイル名など様々な形で使えます。&lt;br /&gt;
&lt;br /&gt;
ミニバッファには履歴機能も存在します。前に入力したコマンドは &#039;&#039;&#039;Up Arrow&#039;&#039;&#039; または &#039;&#039;&#039;M-p&#039;&#039;&#039; を使うことで再呼び出しできます。&lt;br /&gt;
&lt;br /&gt;
ミニバッファは &#039;&#039;&#039;C-g&#039;&#039;&#039; を押すことでいつでも終了できます。&lt;br /&gt;
&lt;br /&gt;
ファイルを複数開いたら、ファイルを切り替える手段が必要です。Emacs 内に既に存在するバッファにファイルを開くと、Emacs はそのバッファに切り替えます。しかしながらこれは効率的とは言えません。Emacs には表示するバッファを選択する &#039;&#039;&#039;C-x b&#039;&#039;&#039; が存在します (タブ補完が使えます)。存在しないバッファの名前を入力すると、その名前で新しいバッファが作成されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|前のバッファに切り替えるには &#039;&#039;&#039;C-x b &amp;lt;RET&amp;gt;&#039;&#039;&#039; を使います。前のバッファがデフォルトだからです。}}&lt;br /&gt;
&lt;br /&gt;
全てのバッファのリストを &#039;&#039;&#039;C-x C-b&#039;&#039;&#039; で表示することができます。バッファが必要なくなったときは &#039;&#039;&#039;C-x k&#039;&#039;&#039; で削除することが可能です。&lt;br /&gt;
&lt;br /&gt;
=== 編集 ===&lt;br /&gt;
&lt;br /&gt;
Emacs には多数の編集コマンドが存在します。まだ紹介していない最も重要なコマンドはおそらく &#039;undo&#039; でしょう。&#039;&#039;&#039;C-_&#039;&#039;&#039; または &#039;&#039;&#039;C-/&#039;&#039;&#039; で実行することができます。基本的に移動コマンドには対応する削除コマンドが存在します。例えば &#039;&#039;&#039;M-&amp;lt;backspace&amp;gt;&#039;&#039;&#039; で後方の単語を削除することができ、{{ic|M-d}} で前方の単語を削除できます。行末または文章の終わりまで削除するにはそれぞれ {{ic|C-k}} または {{ic|M-k}} を使います。&lt;br /&gt;
&lt;br /&gt;
1行は80文字を超えていはいけないという経験則が存在します。1行の長さを長くしすぎないことで、特にウィンドウの縁で改行してしまうような場合に、可読性を維持することができます。改行の自動挿入 (または削除) は Emacs では詰め込み (&#039;&#039;filling&#039;&#039;) と呼ばれます。{{ic|M-q}} を使うことでパラグラフを折り返させることができます。&lt;br /&gt;
&lt;br /&gt;
文字列と単語はそれぞれ {{ic|C-t}} と {{ic|M-t}} で置き換えることが可能です。例えば {{ic|Hello World!}} を {{ic|World! Hello}} と置き換えられます。&lt;br /&gt;
&lt;br /&gt;
単語の大文字小文字はすぐに修正できます。{{ic|M-l}} は単語を小文字に変換し ({{ic|HELLO}} は {{ic|hello}})、{{ic|M-u}} は単語を大文字に変換します ({{ic|hello}} は {{ic|HELLO}})。そして {{ic|M-c}} は単語の最初の文字を大文字にして他の文字は小文字にします ({{ic|hElLo}} は {{ic|Hello}})。&lt;br /&gt;
&lt;br /&gt;
=== kill と yank とリージョン ===&lt;br /&gt;
&lt;br /&gt;
リージョンとは、2点間にあるテキストです。2点のうちの1つは、&#039;&#039;マーク&#039;&#039; と呼ばれ、もう1つはポイントです。 &#039;&#039;&#039;C-&amp;lt;SPC&amp;gt;&#039;&#039;&#039; によってマークの位置がセットされ、その後でポイントが移動することでリージョンが作られます。GNU Emacs 23.1 以降、リージョンはデフォルトで可視化されます。リージョン上で動作する多くのコマンドがあり、もっともよく使われるコマンドに &#039;&#039;killing&#039;&#039; コマンドがあります。&lt;br /&gt;
&lt;br /&gt;
Emacs では、カット＆ペーストはそれぞれ、&#039;&#039;kill&#039;&#039; と &#039;&#039;yank&#039;&#039; と呼ばれます。1文字以上の文字を削除するコマンド（ &#039;&#039;&#039;C-k&#039;&#039;&#039; や &#039;&#039;&#039;M-d&#039;&#039;&#039; といった上で記述したコマンドも含めて）は、実際にテキストをカットし、&#039;&#039;kill-ring&#039;&#039; として知られるものに追加します。kill-ring は、単に kill されたテキストのリストです。kill-ring は、デフォルトでは直近60個の kill されたテキストを保存します。kill に成功すると、リストの先頭に接続されて保存されます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-w&#039;&#039;&#039; と &#039;&#039;&#039;M-w&#039;&#039;&#039; によって、それぞれリージョンの kill とコピーができます。&lt;br /&gt;
&lt;br /&gt;
kill されたテキストをバッファに挿入する（&#039;yanking&#039; として知られます）ためには、&#039;&#039;&#039;C-y&#039;&#039;&#039; を使います。 &#039;&#039;&#039;C-y&#039;&#039;&#039; は、複数回使用することで、繰り返しテキストを yank できます。前述の通り、以前の kill は、リストに保存されます。しかし、&#039;&#039;&#039;C-y&#039;&#039;&#039; は、そのうち最初のものしか取得しません。それより前の kill は、&#039;&#039;&#039;M-y&#039;&#039;&#039; によってアクセスすることができます。これによって、&#039;yank&#039; で挿入されたテキストをリストの先頭に移動させます。 &#039;&#039;&#039;M-y&#039;&#039;&#039; は &#039;&#039;&#039;C-y&#039;&#039;&#039; に続けて使われなければならず、kill-ring をたどるために何度でも使えます。&lt;br /&gt;
&lt;br /&gt;
=== 検索と置換 ===&lt;br /&gt;
&lt;br /&gt;
文字列を検索することは、テキストの編集において一般的な作業です。検索は、&#039;&#039;&#039;C-s&#039;&#039;&#039; (後方検索) または &#039;&#039;&#039;C-r&#039;&#039;&#039; (前方検索) によって実行されます。これらのコマンドは、検索する文字列を入力するプロンプトを表示します。検索は1文字入力するごとに実行され、タイプごとに次に（あるいは前に）一致した文字列にマッチします。次の検索結果に行くには C-s を、前の検索結果に行くには C-r を押します。  もし探しているものが見つかったのであれば、&#039;&#039;&#039;&amp;lt;RET&amp;gt;&#039;&#039;&#039; を押すことで検索を終了できます。一方、検索を開始した場所に戻りたければ &#039;&#039;&#039;C-g &#039;&#039;&#039; を押します。&lt;br /&gt;
&lt;br /&gt;
いったん検索が完了すると (たとえば &#039;&#039;&#039;C-g&#039;&#039;&#039; 等で中断していない場合)、検索された文字列は、次の検索のデフォルト検索文字となります。検索された文字を使用するには、後方検索なら &#039;&#039;&#039;C-s C-s&#039;&#039;&#039; , 前方検索なら &#039;&#039;&#039;C-r C-r&#039;&#039;&#039; をそれぞれ押します。&lt;br /&gt;
&lt;br /&gt;
I-search には、いくつかの有用なコマンドがあります。 &#039;&#039;&#039;M-e&#039;&#039;&#039; によって、検索文字列の編集が可能です。 &#039;&#039;&#039;M-c&#039;&#039;&#039; によって、大文字小文字を区別するか、しないかを切り替えることができます。&lt;br /&gt;
&lt;br /&gt;
正規表現検索は、検索の開始コマンド以外、上述の検索と同様に動作します。 &#039;&#039;&#039;C-M-s&#039;&#039;&#039; あるいは &#039;&#039;&#039;C-M-r&#039;&#039;&#039; によって、それぞれ正規表現による後方検索、前方検索を開始します。いったん正規表現検索を開始すると、文字列検索と同様に &#039;&#039;&#039;C-s&#039;&#039;&#039; と &#039;&#039;&#039;C-r&#039;&#039;&#039; を後方検索、前方検索に使用することができます。&lt;br /&gt;
&lt;br /&gt;
検索に加え、文字列や正規表現を置換することができます（それぞれ &#039;&#039;&#039;M-%&#039;&#039;&#039; および &#039;&#039;&#039;C-M-%&#039;&#039;&#039; によって実行されます）。元のテキストと変換後のテキスト用にプロンプトが表示され、それからハイライトされた一致箇所に対する動作のために別のプロンプトが表示されます。多くのオプションが使用できますが（使用できるオプションの完全なリストは &#039;&#039;&#039;?&#039;&#039;&#039; を押してください）、もっとも一般的に使われるのは、変換を実行する &#039;&#039;&#039;y&#039;&#039;&#039; と、スキップする &#039;&#039;&#039;n&#039;&#039;&#039; 、そしてハイライトされている文字列を含め、以降すべての一致に対して変換する &#039;&#039;&#039;!&#039;&#039;&#039; になります。&lt;br /&gt;
&lt;br /&gt;
=== 前置引数 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-u&#039;&#039;&#039; は、&#039;universal-argument&#039; コマンドに対応づけられています。&#039;universal-argument&#039; を渡すことによって、より多くの情報をコマンドに提供できます（この情報を &#039;前置引数&#039; と呼びます）。たとえば&lt;br /&gt;
&lt;br /&gt;
 C-u 80 %&lt;br /&gt;
&lt;br /&gt;
は、%記号の行を挿入します。また、&lt;br /&gt;
&lt;br /&gt;
 C-u 4 M-d&lt;br /&gt;
&lt;br /&gt;
は4単語を削除します。この場合、&#039;&#039;&#039;M-d&#039;&#039;&#039; によって実行されるコマンドへ、要求する単語の数を渡しています。&lt;br /&gt;
&lt;br /&gt;
universal argument は、&#039;&#039;&#039;M-&amp;lt;数字&amp;gt;&#039;&#039;&#039; によって少し早く入力することができます。&lt;br /&gt;
&lt;br /&gt;
 M-80 %&lt;br /&gt;
&lt;br /&gt;
=== インデント ===&lt;br /&gt;
&lt;br /&gt;
インデントは、1行をインデントする &#039;&#039;&#039;&amp;lt;TAB&amp;gt;&#039;&#039;&#039; やリージョンをインデントする &#039;&#039;&#039;C-M-\&#039;&#039;&#039; によって実行されます。リージョンが有効（&#039;&#039;たとえば&#039;&#039;ハイライトされている）場合、&#039;&#039;&#039;&amp;lt;TAB&amp;gt;&#039;&#039;&#039; はリージョンもインデントします。&lt;br /&gt;
&lt;br /&gt;
テキストがどのようにインデントされるかは、正確には有効になっている &#039;&#039;メジャーモード&#039;&#039; に依ります。メジャーモードは、しばしば特定の種類のテキストをインデントするときに特化したインデントスタイルを定義します。（より詳しくは [[#モード|Modes]] を見てください。）&lt;br /&gt;
&lt;br /&gt;
いくつかの場合、ファイルタイプに対して適したメジャーモードがありません。その場合、手動でのインデントが必要になります。リージョンを作成（ [[#kill と yank とリージョン|kill と yank とリージョン]] 参照）し、&#039;&#039;&#039;C-u &amp;lt;n&amp;gt; C-x &amp;lt;TAB&amp;gt;&#039;&#039;&#039; でインデントを実行してください。（ここで、&#039;&amp;lt;n&amp;gt;&#039; はリージョンに含まれるテキストがインデントされる列の数です。）例えば、&lt;br /&gt;
&lt;br /&gt;
リージョンのインデントを4列追加する:&lt;br /&gt;
&lt;br /&gt;
 C-u 4 C-x &amp;lt;TAB&amp;gt;&lt;br /&gt;
&lt;br /&gt;
リージョンのインデントを2列減らす:&lt;br /&gt;
&lt;br /&gt;
 C-u -2 C-x &amp;lt;TAB&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ウィンドウとフレーム ===&lt;br /&gt;
&lt;br /&gt;
Emacs は、多くのファイルを同時に編集するために便利であるよう設計されています。これは、Emacs のインタフェースを3つの階層にわけることで実現されています。つまり、すでに紹介済みのバッファ、&#039;&#039;ウィンドウ&#039;&#039; と &#039;&#039;フレーム&#039;&#039; です。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ウィンドウ&#039;&#039;&#039; とは、Emacsでバッファを表示している場所のことです。1つのウィンドウは、一度に1つのバッファしか表示できません。しかし、1つのバッファは複数のウィンドウに表示できます。それぞれのウィンドウの下には、&#039;&#039;モードライン&#039;&#039; があります。モードラインには、そのバッファの情報が表示されています。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;フレーム&#039;&#039;&#039; とは、Emacs の&amp;quot;ウィンドウ&amp;quot;（一般的な意味。たとえば最近のデスクトップパラダイムの意味での &#039;ウィンドウ&#039;）です。フレームには、タイトルバー、メニューバー、1つ以上の &#039;ウィンドウ&#039; (Emacs 的な意味。たとえば上で定義した &#039;ウィンドウ&#039;) が含まれます。&lt;br /&gt;
&lt;br /&gt;
以降では、これらの単語は Emacs に存在するものでの定義として使用します。&lt;br /&gt;
&lt;br /&gt;
ウィンドウを水平あるいは垂直に分割するには、それぞれ &#039;&#039;&#039;C-x 2&#039;&#039;&#039; あるいは &#039;&#039;&#039;C-x 3&#039;&#039;&#039; を使います。これは、現在のフレームにもう1つのウィンドウを生成する効果があります。複数のウィンドウ間を巡回するには、&#039;&#039;&#039;C-x o&#039;&#039;&#039; を使用します。&lt;br /&gt;
&lt;br /&gt;
ウィンドウ分割の反対は、ウィンドウを削除することです。現在のウィンドウを削除するには &#039;&#039;&#039;C-x 0&#039;&#039;&#039; を使い、現在のウィンドウ以外を削除するには &#039;&#039;&#039;C-x 1&#039;&#039;&#039; を使います。&lt;br /&gt;
&lt;br /&gt;
ウィンドウと同様に、フレームも生成や削除が可能です。 &#039;&#039;&#039;C-x 5 2&#039;&#039;&#039; によってフレームを生成できます。 &#039;&#039;&#039;C-x 5 0&#039;&#039;&#039; によって現在のフレームを削除し、&#039;&#039;&#039;C-x 5 1&#039;&#039;&#039; によってr現在のフレーム以外のすべてのフレームを削除します。&lt;br /&gt;
&lt;br /&gt;
{{Note|これらのコマンドはバッファには影響しません。たとえば、ウィンドウを削除しても表示されているバッファは kill されません。}}&lt;br /&gt;
&lt;br /&gt;
=== モード ===&lt;br /&gt;
&lt;br /&gt;
Emacs モードは Emacs Lisp で書かれた拡張であり、接続されているバッファの挙動を制御します。大抵の場合、インデントやシンタックスハイライト、テキストを編集するときのキーバインドを提供します。洗練されたモードは Emacs を完全な IDE (統合開発環境) に変貌させます。Emacs は基本的にファイルの拡張子でモードをロードすべきか判断します。&lt;br /&gt;
&lt;br /&gt;
シェルスクリプトを編集するのに役立つモードとして sh-mode, line-number-mode, column-number-mode が存在します。同時に使用することができ、以下のコマンドで呼び出します:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x sh-mode &amp;lt;RET&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x column-number-mode &amp;lt;RET&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
line-number-mode はデフォルトで有効になっていますが、コマンドを再度実行することでオンとオフを切り替えられます:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x line-number-mode &amp;lt;RET&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
sh-mode は、&#039;&#039;メジャーモード&#039;&#039; の1つです。メジャーモードは Emacs を調整し、時には、特定の種類のテキストの編集用に特別なコマンドを提供します。それぞれのバッファでは、メジャーモードは1つだけが有効です。シンタックスハイライトやインデントサポートに加えて、sh-mode はシェルスクリプトを書く助けになるいくつかのコマンドを定義しています。以下に、それらの内のいくつかを示します。&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-c (&#039;&#039;&#039;	 関数定義を挿入する&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c C-f&#039;&#039;&#039;	 &#039;for&#039; ループを挿入する&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c TAB&#039;&#039;&#039;	 &#039;if&#039; 文を挿入する&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c C-w&#039;&#039;&#039;	 &#039;while&#039; ループを挿入する&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c C-l&#039;&#039;&#039;	 1 から n までの番号付きループを挿入する&lt;br /&gt;
&lt;br /&gt;
&#039;line-number-mode&#039; と &#039;column-number-mode&#039; は&#039;&#039;マイナーモード&#039;&#039;です。マイナーモードはメジャーモードを拡張することができ、同時に任意の数のマイナーモードを有効にできます。&lt;br /&gt;
&lt;br /&gt;
=== マニュアル ===&lt;br /&gt;
&lt;br /&gt;
Emacs を本当にマスターしたいのであれば、一番よく読むべき文章はやはり公式マニュアルです:&lt;br /&gt;
* Emacs: 完全な Emacs ユーザーマニュアル&lt;br /&gt;
* Emacs FAQ&lt;br /&gt;
* Emacs Lisp Intro: プログラミング言語を使用したことがない場合&lt;br /&gt;
* Elisp: プログラミング言語をよく知っている場合&lt;br /&gt;
&lt;br /&gt;
これらは、 [http://www.gnu.org/software/emacs/manual/ GNU.org] から PDF として入手できます。あるいは Emacs 自身にて組み込みの &#039;info&#039; リーダー &#039;&#039;&#039;C-h i&#039;&#039;&#039; を用いて直接読むこともできます。本を選択するには &#039;&#039;&#039;m&#039;&#039;&#039; を押してください。&lt;br /&gt;
&lt;br /&gt;
ユーザーの幾人かは、&#039;info&#039; で読むことを好みます。便利なショートカットであり、段落はウィンドウ幅に調整され、フォントは現在の画面解像度に調整されるためです。何人かは目に優しいと気づいています。最後に、本の内容を任意の Emacs バッファへ簡単にコピーでき、さらに例示されている Lisp コードを直接実行することさえできます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;info&#039;&#039;&#039; 本について、もっとよく知りたいなら、&#039;&#039;&#039;C-h i m info &amp;lt;RET&amp;gt;&#039;&#039;&#039; を実行してください。&lt;br /&gt;
info モードで &#039;&#039;&#039;?&#039;&#039;&#039; を押すと、ショートカットの簡易リストが表示されます。&lt;br /&gt;
&lt;br /&gt;
== カスタマイズ ==&lt;br /&gt;
&lt;br /&gt;
Emacs は {{ic|~/.emacs}} を編集するか &#039;&#039;&#039;M-x customize&#039;&#039;&#039; を使うことで設定をすることができます。このセクションでは手動で {{ic|~/.emacs}} を編集する方に焦点をあて、いくつかのカスタマイズ例を示すことで、一般的な Emacs の設定をデモンストレーションします。customize コマンドは調整を行うためのシンプルなインターフェイスを提供しますが、おそらく Emacs に慣れてくるにつれて制約を感じるようになるでしょう。&lt;br /&gt;
&lt;br /&gt;
All of the examples here can be performed while Emacs is running.  To evaluate the expression within Emacs, use:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-M-x&#039;&#039;&#039; with point anywhere within the expression.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-x C-e&#039;&#039;&#039; with point following the last &#039;)&#039;&lt;br /&gt;
&lt;br /&gt;
For some users, typing &#039;yes&#039; and &#039;no&#039; in prompts can quickly become tiring.  To instead use the &#039;y&#039; and &#039;n&#039; keys at these prompts:&lt;br /&gt;
&lt;br /&gt;
 (defalias &#039;yes-or-no-p &#039;y-or-n-p)&lt;br /&gt;
&lt;br /&gt;
カーソルの点滅を止めるには、次を使用:&lt;br /&gt;
&lt;br /&gt;
 (blink-cursor-mode -1)&lt;br /&gt;
&lt;br /&gt;
同じく、前のセクションにある column-number-mode を有効にするには:&lt;br /&gt;
&lt;br /&gt;
 (column-number-mode 1)&lt;br /&gt;
&lt;br /&gt;
The similarities between the previous two commands are not a coincidence: blink-cursor-mode and column-number-mode are both minor-modes.  As a rule, minor-modes can be enabled given positive argument or disabled with a negative argument.  Should the argument be omitted, the minor-mode will be toggled on/off.&lt;br /&gt;
&lt;br /&gt;
Here are some more examples of minor-modes.  The following will disable the scroll bars, menu-bar and tool-bar, respectively.&lt;br /&gt;
&lt;br /&gt;
 (scroll-bar-mode -1)&lt;br /&gt;
 (menu-bar-mode -1)&lt;br /&gt;
 (tool-bar-mode -1)&lt;br /&gt;
&lt;br /&gt;
The variable, &#039;auto-mode-alist&#039;, can be modified to change the major-mode used by default for certain file names.  The following example will make the default major-mode for &#039;.tut&#039; and &#039;.req&#039; files &#039;text-mode&#039;.&lt;br /&gt;
&lt;br /&gt;
 (setq auto-mode-alist&lt;br /&gt;
   (append&lt;br /&gt;
     &#039;((&amp;quot;\\.tut$&amp;quot; . text-mode)&lt;br /&gt;
       (&amp;quot;\\.req$&amp;quot; . text-mode))&lt;br /&gt;
     auto-mode-alist))&lt;br /&gt;
&lt;br /&gt;
Settings can also be applied on a per-mode basis.  A common method for this is to add a function to a &#039;&#039;hook&#039;&#039;. For example, to force indentation to use spaces instead of tabs, but only in text-mode:&lt;br /&gt;
&lt;br /&gt;
 (add-hook &#039;text-mode-hook (lambda () (setq indent-tabs-mode nil)))&lt;br /&gt;
&lt;br /&gt;
Similarly, to only use spaces for indentation everywhere:&lt;br /&gt;
&lt;br /&gt;
 (setq-default indent-tabs-mode nil)&lt;br /&gt;
&lt;br /&gt;
Keybindings can be adjusted in two ways.  The first of which is &#039;define-key&#039;.  &#039;define-key&#039; creates a keybinding for a command but only in one mode.  The example below will make &#039;&#039;&#039;F8&#039;&#039;&#039; delete any whitespace from the end of each line of a &#039;text-mode&#039; buffer:&lt;br /&gt;
&lt;br /&gt;
 (define-key text-mode-map (kbd &amp;quot;&amp;lt;f8&amp;gt;&amp;quot;) &#039;delete-trailing-whitespace)&lt;br /&gt;
&lt;br /&gt;
The other method is &#039;global-set-key&#039;.  This is used to bind a key to a command everywhere.  To bind &#039;query-replace-regexp&#039; (&#039;&#039;&#039;C-M-%&#039;&#039;&#039;) to &#039;&amp;lt;f7&amp;gt;&#039;.&lt;br /&gt;
&lt;br /&gt;
 (global-set-key (kbd &amp;quot;&amp;lt;f7&amp;gt;&amp;quot;) &#039;query-replace-regexp)&lt;br /&gt;
&lt;br /&gt;
Binding a command to an alternate key does not replace any existing bindings.  Which is to say, &#039;query-replace-regexp&#039; would be bound to both &#039;&#039;&#039;F7&#039;&#039;&#039; and &#039;&#039;&#039;C-M-%&#039;&#039;&#039; after the above example.&lt;br /&gt;
&lt;br /&gt;
Almost anything within Emacs can be configured.  Browsing through the [http://emacswiki.org/ Emacs Wiki] should give a solid place to start.&lt;br /&gt;
&lt;br /&gt;
=== マルチ設定 ===&lt;br /&gt;
&lt;br /&gt;
複数の設定を使い、Emacs にどれか一つをロードさせることができます。&lt;br /&gt;
&lt;br /&gt;
例えば、2つの設定ファイルを定義してみましょう。&lt;br /&gt;
&lt;br /&gt;
{{hc|.emacs|&lt;br /&gt;
(load &amp;quot;~/.emacs.d/main&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/functions&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/modes&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/plugins&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/theme&amp;quot; nil t)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This is the full configuration  we load for the daemon. But the &#039;&#039;plugins&#039;&#039; file is huge and slow to load. If we want to spawn a new Emacs instance that does not need the &#039;&#039;plugins&#039;&#039; features, it can be cumbersome to load it everytime in the long run.&lt;br /&gt;
&lt;br /&gt;
{{hc|.emacs-light|&lt;br /&gt;
(load &amp;quot;~/.emacs.d/main&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/functions&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/modes&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/theme&amp;quot; nil t)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
And now we launch Emacs with&lt;br /&gt;
 emacs -q -l ~/.emacs-light&lt;br /&gt;
You can create an alias to ease the call.&lt;br /&gt;
&lt;br /&gt;
=== ローカル・カスタム変数 ===&lt;br /&gt;
&lt;br /&gt;
You can define variables in your configuration file that can be later one modified locally for a file.&lt;br /&gt;
&lt;br /&gt;
 (defcustom my-compiler &amp;quot;gcc&amp;quot; &amp;quot;Some documentation&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Now in any file you can define local variables in two ways, see [https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html the manual for complete details ]&lt;br /&gt;
&lt;br /&gt;
* Using {{ic| M-x add-file-local-variable-prop-line}}, which adds a commented line at the beginning similar to:&lt;br /&gt;
 // -*- my-compiler:g++; mode:c++ -*-&lt;br /&gt;
* Or you can use {{ic| M-x add-file-local-variable}} to add lines near the end of the file:&lt;br /&gt;
 // Local Variables:&lt;br /&gt;
 // my-compiler: g++&lt;br /&gt;
 // mode: c++&lt;br /&gt;
 // End:&lt;br /&gt;
&lt;br /&gt;
Note that for the values to take effect, you will need to call {{ic|M-x revert-buffer}}.&lt;br /&gt;
&lt;br /&gt;
Custom variables are considered unsafe by default. If you try to open a file that contains local variable redefining custom variables, Emacs will ask you for confirmation.&lt;br /&gt;
&lt;br /&gt;
You can declare the variable as secure, thus removing the Emacs prompt for confirmation. You need to specify a predicate that any new value has to verify so that it can be considered safe.&lt;br /&gt;
&lt;br /&gt;
 (defcustom my-compiler &amp;quot;gcc&amp;quot; &amp;quot;Some documentation&amp;quot; :safe &#039;stringp)&lt;br /&gt;
&lt;br /&gt;
In the previous example, if you attempt to set anything else than a string, Emacs will consider it insecure.&lt;br /&gt;
&lt;br /&gt;
=== カスタムカラーとテーマ ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;face&#039;&#039; を使うことで簡単に色をカスタマイズすることができます:&lt;br /&gt;
 (set-face-background  &#039;region                 &amp;quot;color-17&amp;quot;)&lt;br /&gt;
 (set-face-foreground  &#039;region                 &amp;quot;white&amp;quot;)&lt;br /&gt;
 (set-face-bold-p      &#039;font-lock-builtin-face t ) &lt;br /&gt;
&lt;br /&gt;
You can have let Emacs tell you the name of the face where the point is. Use the &#039;&#039;customize-face&#039;&#039; function for that. The facility will show you how to set colors, bold, underline, etc.&lt;br /&gt;
&lt;br /&gt;
Emacs in console can handle 256 colors, but you will have to use an appropriate terminal for that. For instance URxvt has support for 256 colors. You can use the &#039;&#039;list-colors-display&#039;&#039; for a comprehensive list of supported colors. This is highly terminal-dependent.&lt;br /&gt;
&lt;br /&gt;
=== SyncTeX サポート ===&lt;br /&gt;
&lt;br /&gt;
Emacs は強力な LaTeX エディタです。LaTeX モードを必要に応じて自由に編集・作成することができます。&lt;br /&gt;
&lt;br /&gt;
Still, there might be some challenges, like SyncTeX support. First you need to make sure your TeX distribution has it. If you installed TeX Live manually, you may need to install the &#039;&#039;synctex&#039;&#039; package.&lt;br /&gt;
 # umask 022 &amp;amp;&amp;amp; tlmgr install synctex&lt;br /&gt;
&lt;br /&gt;
SyncTeX support is viewer-dependent. Here we will use Zathura as an example, so the code needs to be adapted if you want to use another PDF viewer.&lt;br /&gt;
&lt;br /&gt;
 (defcustom tex-my-viewer &amp;quot;zathura --fork -s -x \&amp;quot;emacsclient --eval &#039;(progn (switch-to-buffer  (file-name-nondirectory \&amp;quot;&#039;\&amp;quot;&#039;\&amp;quot;%{input}\&amp;quot;&#039;\&amp;quot;&#039;\&amp;quot;)) (goto-line %{line}))&#039;\&amp;quot;&amp;quot; &lt;br /&gt;
   &amp;quot;PDF Viewer for TeX documents. You may want to fork the viewer&lt;br /&gt;
 so that it detects when the same document is launched twice, and&lt;br /&gt;
 persists when Emacs gets closed.&lt;br /&gt;
 &lt;br /&gt;
 Simple command:&lt;br /&gt;
 &lt;br /&gt;
   zathura --fork&lt;br /&gt;
 &lt;br /&gt;
 We can use&lt;br /&gt;
 &lt;br /&gt;
   emacsclient --eval &#039;(progn (switch-to-buffer  (file-name-nondirectory \&amp;quot;%{input}\&amp;quot;)) (goto-line %{line}))&#039;&lt;br /&gt;
 &lt;br /&gt;
 to reverse-search a pdf using SyncTeX. Note that the quotes and double-quotes matter and must be escaped appropriately.&amp;quot;&lt;br /&gt;
 :safe &#039;stringp)&lt;br /&gt;
&lt;br /&gt;
Here we define our custom variable. If you are using AucTeX or Emacs default LaTeX-mode, you will have to set the viewer accordingly.&lt;br /&gt;
&lt;br /&gt;
Now open a LaTeX source file with Emacs, compile the document, and launch the viewer. Zathura will spawn. If you press {{ic|Ctrl+Left click}} Emacs should place the point at the corresponding position.&lt;br /&gt;
&lt;br /&gt;
=== Systemd ファイルのシンタックスハイライト ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/holomorph/systemd-mode systemd-mode] を使うことができます。&lt;br /&gt;
&lt;br /&gt;
もしくは init ファイルに以下を追加することで、簡単に emacs で systemd のファイル (サービスやタイマーなど) をカラー表示できます:&lt;br /&gt;
&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.service\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.timer\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.target\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.mount\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.automount\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.slice\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.socket\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.path\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.netdev\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.network\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.link\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
&lt;br /&gt;
=== emacs-nox のクリップボードサポート ===&lt;br /&gt;
&lt;br /&gt;
emacs-nox で [[Xorg]] クリップボードを使うには、{{Pkg|xclip}} を[[インストール]]して以下の関数を {{ic|~/.emacs}} に追加してください [https://lists.gnu.org/archive/html/help-gnu-emacs/2014-08/msg00189.html]:&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&lt;br /&gt;
;; use xclip to copy/paste in emacs-nox&lt;br /&gt;
(unless window-system&lt;br /&gt;
  (when (getenv &amp;quot;DISPLAY&amp;quot;)&lt;br /&gt;
    (defun xclip-cut-function (text &amp;amp;optional push)&lt;br /&gt;
      (with-temp-buffer&lt;br /&gt;
	(insert text)&lt;br /&gt;
	(call-process-region (point-min) (point-max) &amp;quot;xclip&amp;quot; nil 0 nil &amp;quot;-i&amp;quot; &amp;quot;-selection&amp;quot; &amp;quot;clipboard&amp;quot;)))&lt;br /&gt;
    (defun xclip-paste-function()&lt;br /&gt;
      (let ((xclip-output (shell-command-to-string &amp;quot;xclip -o -selection clipboard&amp;quot;)))&lt;br /&gt;
	(unless (string= (car kill-ring) xclip-output)&lt;br /&gt;
	  xclip-output )))&lt;br /&gt;
    (setq interprogram-cut-function &#039;xclip-cut-function)&lt;br /&gt;
    (setq interprogram-paste-function &#039;xclip-paste-function)&lt;br /&gt;
    ))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|以下を追加することでターミナルマウスサポートも有効にできます:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
;; xterm mouse support&lt;br /&gt;
(require &#039;mouse)&lt;br /&gt;
(xterm-mouse-mode t)&lt;br /&gt;
}}&lt;br /&gt;
[http://www.opensource.apple.com/source/emacs/emacs-51/emacs/lisp/mwheel.el mwheel.el] を参照。}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
前のセクションでは基本的な編集コマンドを説明していますが、それだけでは Emacs の可能性はわかりません。このセクションではより高度なテクニックや機能を紹介します。&lt;br /&gt;
&lt;br /&gt;
ただし全てを説明するとなると長くなりすぎます。そのためこのセクションはあくまで Emacs の雅やかな機能をいくつか&#039;&#039;デモ&#039;&#039;するだけにとどめます。&lt;br /&gt;
&lt;br /&gt;
全ての機能の詳細な説明は[[#ドキュメント|ドキュメント]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== TRAMP ===&lt;br /&gt;
&lt;br /&gt;
TRAMP (Transparent Remote Access, Multiple Protocols) は多数のプロトコルで、リモートファイルに透過的にアクセスすることができる拡張です。ファイル名を入力するときに、特定の形式を入力すると TRAMP が呼びだされます。例:&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/hosts}} を root 権限で開く前に root のパスワードを要求するには:&lt;br /&gt;
&lt;br /&gt;
 C-x C-f /sudo::/etc/hosts&lt;br /&gt;
&lt;br /&gt;
SSH で &#039;myhost&#039; に &#039;myuser&#039; として接続して {{ic|~/example.txt}} ファイルを開くには:&lt;br /&gt;
&lt;br /&gt;
 C-x C-f /ssh:myuser@myhost:~/example.txt&lt;br /&gt;
&lt;br /&gt;
TRAMP のパスは &#039;/[protocol]:[[user@]host]:&amp;lt;file&amp;gt;&#039; という形式で指定します。TRAMP がサポートしているのは上記の例に限りません。詳しくは TRAMP の info マニュアルを参照してください。マニュアルは Emacs に付属しています。&lt;br /&gt;
&lt;br /&gt;
=== キーボードマクロとレジスタ ===&lt;br /&gt;
&lt;br /&gt;
This section will provide a practical demonstration of the use of a couple of more powerful editing features.  Namely, &#039;&#039;keyboard macros&#039;&#039; and &#039;&#039;registers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The aim will be to produce a listing of a series of characters and their corresponding position in this list.  While it is possible to format each of them by hand, this would be slow and error-prone.  Alternatively, some of Emacs&#039; more powerful editing functionality could be leveraged.  Before describing a solution, some details behind the techniques which will be used follow.&lt;br /&gt;
&lt;br /&gt;
The first feature which will be introduced is &#039;&#039;registers&#039;&#039;.  Registers are used to store and retrieve a variety of data types ranging from numbers to window configurations.  Each register is given a name of a single character: this character is used to access the register.&lt;br /&gt;
&lt;br /&gt;
The other which will be demonstrated is &#039;&#039;keyboard macros&#039;&#039;.  A keyboard macro stores a sequence of commands so they can be easily repeated later.  These changes will now be performed step-by-step.&lt;br /&gt;
&lt;br /&gt;
Starting with a buffer containing our set of characters:&lt;br /&gt;
 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&lt;br /&gt;
&lt;br /&gt;
Prepare a register by invoking the `number-to-register&#039; command (&#039;&#039;&#039;C-x r n&#039;&#039;&#039;) then storing the number &#039;0&#039; in register &#039;k&#039;:&lt;br /&gt;
&lt;br /&gt;
 C-x r n k&lt;br /&gt;
&lt;br /&gt;
With point at the beginning of the buffer, start a keyboard macro (&#039;&#039;&#039;C-x (&#039;&#039;&#039;) and begin to format the characters:&lt;br /&gt;
&lt;br /&gt;
 C-x ( C-f M-4 .&lt;br /&gt;
&lt;br /&gt;
Insert (&#039;&#039;&#039;C-x r i&#039;&#039;&#039;) and increment (&#039;&#039;&#039;C-x r +&#039;&#039;&#039;) the register &#039;k&#039;. The prefix argument (&#039;&#039;&#039;C-u&#039;&#039;&#039;) is used to leave point positioned after the inserted text:&lt;br /&gt;
&lt;br /&gt;
 C-u C-x r i k C-x r + k&lt;br /&gt;
&lt;br /&gt;
Complete the formatting by inserting a newline.  Emacs can then repeat that process, beginning from the point where we started defining the keyboard macro, for the rest of the characters.  &#039;&#039;&#039;C-x e&#039;&#039;&#039; completes then invokes the keyboard macro.  The prefix argument, &#039;&#039;&#039;M-0&#039;&#039;&#039;, causes the macro to repeat until it comes across an error.  In this case it aborts once it reaches the end of the buffer.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;RET&amp;gt; M-0 C-x e&lt;br /&gt;
&lt;br /&gt;
The result:&lt;br /&gt;
&lt;br /&gt;
  A....0&lt;br /&gt;
  B....1&lt;br /&gt;
  C....2&lt;br /&gt;
  [...]&lt;br /&gt;
  x....49&lt;br /&gt;
  y....50&lt;br /&gt;
  z....51&lt;br /&gt;
&lt;br /&gt;
If you want to save your macro for later use, you must give it a name and save it to your configuration file:&lt;br /&gt;
 name-last-kbd-macro &lt;br /&gt;
 insert-kbd-macro&lt;br /&gt;
&lt;br /&gt;
All defined macros are stored in the macro ring. To cycle between macros, use&lt;br /&gt;
 &#039;&#039;&#039;C-x C-k C-n&#039;&#039;&#039;  next macro&lt;br /&gt;
 &#039;&#039;&#039;C-x C-k C-p&#039;&#039;&#039;  previous macro&lt;br /&gt;
&lt;br /&gt;
You can also use registers to save virtually anything.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-x r SPC&#039;&#039;&#039; Copy current point (position) to register&lt;br /&gt;
 &#039;&#039;&#039;C-x r w&#039;&#039;&#039;   Copy current window configuration to register.&lt;br /&gt;
 &#039;&#039;&#039;C-x r j&#039;&#039;&#039;   Restore register.&lt;br /&gt;
 &lt;br /&gt;
So if you often work with windows side by side, for different project, you can save the configuration for the different projects and easily switch from one view to the other.&lt;br /&gt;
&lt;br /&gt;
You can list used registers with the &#039;&#039;&#039;list-registers&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== 正規表現 ===&lt;br /&gt;
&lt;br /&gt;
Emacs Manual より: &amp;quot;正規表現 (&#039;&#039;regexp&#039;&#039; と略す) とは、一致する可能性がある一連の (無限個でもよい) 文字列を表現するパターンである&amp;quot;。このセクションでは正規表現自体には深くは立ち入りません (単純に説明しきれない)。そのかわり正規表現のパワーを簡単にデモンストレーションします。詳しい説明は Emacs Manual の [https://www.gnu.org/software/emacs/manual/html_node/elisp/Regular-Expressions.html#Regular-Expressions Regular Expressions] セクションを見て下さい。&lt;br /&gt;
&lt;br /&gt;
Given the same scenario presented above: A list of characters which are to be formatted to represent their respective position in the list. (see [[#キーボードマクロとレジスタ|Keyboard macros and registers]]).  Again, starting with a buffer containing.&lt;br /&gt;
&lt;br /&gt;
 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&lt;br /&gt;
&lt;br /&gt;
At the beginning of the buffer, use &#039;&#039;&#039;C-M-%&#039;&#039;&#039; (if the key-sequence is difficult to perform, it may be more comfortable to use &#039;&#039;&#039;M-x query-replace-regexp&#039;&#039;&#039;).  At the prompt:&lt;br /&gt;
 \(.\)&lt;br /&gt;
which simply matches one character.  Then, when prompted for the replacement:&lt;br /&gt;
 \1....\#^J&lt;br /&gt;
{{Note|&#039;^J&#039; represents where a newline should be placed, it should not be entered into the prompt.  The newline must instead be inserted literally using &#039;&#039;&#039;C-q C-j&#039;&#039;&#039;.}}&lt;br /&gt;
The replacement expression reads: &amp;quot;Insert the matched text between the first set of parentheses (in this case, a single character), followed by 4 periods then insert an automatically incremented number followed by a newline.&lt;br /&gt;
&lt;br /&gt;
Finally, press &#039;&#039;&#039;!&#039;&#039;&#039; to apply this across the entire buffer.  All of the formatting that was performed in the previous section was performed with a single regexp replacement.&lt;br /&gt;
&lt;br /&gt;
=== 矩形選択 ===&lt;br /&gt;
&lt;br /&gt;
先進的なテキストエディタが当然備えているべき強力な機能として、テキストを矩形で選択・編集できるというのがあるでしょう。&lt;br /&gt;
&lt;br /&gt;
Emacs でも矩形選択は可能です。&#039;&#039;&#039;C-SPC&#039;&#039;&#039; で普通にテキストを選択してから、複数の矩形コマンドを使うことができます。&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-x r t&#039;&#039;&#039;  Replace rectangle with text.&lt;br /&gt;
 &#039;&#039;&#039;C-x r k&#039;&#039;&#039;  Kill (and save in kill-ring) rectangle.&lt;br /&gt;
 &#039;&#039;&#039;C-x r y&#039;&#039;&#039;  Yank rectangle.&lt;br /&gt;
 &#039;&#039;&#039;C-x r o&#039;&#039;&#039;  Blank out rectangle.&lt;br /&gt;
&lt;br /&gt;
たとえハイライトされていても、上記のコマンドが矩形の外のテキストに影響を与えることはありません。&lt;br /&gt;
&lt;br /&gt;
=== ブックマーク ===&lt;br /&gt;
&lt;br /&gt;
Emacs は開いたファイルのリストを記録できます。&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-x r m&#039;&#039;&#039; カレントバッファをブックマークに追加。&lt;br /&gt;
 &#039;&#039;&#039;C-x r b&#039;&#039;&#039; ブックマークからバッファを開く。&lt;br /&gt;
 &#039;&#039;&#039;C-x r l&#039;&#039;&#039; ブックマークの確認。&lt;br /&gt;
&lt;br /&gt;
=== Elisp インタプリタ ===&lt;br /&gt;
&lt;br /&gt;
Evaluate an elisp expression using &#039;&#039;&#039;eval-last-sexp&#039;&#039;&#039; (&#039;&#039;&#039;C-x C-e&#039;&#039;&#039;). Emacs always spawns a &#039;&#039;&#039;*scratch*&#039;&#039;&#039; buffer when started. It will not be saved to disk, feel free to add any text / code you want. It is especially useful for elisp evaluation. Note that this buffer starts using &#039;&#039;&#039;lisp-interaction-mode&#039;&#039;&#039; by default.&lt;br /&gt;
&lt;br /&gt;
Alternatively, Emacs provides a top-level elisp interpreter with the &#039;&#039;&#039;ielm&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== スマートなウィンドウ切り替え ===&lt;br /&gt;
&lt;br /&gt;
長い間使っていると &#039;&#039;&#039;C-x o&#039;&#039;&#039; による伝統的なウィンドウ切り替えは面倒かもしれません。&#039;&#039;&#039;windmove&#039;&#039;&#039; コマンドはもっと便利にウィンドウを切り替えることができます。{{ic|Shift}} を押しながら方向キーでウィンドウを指定するだけです。&lt;br /&gt;
&lt;br /&gt;
windmove キーを有効にするには、設定ファイルに以下を記述してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.emacs|&lt;br /&gt;
(when (fboundp &#039;windmove-default-keybindings)&lt;br /&gt;
  (windmove-default-keybindings))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== シェルコマンドの実行 ===&lt;br /&gt;
&lt;br /&gt;
Use &#039;&#039;&#039;M-!&#039;&#039;&#039; to call an external command. Use a prefix argument (&#039;&#039;&#039;C-u M-!&#039;&#039;&#039;) to output the result to current buffer at point.&lt;br /&gt;
&lt;br /&gt;
You can use &#039;&#039;&#039;M-|&#039;&#039;&#039; on a region to use it as input for a command. For instance&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-u M-| sort -u RET&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
will sort region, remove duplicates and replace the region with the result.&lt;br /&gt;
&lt;br /&gt;
=== シェルバッファ ===&lt;br /&gt;
&lt;br /&gt;
You can spawn a shell buffer and execute commands just like you would do in any terminal.&lt;br /&gt;
A classic shell buffer can be spawned with the &#039;&#039;&#039;shell&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
Emacs features a very powerful shell entirely written in Emacs Lisp, the &#039;&#039;&#039;eshell&#039;&#039;&#039;. The major advantage over shells like csh or zsh is that the native shell language is elisp itself. So you can use all advanced feature of elisp for your shell functions.&lt;br /&gt;
&lt;br /&gt;
=== 対応する括弧のハイライト ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;show-paren&#039;&#039;&#039; モードを使うことができます。デフォルトでは、対応する括弧が表示されるまで少し遅延がありますが、&#039;&#039;&#039;show-paren-delay&#039;&#039;&#039; を 0 に設定することでなくすことができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.emacs|&lt;br /&gt;
(setq show-paren-delay 0)&lt;br /&gt;
(show-paren-mode 1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== スペルチェック ===&lt;br /&gt;
&lt;br /&gt;
辞書を選択するには:&lt;br /&gt;
 &#039;&#039;&#039;M-x ispell-change-dictionary&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To check a single work use &#039;&#039;&#039;M-$&#039;&#039;&#039;.&lt;br /&gt;
You can start checking the whole buffer with&lt;br /&gt;
 &#039;&#039;&#039;M-x ispell-buffer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can enable on-the-fly spell checking by enabling the &#039;&#039;&#039;flyspell-mode&#039;&#039;&#039;. For source code files you can restrict the mode to comments by using the  &#039;&#039;&#039;flyspell-prog-mode&#039;&#039;&#039; instead. You will also need the &#039;&#039;aspell&#039;&#039; package for spelling in Emacs. There are corresponding packages for each language, so for English, you&#039;d also want &#039;&#039;aspell-en&#039;&#039; (as well as &#039;&#039;aspell&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== テーブル ===&lt;br /&gt;
&lt;br /&gt;
Emacs comes with some powerful functions to handle and generate tables for various languages. Let&#039;s show an example.&lt;br /&gt;
&lt;br /&gt;
 Fruits  Quantity&lt;br /&gt;
 Apples  5&lt;br /&gt;
 Melons  2&lt;br /&gt;
&lt;br /&gt;
Now select the previous content in a region, and run&lt;br /&gt;
 table-capture&lt;br /&gt;
&lt;br /&gt;
Use two spaces for the column delimiter, and a line break (&#039;&#039;&#039;C-q C-j&#039;&#039;&#039;) for the row delimiter.&lt;br /&gt;
This will lead to the following result.&lt;br /&gt;
&lt;br /&gt;
 +------+--------+&lt;br /&gt;
 |Fruits|Quantity|&lt;br /&gt;
 +------+--------+&lt;br /&gt;
 |Apples|5       |&lt;br /&gt;
 +------+--------+&lt;br /&gt;
 |Melons|2       |&lt;br /&gt;
 +------+--------+&lt;br /&gt;
&lt;br /&gt;
You can revert back the operation with &lt;br /&gt;
 table-release&lt;br /&gt;
There is a lot of handy &#039;&#039;table-*&#039;&#039; functions, like &#039;&#039;table-insert-row&#039;&#039;, &#039;&#039;table-span-cell&#039;&#039;, &#039;&#039;table-widen-cell&#039;&#039;, etc.&lt;br /&gt;
&lt;br /&gt;
Finally, the ultimate purpose of the &#039;&#039;table&#039;&#039; functions is to convert it to the desired markup language.&lt;br /&gt;
Use the &#039;&#039;table-generate-source&#039;&#039; for that.&lt;br /&gt;
For LaTeX, the previous table would result in&lt;br /&gt;
&lt;br /&gt;
 % This LaTeX table template is generated by emacs 24.2.1&lt;br /&gt;
 \begin{tabular}{|l|l|}&lt;br /&gt;
 \hline&lt;br /&gt;
 Fruits &amp;amp; Quantity \\&lt;br /&gt;
 \hline&lt;br /&gt;
 Apples &amp;amp; 5 \\&lt;br /&gt;
 \hline&lt;br /&gt;
 Melons &amp;amp; 2 \\&lt;br /&gt;
 \hline&lt;br /&gt;
 \end{tabular}&lt;br /&gt;
&lt;br /&gt;
Using the table mode you can also do some spreadsheet work like sum on rows and columns, but you will quickly find it limited. Besides it is quite slow. Have a look at the [[#予定表、スプレッドシート、文章作成|org-mode]] for much more powerful possibilities.&lt;br /&gt;
&lt;br /&gt;
=== 予定表、スプレッドシート、文章作成 ===&lt;br /&gt;
&lt;br /&gt;
Emacs can offer powerful office features thanks to the famous and powerful [http://orgmode.org/ Org mode]. This mode is part of the standard Emacs distribution.&lt;br /&gt;
&lt;br /&gt;
Org mode is originally a powerful TODO and Agenda agent, but has quickly evolved to a much wider set of features.&lt;br /&gt;
There is simply too much to tell about Org that we cannot aford even to skim over all the features. So we will only whet your appetite with a few exemples.&lt;br /&gt;
&lt;br /&gt;
Open a new file TODO.org file, Org mode should be loaded. If not, switch to it with &#039;&#039;&#039;M-x org-mode&#039;&#039;&#039;.&lt;br /&gt;
{{hc|TODO.org|&lt;br /&gt;
* First entry&lt;br /&gt;
** Subentry&lt;br /&gt;
   Some comments&lt;br /&gt;
*** Subsubentry&lt;br /&gt;
* Second entry&lt;br /&gt;
  - List item 1&lt;br /&gt;
  - List item 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Now a few useful bindings.&lt;br /&gt;
* &#039;&#039;&#039;TAB&#039;&#039;&#039; to cycle-fold current entry.&lt;br /&gt;
* &#039;&#039;&#039;S-TAB&#039;&#039;&#039; to cycle-fold all entries.&lt;br /&gt;
* &#039;&#039;&#039;M-RET&#039;&#039;&#039; to start a new item on the same level as the current one.&lt;br /&gt;
* &#039;&#039;&#039;M-&amp;lt;left&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;M-&amp;lt;right&amp;gt;&#039;&#039;&#039; to change level.&lt;br /&gt;
* &#039;&#039;&#039;M-&amp;lt;up&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;M-&amp;lt;down&amp;gt;&#039;&#039;&#039; to move item together with all its subsections.&lt;br /&gt;
* &#039;&#039;&#039;S-&amp;lt;left&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;S-&amp;lt;right&amp;gt;&#039;&#039;&#039; to change status. On list items it will change the item style.&lt;br /&gt;
* &#039;&#039;&#039;S-&amp;lt;up&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;S-&amp;lt;down&amp;gt;&#039;&#039;&#039; to change priority.&lt;br /&gt;
* &#039;&#039;&#039;C-c ^&#039;&#039;&#039; to sort all subentries of the current entry.&lt;br /&gt;
* &#039;&#039;&#039;C-c .&#039;&#039;&#039; to add a timestamp to the current entry. Use {{ic|Shift}} and arrows to skip days or weeks. Use the mouse on the calendar or press {{ic|Enter}} on a specific day to choose it.&lt;br /&gt;
&lt;br /&gt;
The spreadsheet features are very comprehensive. Let&#039;s give an excerpt from the manual:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
    Finally, just to whet your appetite for what can be done with the&lt;br /&gt;
 fantastic `calc.el&#039; package, here is a table that computes the Taylor&lt;br /&gt;
 series of degree `n&#039; at location `x&#039; for a couple of functions.&lt;br /&gt;
&lt;br /&gt;
     |---+-------------+---+-----+--------------------------------------|&lt;br /&gt;
     |   | Func        | n | x   | Result                               |&lt;br /&gt;
     |---+-------------+---+-----+--------------------------------------|&lt;br /&gt;
     | # | exp(x)      | 1 | x   | 1 + x                                |&lt;br /&gt;
     | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |&lt;br /&gt;
     | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |&lt;br /&gt;
     | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |&lt;br /&gt;
     | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |&lt;br /&gt;
     | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |&lt;br /&gt;
     |---+-------------+---+-----+--------------------------------------|&lt;br /&gt;
     #+TBLFM: $5=taylor($2,$4,$3);n3&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Org mode recognizes a table when the pipe &#039;&#039;&#039;|&#039;&#039;&#039; is the first non-whitespace character on line. In the previous text, no line was drawn. This is done automatically when &#039;&#039;&#039;TAB&#039;&#039;&#039; is pressed after an entry or the &#039;&#039;&#039;|-&#039;&#039;&#039; sequence. The result column was not written by hand neither, it is computed from the calc formula on the last line. Use &#039;&#039;&#039;C-u C-c C-c&#039;&#039;&#039; to recompute all values in a table.&lt;br /&gt;
&lt;br /&gt;
There is also some handy row and column manipulation bindings like those for the TODO file. {{ic|Alt}} plus arrows will move columns and arrows.&lt;br /&gt;
&lt;br /&gt;
For more in-depth details, refer to the official manual: &#039;&#039;&#039;C-h i m Org mode RET&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== リファクタリングとスマート補完 ===&lt;br /&gt;
&lt;br /&gt;
(Eclipse などの) IDE が大抵備えているプログラミング機能が必要な場合、[http://cedet.sourceforge.net/semantic.shtml Semantic] ツールが役に立ちます。Semantic は Emacs の標準ディストリビューションに含まれています。現在 C, C++, Scheme, Javascript, Java, HTML, Make がサポートされています。現在のサポート状況は [http://cedet.sourceforge.net/languagesupport.shtml CEDET のページ] で確認できます。&lt;br /&gt;
&lt;br /&gt;
Open a file in your favorite programming language supported by Semantic and turn on the Semantic minor mode with&lt;br /&gt;
 M-x semantic-mode&lt;br /&gt;
Semantic will work for a few seconds parsing the libraries included from your file (in C that would mostly be the standard library for instance).&lt;br /&gt;
&lt;br /&gt;
==== 機能 ====&lt;br /&gt;
&lt;br /&gt;
Once done, you can start using the great Semantic features:&lt;br /&gt;
;Smart completion&lt;br /&gt;
Press &#039;&#039;&#039;C-c , SPC&#039;&#039;&#039; to complete a symbol at point. If it is an argument, it will check for type correctness.&lt;br /&gt;
&lt;br /&gt;
;Jump to symbol&lt;br /&gt;
Press &#039;&#039;&#039;C-c , j&#039;&#039;&#039; to prompt for a symbol and jump to its definition. You can use auto-completion with &#039;&#039;&#039;TAB&#039;&#039;&#039;. Use a capital &#039;&#039;&#039;J&#039;&#039;&#039; to search for symbol accross files.&lt;br /&gt;
&lt;br /&gt;
;List symbol calls&lt;br /&gt;
Press &#039;&#039;&#039;C-c , g&#039;&#039;&#039; to prompt for a symbol and list the places where it is being referred to. You can use &#039;&#039;&#039;n&#039;&#039;&#039; and &#039;&#039;&#039;p&#039;&#039;&#039; to navigate through the resulting entries. Press &#039;&#039;&#039;RET&#039;&#039;&#039; to toggle details, and &#039;&#039;&#039;RET&#039;&#039;&#039; again on a reference to jump to it. Use a capital &#039;&#039;&#039;G&#039;&#039;&#039; in the first command to work across files.&lt;br /&gt;
&lt;br /&gt;
;Refactoring&lt;br /&gt;
First list use of the symbol you want to refactor with the aforementioned command. Now press &#039;&#039;&#039;(&#039;&#039;&#039; to start defining a macro on the symbol. This is actually much more powerful than refactoring since you can apply any function to the symbol and even act on its surrounding symbols. Press &#039;&#039;&#039;C-x )&#039;&#039;&#039; to finish the macro and &#039;&#039;&#039;E&#039;&#039;&#039; to call it.&lt;br /&gt;
&lt;br /&gt;
;Describe symbol&lt;br /&gt;
Call the following function to display details on a symbol.&lt;br /&gt;
 semantic-ia-show-summary&lt;br /&gt;
This can be very useful for complexe data structures and function prototypes. There is no binding by default.&lt;br /&gt;
&lt;br /&gt;
==== 設定 ====&lt;br /&gt;
&lt;br /&gt;
Here follows a sample configuration for use of Semantic with all supported programming languages: an example binding and a display configuration.&lt;br /&gt;
 ;; Semantic with ghost display (allows M-n and M-p to browse completion).&lt;br /&gt;
 (semantic-mode 1)&lt;br /&gt;
 (define-key my-keys-minor-mode-map (kbd &amp;quot;C-c , d&amp;quot;) &#039;semantic-ia-show-summary)&lt;br /&gt;
 (setq semantic-complete-inline-analyzer-displayor-class &#039;semantic-displayor-ghost)&lt;br /&gt;
&lt;br /&gt;
You can also add some specialization for a specific language. Here for C:&lt;br /&gt;
 (add-hook&lt;br /&gt;
  &#039;c-mode-hook&lt;br /&gt;
  (lambda ()&lt;br /&gt;
    (local-set-key (kbd &amp;quot;M-TAB&amp;quot;) &#039;semantic-complete-analyze-inline)&lt;br /&gt;
    (local-set-key &amp;quot;.&amp;quot; &#039;semantic-complete-self-insert)&lt;br /&gt;
    (local-set-key &amp;quot;&amp;gt;&amp;quot; &#039;semantic-complete-self-insert)))&lt;br /&gt;
&lt;br /&gt;
==== 文献 ====&lt;br /&gt;
&lt;br /&gt;
Emacs から直接 info マニュアルにアクセスすることが可能です: &#039;&#039;&#039;C-h i m Semantic RET&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
=== Emacs を git のマージツールとして使う ===&lt;br /&gt;
&lt;br /&gt;
By default, Git provides support for using Emacs&#039; Emerge mode as a merge tool. However you may prefer the Ediff mode. Unfortunately this mode is not supported by git for technical reasons. There is still a way to use it by evaluating some elisp code upon emacs call.&lt;br /&gt;
&lt;br /&gt;
{{hc|.gitconfig|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[mergetool.ediff]&lt;br /&gt;
    cmd = emacs --eval \&amp;quot; (progn (defun ediff-write-merge-buffer () (let ((file ediff-merge-store-file)) (set-buffer ediff-buffer-C) (write-region (point-min) (point-max) file) (message \\\&amp;quot;Merge buffer saved in: %s\\\&amp;quot; file) (set-buffer-modified-p nil) (sit-for 1))) (setq ediff-quit-hook &#039;kill-emacs ediff-quit-merge-hook &#039;ediff-write-merge-buffer) (ediff-merge-files-with-ancestor \\\&amp;quot;$LOCAL\\\&amp;quot; \\\&amp;quot;$REMOTE\\\&amp;quot; \\\&amp;quot;$BASE\\\&amp;quot; nil \\\&amp;quot;$MERGED\\\&amp;quot;))\&amp;quot; &lt;br /&gt;
&lt;br /&gt;
[merge]&lt;br /&gt;
	tool = ediff&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Note that the command has to be on a single line.&lt;br /&gt;
In the above example, we launch a new instance of Emacs. You might want to use emacsclient for quicker startup; it is not recommended though since the Ediff call is not really clean: it could mess with your current Emacs session.&lt;br /&gt;
&lt;br /&gt;
If you want an instant startup you can use the &#039;&#039;&#039;-q&#039;&#039;&#039; parameter. If you want to launch Emacs quickly while preserving at least a part of your configuration, you can call Emacs with&lt;br /&gt;
  emacs -q -l ~/.emacs-light&lt;br /&gt;
where the light configuration file loads only what you need for Ediff.&lt;br /&gt;
&lt;br /&gt;
See [http://kerneltrap.org/mailarchive/git/2007/7/1/250424 kerneltrap.org] and [https://stackoverflow.com/questions/1817370/using-ediff-as-git-mergetool stackoverflow] for more details on this trick and the Ediff issue.&lt;br /&gt;
&lt;br /&gt;
=== Caps Lock キーを Control キーとして使う ===&lt;br /&gt;
いわゆる &#039;emacs 小指&#039; にならないようにこちらの挙動を好むユーザーもいます。X で試用してみたいときは、次を実行:&lt;br /&gt;
 $ setxkbmap -option &#039;ctrl:nocaps&#039;&lt;br /&gt;
&lt;br /&gt;
また、キーを&#039;&#039;&#039;交換&#039;&#039;&#039;するには、次を実行:&lt;br /&gt;
 $ setxkbmap -option &#039;ctrl:swapcaps&#039;&lt;br /&gt;
&lt;br /&gt;
永続的に設定したくなったら、{{ic|.xinitrc}} ファイルに上のコマンドを追加してください。&lt;br /&gt;
&lt;br /&gt;
リージョンを小文字から大文字にする必要がある場合は、デフォルトの {{ic|C-x C-u}} キーバインディングを使って下さい、{{ic|upcase-region}} 関数が呼び出されます。&lt;br /&gt;
&lt;br /&gt;
Caps Lock がない場合は、両方の &amp;quot;Shift&amp;quot; にマッピングしてください:&lt;br /&gt;
 $ setxkbmap -option &amp;quot;shift:both_capslock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
一部のデスクトップ環境にはキーボードのマッピングを変更するためのグラフィカルなツールが含まれています。例えば [[Plasma|Plasma 5]] ならシステム設定を開いて入力デバイスをクリックしてください。キーボードを選択して高度な設定タブから Caps Lock を Ctrl として使用するように設定できます。&lt;br /&gt;
&lt;br /&gt;
== パッケージ ==&lt;br /&gt;
&lt;br /&gt;
Emacs の機能はサードパーティ製のパッケージで拡張できます。公式にサポートされているパッケージマネージャとして {{ic|package.el}} が組み込まれていますが、Emacs のコミュニティメンバーによって書かれたパッケージマネージャが他にも存在します。{{ic|package.el}} は {{ic|package-archives}} 変数を使ってパッケージを検索します。デフォルトでは [https://elpa.gnu.org/ Emacs Lisp Package Archive (ELPA)] が含まれています。{{ic|M-x list-packages}} で Emacs が認識している全てのパッケージが列挙されたバッファが作成されます。マニュアル ({{ic|[https://www.gnu.org/software/emacs/manual/html_node/emacs/Packages.html (info &amp;quot;(emacs) Packages&amp;quot;)]}}) にはさらに詳しい情報が載っています。&lt;br /&gt;
&lt;br /&gt;
サードパーティ製のパッケージのアーカイブを追加することもできます。[https://melpa.org/ MELPA] が広く使われています。&lt;br /&gt;
&lt;br /&gt;
人気の拡張の多くは {{ic|[community]}} リポジトリのパッケージや [[AUR]] からインストールできます。大抵の場合、パッケージの名前の前に &#039;emacs-&#039; が付きますが (例: {{Pkg|emacs-lua-mode}})、常にそうなっているわけではありません (例: {{AUR|auctex}})。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Arch Linux の Wiki を編集している場合は [[Emacs Mediawiki]] パッケージが役に立ちます。}}&lt;br /&gt;
&lt;br /&gt;
パッケージによっては設定ファイルに変更を加えないと機能が有効にならない場合があります。例えば、{{AUR|auctex}} をインストールしたときは、設定ファイルに以下を追加:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
(load &amp;quot;auctex.el&amp;quot; nil t t)&lt;br /&gt;
(load &amp;quot;preview-latex.el&amp;quot; nil t t)}}&lt;br /&gt;
&lt;br /&gt;
パッケージのソースコードや README で有効化する方法が書かれているはずです。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== Emacs が &#039;Undefined color: &amp;quot;WINDOW_FOREGROUND&amp;quot;&#039; というエラーメッセージで起動しない ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mcpp}} パッケージまたは {{Pkg|gcc}} パッケージをインストールする必要があります。&#039;&#039;xrdb&#039;&#039; は [[X resources]] を前処理するために C のプリプロセッサ &#039;&#039;cpp&#039;&#039; を使用します。C のプリプロセッサがインストールされていない場合、&#039;&#039;xrdb&#039;&#039; は C のプリプロセッサを実行しないため WINDOW_FOREGROUND が16進数のカラーコードに展開されません。&lt;br /&gt;
&lt;br /&gt;
=== カラー出力の問題 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、Emacs シェルはカラー表示に使われるエスケープシーケンスをそのまま表示してしまいます。つまり、カラー出力がされるべきところに変な記号が表示されます。&lt;br /&gt;
&lt;br /&gt;
この問題を解決するには以下を {{ic|~/.emacs}} に記述してください:&lt;br /&gt;
 (add-hook &#039;shell-mode-hook &#039;ansi-color-for-comint-mode-on)&lt;br /&gt;
&lt;br /&gt;
=== X ウィンドウでの文字の表示問題 ===&lt;br /&gt;
&lt;br /&gt;
X ウィンドウで emacs を起動した時にメインウィンドウの文字が全て黒縁の白四角になってしまう場合 (対応するフォントがインストールされていない文字を表示したときと同じような記号)、{{Pkg|xorg-fonts-75dpi}} や {{Pkg|xorg-fonts-100dpi}} をインストールして X ウィンドウを再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== 起動が遅い ===&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[#systemd ユニットとして|systemd ユニットとして]] Emacs を起動する方法でも起動時間を短縮できます。}}&lt;br /&gt;
&lt;br /&gt;
しばしば起動時間が遅くなる原因は2つあります。&lt;br /&gt;
&lt;br /&gt;
どちらが原因なのか調べるために、次のコマンドで Emacs を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -q&lt;br /&gt;
&lt;br /&gt;
このコマンドでも Emacs の起動が遅い場合、[[#不適切なネットワーク設定|不適切なネットワーク設定]]を参照してください。そうでない場合は、ほぼ確実に .emacs に問題があります。&lt;br /&gt;
&lt;br /&gt;
* {{ic|/etc/hosts}} の設定が間違っていると、Emacs の起動が5秒以上遅くなることになります。詳しくはネットワーク設定ガイドの &#039;[[ネットワーク設定#ホストネームの設定|ホストネームの設定]]&#039; を見てください。&lt;br /&gt;
&lt;br /&gt;
* A simple way to search for the cause is to comment-out (i.e., prefix lines with &#039;;&#039;) suspect sections of your {{ic|~/.emacs}} (or {{ic|~/.emacs.d/init.el}}) then start Emacs again to see if there&#039;s any change.  Keep in mind use of &amp;quot;require&amp;quot; and &amp;quot;load&amp;quot; can slow the startup down, especially when used with larger extensions.  They should, as a rule, only be used when their target is either: needed once Emacs starts or provides little more than &amp;quot;autoloads&amp;quot; for an extension.  Otherwise, use the &#039;autoload function directly.  For example, instead of:&lt;br /&gt;
&lt;br /&gt;
 (require &#039;anything)&lt;br /&gt;
&lt;br /&gt;
you might use:&lt;br /&gt;
&lt;br /&gt;
 (autoload &#039;anything &amp;quot;anything&amp;quot; &amp;quot;Select anything&amp;quot; t)&lt;br /&gt;
&lt;br /&gt;
=== Cannot open load file: ... ===&lt;br /&gt;
&lt;br /&gt;
The most common cause of this error is the &#039;load-path&#039; variable not including the path to the directory within which the extension is located.  To solve this, add the appropriate path to the list to be searched prior to attempting to load the extension:&lt;br /&gt;
&lt;br /&gt;
  (add-to-list &#039;load-path &amp;quot;/path/to/directory/&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
When attempting to use packages for extensions and Emacs has been configured with a prefix other than &#039;/usr&#039;, the load-path will need to be updated.  Place the following in {{ic|~/.emacs}} prior to the instructions provided by the package:&lt;br /&gt;
&lt;br /&gt;
  (add-to-list &#039;load-path &amp;quot;/usr/share/emacs/site-lisp&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
If compiling Emacs by hand, keep in mind that the default prefix is &#039;/usr/local&#039;.&lt;br /&gt;
&lt;br /&gt;
=== デッドアクセントキーの問題: &#039;&amp;lt;dead-acute&amp;gt; is undefined&#039; ===&lt;br /&gt;
&lt;br /&gt;
このバグについて Google で検索すると、次のリンクが見つかります:&lt;br /&gt;
https://lists.gnu.org/archive/html/help-gnu-emacs/2009-05/msg00167.html&lt;br /&gt;
&lt;br /&gt;
Explaining the problem: in recent versions of&lt;br /&gt;
b72&lt;br /&gt;
 Emacs, the normal way to use accent keys doesn&#039;t work as expected. Trying to accent a word like &#039;fiancé&#039; will produce the message above.&lt;br /&gt;
&lt;br /&gt;
A way to solve it is just put the line above on your startup file, {{ic|~/.emacs}}:&lt;br /&gt;
&lt;br /&gt;
   (require &#039;iso-transl)&lt;br /&gt;
&lt;br /&gt;
And no, it isn&#039;t a bug, but a feature of new Emacs versions. Reading the subsequent messages about it on the mail list, we found it (https://lists.gnu.org/archive/html/help-gnu-emacs/2009-05/msg00179.html):&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;It seems that nothing is loaded automatically because there is a choice betwee iso-transl and iso-acc. Both seem to provide an input method with C-x 8 or Alt-&amp;lt;accent&amp;gt; prefix, but what you and I are doing is just pressing a dead key (^, ´, `, ~, ¨) for the accent and then another key to &amp;quot;compose&amp;quot; the accented character. And there is no Alt key used in this! And according to documentation it seems be appropriate for 8-bit encodings, so it should be pretty useless in UTF-8. I reported this bug when it was introduced, but the bug seems to be classified as a feature ... Maybe it&#039;s just because the file is auto-loaded though pretty useless. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== C-M-% やその他のバインディングが emacs nox で動作しない ===&lt;br /&gt;
&lt;br /&gt;
これはターミナルが Xorg よりも制限的であることが原因です。ただし、ターミナルによっては多くのバインディングを扱うことができることがあります。2つの解決法が考えられます:&lt;br /&gt;
* グラフィカルバージョンを使用する。&lt;br /&gt;
* サポートされているバインディングに変更する。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
{{hc|.emacs|&lt;br /&gt;
(global-set-key (kbd &amp;quot;C-M-y&amp;quot;) &#039;query-replace-regexp)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Emacs がフリーズする ===&lt;br /&gt;
&lt;br /&gt;
シングルスレッドであるがゆえに、Emacs は様々な操作でブロックします。フリーズが発生する状況は様々です。例えば、Emacs はあなたからの入力を待っているのかもしれません (例えばあるフレームでミニバッファを開いているのに他のフレームで作業しようとしている場合など)。あるいは、Emacs は完了するまで時間のかかるコードを実行中なのかもしれません。あるいはバグを踏んだという可能性もあります。Emacs プロセスを殺さずに Emacs のブロックを解除する方法は複数存在します。&lt;br /&gt;
&lt;br /&gt;
* {{ic|C-g}} を押してみる。Emacs が行っていることによっては、複数回押す必要があります。&lt;br /&gt;
* {{ic|ESC ESC ESC}} を押してみる。&lt;br /&gt;
* 他のターミナルで {{ic|killall -SIGUSR2 emacs}} を実行する。&lt;br /&gt;
&lt;br /&gt;
=== Emacs-nox の出力が汚い ===&lt;br /&gt;
&lt;br /&gt;
When working in a terminal, the color, indentation, or anything related to the output might become crazy. This is (probably?) because Emacs was sent a special character at some point which may conflict with the current terminal.&lt;br /&gt;
If this happens you can do {{ic|M-x redraw-display}}, which will redraw the terminal&#039;s display. If this problem happens frequently, you might want to bind the command to a key, e.g. by putting something like&lt;br /&gt;
 (global-set-key (kbd &amp;quot;&amp;lt;f7&amp;gt;&amp;quot;) &#039;redraw-display)&lt;br /&gt;
in your .emacs file.&lt;br /&gt;
&lt;br /&gt;
Graphical Emacs does not suffer from this issue.&lt;br /&gt;
&lt;br /&gt;
=== emacs ターミナルにおかしなエスケープ数字 (utf-8) が表示される ===&lt;br /&gt;
&lt;br /&gt;
{{ic|.bashrc}} または {{ic|.zshrc}} で以下の変数をエクスポートしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.bashrc|2=&lt;br /&gt;
export LANG=&amp;quot;en_US.UTF-8&amp;quot;&lt;br /&gt;
export LC_ALL=&amp;quot;en_US.UTF-8&amp;quot;&lt;br /&gt;
export TERM=xterm-256color&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
小文字の utf を使っていることがエラーの原因です (例: en_US.utf-8)。&lt;br /&gt;
&lt;br /&gt;
利用可能なロケールは {{ic|locale -a}} で確認できます。&lt;br /&gt;
&lt;br /&gt;
=== tmux で emacs を使っているときに Shift + 矢印キーが動作しない ===&lt;br /&gt;
&lt;br /&gt;
まず [[tmux]] の設定で xterm-keys を有効にしてください:&lt;br /&gt;
{{hc|.tmux.conf|&lt;br /&gt;
setw -g xterm-keys on&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
しかしながら、この設定は他のキーコンビネーションを破壊します。それを修正するために、以下を emacs の設定に記述します:&lt;br /&gt;
{{hc|~/.emacs|&lt;br /&gt;
(defadvice terminal-init-screen&lt;br /&gt;
  ;; The advice is named `tmux&#039;, and is run before `terminal-init-screen&#039; runs.&lt;br /&gt;
  (before tmux activate)&lt;br /&gt;
  ;; Docstring.  This describes the advice and is made available inside emacs;&lt;br /&gt;
  ;; for example when doing C-h f terminal-init-screen RET&lt;br /&gt;
  &amp;quot;Apply xterm keymap, allowing use of keys passed through tmux.&amp;quot;&lt;br /&gt;
  ;; This is the elisp code that is run before `terminal-init-screen&#039;.&lt;br /&gt;
  (if (getenv &amp;quot;TMUX&amp;quot;)&lt;br /&gt;
    (let ((map (copy-keymap xterm-function-map)))&lt;br /&gt;
    (set-keymap-parent map (keymap-parent input-decode-map))&lt;br /&gt;
(set-keymap-parent input-decode-map map))))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://github.com/tmux/tmux/blob/master/FAQ#L242 tmux FAQ] を参照。&lt;br /&gt;
&lt;br /&gt;
=== KDE でウィンドウのリサイズがおかしい ===&lt;br /&gt;
KDE ユーザーには Emacs のウィンドウが正しくリサイズされないという現象がおこることがあります。リサイズした部分が透過されマウスでクリックしても下のウィンドウがクリックされます。この挙動を修正するには、KDE の GTK3 テーマを oxygen-gtk 以外のテーマに変更してください。例えば、{{Pkg|gtk3}} に含まれている Emacs テーマを使って下さい。&lt;br /&gt;
&lt;br /&gt;
KDE で Emacs を完全に最大化するには、タイトルバーの Emacs アイコンをクリックして、More Actions &amp;gt; Special Window Settings を選択してください。そして &amp;quot;Size &amp;amp; Position&amp;quot; タブで &amp;quot;Obey geometry restrictions&amp;quot; を選択して、ドロップダウンメニューで &amp;quot;Force&amp;quot; を選んで右のラジオボタンで &amp;quot;No&amp;quot; を選んで下さい。&lt;br /&gt;
&lt;br /&gt;
== 派生 ==&lt;br /&gt;
&lt;br /&gt;
Emacs の実装は多数存在します。おそらく GNU/Emacs が一番ポピュラーです。&lt;br /&gt;
&lt;br /&gt;
軽量な Emacs 互換のテキストエディタは Arch のリポジトリや [[AUR]] にあります。&lt;br /&gt;
&lt;br /&gt;
=== mg ===&lt;br /&gt;
&lt;br /&gt;
mg (旧名 MicroGnuEmacs) は C で書かれた軽量な Emacs の実装です。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mg}} パッケージから入手できますが、上流の [http://homepage.boetes.org/software/mg/ ページ] からソースをダウンロードすることも可能です。mg は UTF-8 をサポートしていません。&lt;br /&gt;
&lt;br /&gt;
=== zile ===&lt;br /&gt;
&lt;br /&gt;
公式ウェブ[https://www.gnu.org/software/zile/ ページ]によると &amp;quot;GNU Zile は軽量な Emacs クローンです。Zile は Zile Is Lossy Emacs の略となっています。Zile は出来る限り Emacs に近づくように書かれており、きっと全ての Emacs ユーザーの手に馴染むでしょう&amp;quot;。Zile は UTF-8 をサポートしていません。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|zile}} パッケージからインストールできます。&lt;br /&gt;
&lt;br /&gt;
最新の tarball は公式の GNU [http://ftp.sh.cvut.cz/MIRRORS/gnu/pub/gnu/zile/ ミラー] から落とせます。&lt;br /&gt;
&lt;br /&gt;
=== uemacs ===&lt;br /&gt;
&lt;br /&gt;
Linus Torvalds によるカスタム版 Micro-emacs。{{AUR|uemacs-git}} でインストール可能。&lt;br /&gt;
&lt;br /&gt;
最新 (2005) の tarball は [ftp://ftp.cs.helsinki.fi/pub/Software/Local/uEmacs-PK/ こちら] にあります。&lt;br /&gt;
&lt;br /&gt;
=== remacs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;remacs&#039;&#039;&#039; はコミュニティによる Emacs の Rust 移植です。{{AUR|remacs-git}} パッケージでインストールできます。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ GNU Emacs ホームページ]&lt;br /&gt;
* [https://www.gnu.org/software/emacs/manual/emacs.html GNU Emacs マニュアル]&lt;br /&gt;
* [http://www.emacswiki.org/cgi-bin/wiki/ Emacs Wiki]&lt;br /&gt;
* [http://wikemacs.org WikEmacs - 読みやすいが不完全な Emacs wiki]&lt;br /&gt;
* [http://www2.lib.uchicago.edu/keith/tcl-course/emacs-tutorial.html Emacs とそのショートカットの有用な紹介]&lt;br /&gt;
* [https://d0edfcdc0ccc1cd13cdab5eb986fb92e8660dbef.googledrive.com/host/0B6LMD0u8OhYYZEotN2QyR1hwR1k/ Emacs 教会 (Google ドライブ)]&lt;br /&gt;
* [https://www.gnu.org/software/emacs/refcards/pdf/refcard.pdf 公式リファレンスカード]&lt;br /&gt;
* [[EXWM]] - Emacs X Window Manager&lt;/div&gt;</summary>
		<author><name>がおびん</name></author>
	</entry>
</feed>