Posted:
| Categories:
WezTerm
| Tags:
WezTerm
WezTerm だけで “マウスを使わず URL を開く” ― 実装メモ
TL;DR
QuickSelectArgs で URL をハイライト- 選択した URL を
wezterm.open_with() で既定ブラウザへ [title](https://example.com) の ) を含めない ように正規表現を工夫
背景
WezTerm はデフォルトで Ctrl/Cmd + クリック するとリンクをブラウザで開けます。
しかし “手をキーボードから離したくない派” にはマウス操作すら面倒。
目標
- キー操作 だけで画面上の URL を一覧表示
- 選択した URL を即ブラウザで開く
- Markdown の
[text](URL) にも対応し、末尾の ) を除外
実装ステップ
1. コールバック関数
local wezterm = require 'wezterm'
local act = wezterm.action
-- 選択したテキスト (= URL) を既定ブラウザで開く
local open_selected_url = wezterm.action_callback(function(win, pane)
local url = win:get_selection_text_for_pane(pane)
:gsub('[).,;:]+$', '') -- 末尾の「),.;:」を念のため除去
if url ~= '' then
wezterm.open_with(url)
else
wezterm.log_info('No URL selected')
end
end)
Quick Select のパターン定義
-- Markdown・普通の URL・file://・IP:PORT
local quick_open_url = act.QuickSelectArgs{
label = 'open url',
patterns = {
-- [text](https://example.com/aaa) → () 内の URL だけキャプチャ
'\\[.*?\\]\\((https?://[^)\\s]+)\\)',
-- 文末括弧を拾わない汎用 https://URL
'https?://[^)\\s,.;:]+',
-- file:// パス
'file://\\S+',
-- 192.168.0.10:8000 形式
'\\b%d+%.%d+%.%d+%.%d+:%d+\\b',
},
action = open_selected_url,
}
ポイント
Read more...Posted:
| Categories:
WezTerm
| Tags:
WezTerm
WezTermを使い始めた背景
OSごとに設定を変える
wezterm.target_triple - Wez’s Terminal Emulator
キーテーブルを固定する機能がある。
例えばペインのサイズを変更する場合、私はHJKLのキーでサイズ調整している。
ペインのサイズを変更するたびに「ctrl + shift + h」を繰り返したりしている。
が、一度、リーダーキーを押してキーテーブルに入ったら、連続して「h」を押すだけで、サイズを調整できたりすると連続してサイズ調整できるので嬉しい。
WezTermに移行してみている
one_shot=false とするとモードに入ったかのようにできるので嬉しい。
{ key = 'y', mods = 'CTRL', action = wezterm.action.ActivateKeyTable { name = 'leader_option', one_shot = false } },
素敵な機能なのは間違いがない。ただ私個人の問題としてprefixキーがそろそろ使い切るというか、モードに入るためのキーバイドって悩ましい。
という訳で使いこなせてない。
私が使っているカラースキーム
一時期は穏やかなカラースキームを使っていたのだけど、ターミナルを透過する設定で使い出すと見えづらくなったので、コントラストが強いカラースキームを使うようになった。
https://wezfurlong.org/wezterm/colorschemes/n/index.html#neobones_light
個人的なTodo
ハイパーリンクの正規表現を設定する
Hyperlinks - Wez’s Terminal Emulator
Read more...Posted:
| Categories:
cli
| Tags:
cli,
neovim,
tmux,
wezterm
背景
CLI関連のツール、tmux, w3m, weztermのキーバインドを揃えたい。ひとまずリストを出す。 ローカルのマシン(macOSなりLinuxなどのデスクトップ環境)ではWezTermとtmuxを用いている。
(以前はgnome-terminal, mltermを用いていたが、sixel対応と設定がluaで書ける点からWezTermを始めた)
将来的に下記の条件が成立したらgnome-terminal, mltermに戻るかも
- tmuxのsixel対応が安定動作する
- macOS, Linuxの設定ファイルを共通にしたい(WezTermだとOSによってif文で設定を変えられる)
- tmuxもif-shellで振る舞いを分岐できるようになった
関連ページ
現在のキーバインド
prefix
| WezTerm(tmux1) | tmux2(ローカルで用いる) | tmux3(リモートで用いる) |
|---|
| ctrl + y | ctrl + t | ctrl + b |
リモートサーバ上でtmuxを用いる場合はtmux3のprefixを使う。
ショートカット
| wezterm | tmux | neovim | w3m |
|---|
| 新しいウィンドウ(タブ)を作る | c | c | tabnew | Ctrl + T |
| 現在のウィンドウ(タブ)を閉じる | Ctrl + d でexit | Ctrl + d でexit | :wq | Ctrl + Q |
| ウィンドウ(タブ)を右に移動 | n | n | gt | } |
| ウィンドウ(タブ)を左に移動 | p | p | gT | { |
| ウィンドウ(タブ)のリスト | | | | Esc + t |
設定が被らないように既存の設定を確認する
| 環境 | 表示方法 | 設定ファイル |
|---|
| bash | bind -P | ~/.inputrc |
| fish | bind あるいは fish_key_reader | ~/.config/fish/functions/fish_user_key_bindings.fish |
| tmux | prefix -> :list-keys | ~/.config/tmux/tmux.conf |
| w3m | 起動中にHを押す | ~/.w3m/keymap |
| wezterm | | |
Read more...