vim-jp / vimdoc-ja / wayland

wayland - Vim日本語ドキュメント

メインヘルプファイルに戻る English | 日本語 | 編集
wayland.txt   For Vim バージョン 9.2.  Last change: 2026 Apr 20


                  VIM リファレンスマニュアル    by Bram Moolenaar


Wayland プロトコルのサポート                            wayland

1. Wayland の役立つ情報         wayland-useful
2. Wayland セレクション         wayland-selections

==============================================================================
1. Wayland の役立つ情報                                 wayland-useful

                                                        wayland-seat
Wayland のクリップボードなどの機能を使用するには、シートが必要である。Wayland
シートは、キーボード、ポインター、タッチデバイスで構成される。使用するシートは
'wlseat' オプションで設定できる。これは、同じ Wayland セッションで複数の
Wayland シートを使用する場合にのみ役立つ。これが何を意味するのか分からないので
あれば、それはおそらくあなたにとって問題ではないだろう。

                                                        wayland-gui
gui-wayland を参照。GUI 使用時、Vim はクリップボードへのアクセスに GTK など
のツールキットを使用し、Wayland 経由ではアクセスしない。これは v:clipmethod
変数で確認できる。GUI 実行時にはこの変数は "none" になる。

Wayland のコマンド:
                                                        :wlrestore :wl
:wl[restore] [display]  Wayland コンポジタへの接続を再初期化する。Wayland コン
                        ポジタの再起動後も Vim を screen/tmux セッションで実行
                        し続ける場合に便利である。

                        [display] は、環境変数 $WAYLAND_DISPLAY の形式(例:
                        "wayland-0")で指定する必要がある。[display] を省略し
                        た場合は、このコマンドの前回実行時に使用された値と同じ
                        値を使用して接続を再初期化する。
                        値が指定されていない場合は、環境変数 $WAYLAND_DISPLAY
                        の値が使用される。また、v:clipmethod も更新される。
                        {Vimが +wayland 機能付きでコンパイルされたときのみ有
                        効}

Wayland のエラー:
                                                        E1548
Vim は Wayland コンポジタとの通信に失敗した。これは Wayland コンポジタのプロセ
スが強制終了したことが原因である可能性がある。再接続するには :wlrestore コマ
ンドを試すこと。

==============================================================================
2. Wayland セレクション                                 wayland-selections

Vim は、現在の Wayland セレクションにアクセスするための
wlr-data-control-unstable-v1 プロトコルと ext-data-control-v1 プロトコルをサ
ポートしている。この場合のセレクションは基本的に "clipboard" を指す。Wayland
コンポジタがこれらのプロトコルをサポートしているかどうかを確認するには、
wayland-info コマンドを実行する。このコマンドは、あなたのシステムでは
libwayland にバンドルされているはずである:
        wayland-info | grep -E '(ext_data_control|zwlr_data_control)'
grep で一致するものが見つかった場合、システムにはどちらか、または両方のプロト
コルが存在する。

どちらかまたは両方のプロトコルをサポートすることが知られているコンポジタの一部:
    1. KWin (KDE)
    2. wlroots based (Sway, Labwc)
    3. Niri
    4. Hyprland
    5. Wayfire

X11 から移行する場合、通常の Waylandセレクション は X11 のクリップボードセレク
ションに相当し、プライマリ Wayland セレクションは X11 のプライマリセレクション
に相当する。これらのセレクションへのアクセスは Vim の X11 と同様で、+ レジスタ
が通常のセレクション、* レジスタがプライマリセレクションである。Note コンポジ
タがプライマリセレクションをサポートしていない可能性があることに注意。詳細は
wayland-primary-selection を参照。

                                                        wayland-persist
X11 のカットバッファを使用する場合、Wayland にはそのような機能は存在しない。そ
のような機能をエミュレートするには、Wayland クライアントが終了した後も選択デー
タを保持するために、別のクリップボードマネージャーを使用する必要がある。

                                                        wayland-and-x11
使用している Vim のバージョンが X11 と Wayland の両方のサポートでコンパイルさ
れている場合、Vim は 'clipmethod' オプションを使用してクリップボードにアクセス
するときにどちらを使用するかを決定する。

                                                wayland-primary-selection
X11 スタイルのプライマリ選択が便利だと感じる場合、Wayland も Vim がサポートす
るプロトコルを使用してこの機能を実装している。ただし、wlr-data-control プロト
コルのバージョン 1 (プロトコル名の 'v1' とは異なる) を使用している場合は、プラ
イマリ選択はサポートされない。これを確認するには、以下を使用する
        wayland-info | grep -E '(ext_data_control|zwlr_data_control)'
"zwlr_data_control_manager_v1" の "version:" エントリが "2" 以上であれば、プラ
イマリ選択がサポートされる。また、"ext_data_control_manager_v1" も取得できた場
合は、Vim は代わりにそのプロトコルを使用する。このプロトコルにはプライマリ選択
のサポートが組み込まれている。

Wayland コンポジタが wlr-data-control-v1 または ext-data-control-v1 プロトコル
をサポートしていない場合、Vim は Wayland プロトコルを介してクリップボードに直
接アクセスできない。代わりに、ユーザー定義の clipboard-providers を介して
wl-clipboard などの外部ツールを使用できる。

例: wl-copy と wl-paste を実行するプロバイダを定義する: >vim9

    vim9script

    def Available(): bool
        return executable('wl-copy') && executable('wl-paste')
    enddef

    def Copy(reg: string, type: string, str: list<string>)
        var args = "wl-copy"

        if reg == "*"
            args ..= " -p"
        endif

        system(args, str)
    enddef

    def Paste(reg: string): tuple<string, list<string>>
        var args = "wl-paste --type text/plain;charset=utf-8"

        if reg == "*"
            args ..= " -p"
        endif

        return ("", systemlist(args))
    enddef

    v:clipproviders["wl_clipboard"] = {
        available: Available,
        copy: {
            "+": Copy,
            "*": Copy
        },
        paste: {
            "+": Paste,
            "*": Paste
        }
    }

    set clipmethod=wl_clipboard


これは、wl-clipboard パッケージがインストールされていることを前提としている
(https://github.com/bugaevc/wl-clipboard).

 vim:tw=78:ts=8:noet:ft=help:norl: