Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
gha-lab-456dd8a245 — セキュリティリサーチラボがCVE-2026-41414(.github/workflows/pr.yml内のpull_request_target pwn)を再現 — skim-rs/skim @ ca986f4のスナップショットであり、フォークではありません。 | Kitploit
ツール/GitHubGitHub/pvharmo2/gha-lab-456dd8a245
脆弱性分析エクスプロイトサプライチェーンセキュリティ学習と教育厳選リソース
GitHubpvharmo2/gha-lab-456dd8a245

gha-lab-456dd8a245

セキュリティリサーチラボがCVE-2026-41414(.github/workflows/pr.yml内のpull_request_target pwn)を再現 — skim-rs/skim @ ca986f4のスナップショットであり、フォークではありません。

リポジトリを見る
16時間33分前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

自動化された研究アーティファクト — 上流プロジェクトではありません。

このリポジトリは、ラヴァル大学の修士論文のために、公開されているGitHub Actionsワークフローの脆弱性を再現する目的で自動化ハーネスによって構築された使い捨てラボです。これは skim-rs/skim のコミット ca986f444c37d2c1dc15ce1fad2fe101776af8d9(2026-04-14)時点の逐語的なスナップショットであり、そのプロジェクト自身のライセンスの下で再配布されています。そのライセンスファイルはこのスナップショットに変更なしで含まれています。

上流プロジェクトは関与しておらず、標的にされることもありません。ここで研究されている脆弱性はすでに公開されています。このリポジトリ内のすべてのシークレットと変数はランダムに生成されたダミー値であり、実際の認証情報は存在しません。アクション参照とランナーイメージは、2026-04-14時点で解決されたものに固定されています。スナップショットに加えられたすべての変更については、ハーネス出力内の pinning.md を参照してください。

質問や異議がある場合: [email protected]


Crates.io Build & Test codecov badge Packaging status

Skim Discord
Skim Matrix room
Built with Ratatui

人生は短い、skimしよう!

私たちは、ファイル、行、コマンドの間を移動することに多くの時間を費やしています。そこで登場するのがSkimです! ワークフローをより速く、より効率的にするために設計された強力なファジーファインダーです。

skim demo

Skimは sk という単一の実行ファイルを提供します。grep のようなツールに対する、よりスマートな代替手段と考えてください。一度試せば、これなしでどうやって生きてきたのか不思議に思うでしょう!

目次

  • インストール
    • パッケージマネージャー
    • 手動
  • 使用方法
    • Vimプラグインとして
    • フィルターとして
    • 対話型インターフェースとして
    • シェルバインディング
    • キーバインディング
    • 検索構文
    • 終了コード
  • skim と互換性のあるツール
    • fzf-lua neovimプラグイン
    • nu_plugin_skim
  • カスタマイズ
    • キーマップ
    • ソート基準
    • カラースキーム
    • その他
  • 高度なトピック
    • 対話モード
      • どのように機能するのか?
    • 外部プログラムの実行
    • アルゴリズム
    • プレビューウィンドウ
      • どのように機能するのか?
    • フィールドサポート
    • ライブラリとしての使用
    • ベンチマーク
  • FAQ
    • ファイルを無視するには?
    • Vimプラグインで一部のファイルが表示されない
  • fzfとの違い
  • 貢献方法
    • Windows互換性テスト
  • トラブルシューティング
    • nix、FreeBSD、termuxでの改行の問題

インストール

skimプロジェクトにはいくつかのコンポーネントが含まれています:

  1. sk 実行ファイル - コアプログラム
  2. Vim/Nvimプラグイン - Vim/Nvim内で sk を呼び出すため。Vimサポートについては skim.vim を確認してください。

パッケージマネージャー

OSパッケージマネージャーコマンド
macOSHomebrewbrew install sk
macOSMacPortssudo port install skim
Alpineapkapk add skim
Archpacmanpacman -S skim
FedoraCOPR下記参照
GentooPortageemerge --ask app-misc/skim
Guixguixguix install skim
VoidXBPSxbps-install -S skim
Packaging status

Fedora

最新のFedoraパッケージは、非公式のコミュニティ保守によるCOPRリポジトリを通じて提供されています。```bash sudo dnf copr enable sisyphus1813/skim sudo dnf install skim

root@kitploit:~
## 手動インストール

以下のいずれかが該当します:

- インストールスクリプトを使用する場合:
    ```sh
    # 実行する前に必ずスクリプトの内容を確認してください!
    $ curl --proto '=https' --tlsv1.2 -LsSf https://github.com/skim-rs/skim/releases/latest/download/skim-installer.sh | sh
    ```
- バイナリを使用する場合: [sk 実行ファイルをダウンロード](https://github.com/skim-rs/skim/releases) するだけです。
- [crates.io](https://crates.io/) からインストール: `cargo install skim`
- 手動でビルドする場合:
    ```sh
    $ git clone --depth 1 [email protected]:skim-rs/skim.git ~/.skim
    $ cd ~/.skim
    $ cargo build --release
    $ # 生成された `target/release/sk` 実行ファイルを PATH に追加します
    ```

これで以下が利用可能になります:

- man ページ。正しいパスに書き込むか、`man --local-file <(sk --man)` を実行します
- シェル補完(およびオプションのキーバインド)。`source <(sk --shell \<shell> \[--shell-bindings])` を使用します。詳細は以下を参照してください

# 使用方法

Skim は、一般的なフィルタ(`grep` に類似)としても、コマンドを実行するための
対話型インターフェースとしても使用できます。

## Vim プラグインとして(neovim では、skim プロファイルを指定して [fzf-lua](https://github.com/ibhagwan/fzf-lua) を確認してください)

vim-plug 経由(推奨):

skim をインストールし、次に:```vim
Plug 'skim-rs/skim'

フィルタとして

始めるための例をいくつか示します。```bash

directly invoke skim

sk

Or pipe some input to it (press TAB key to select multiple items when -m is enabled)

vim $(find . -name "*.rs" | sk -m)

root@kitploit:~
この最後のコマンドは、拡張子が「.rs」のファイルを選択し、選択したファイルをVimで開くことができます。開発者にとって大きな時間節約になります!

## 対話型インターフェースとして

`skim`は他のコマンドを動的に呼び出すことができます。通常、プロジェクトディレクトリ内のコンテンツを検索するには、[grep](https://www.gnu.org/software/grep/)、[ack](https://github.com/petdance/ack2)、[ag](https://github.com/ggreer/the_silver_searcher)、または[rg](https://github.com/BurntSushi/ripgrep)と統合したいと思うでしょう:```sh
# works with grep
sk --ansi -i -c 'grep -rI --color=always --line-number {q} .'
# works with ack
sk --ansi -i -c 'ack --color {q}'
# works with ag
sk --ansi -i -c 'ag --color {q}'
# works with rg
sk --ansi -i -c 'rg --color=always --line-number {q}'

注記: これらの例では、{q} は現在の入力クエリ(シングルクォートで囲まれたもの)に文字通り展開されます。 つまり、これらの例は正確なクエリ文字列を検索し、ファジー検索は行いません。 ファジー検索を行うには、コマンド出力をインタラクティブモードを使わずに sk にパイプしてください。

インタラクティブモードのデモ

シェルバインディング

Fish、Bash、Zsh 用のバインディングは shell ディレクトリにあります:

  • completion.{shell} には sk CLI 使用時の補完スクリプトが含まれています
  • key-bindings.{shell} にはキーバインドとシェル統合が含まれています:
    • ctrl-t で sk を通じてファイルを選択
    • ctrl-r で sk を通じて履歴エントリを選択
    • alt-c で sk を通じて選択したディレクトリに cd する
    • (fish では利用不可) ** でファイルパスを補完。例えば ls **<tab> はフォルダを選択するための sk ウィジェットを表示します

これらの機能を有効にするには、key-bindings.{shell} ファイルをソースし、お使いのシェルのドキュメントに従って補完を設定するか、以下を参照してください。

シェル補完

対応するシェル(bash、zsh、fish、powershell、または elvish)のいずれかで --shell フラグを使用して、お好みのシェル用のシェル補完を生成できます:

オプション 1: 現在のシェルセッションで直接ソースする```sh

For bash

source <(sk --shell bash)

For zsh

source <(sk --shell zsh)

For fish

sk --shell fish | source

root@kitploit:~
#### オプション 2: シェル起動時に自動的に読み込まれるファイルに保存する```sh
# For bash, add to ~/.bashrc
echo 'source <(sk --shell bash)' >> ~/.bashrc  # Or save to ~/.bash_completion

# For zsh, add to ~/.zshrc
sk --shell zsh > ~/.zfunc/_sk  # Create ~/.zfunc directory and add to fpath in ~/.zshrc

# For fish, add to ~/.config/fish/completions/
sk --shell fish > ~/.config/fish/completions/sk.fish

キーバインド

よく使われるキーバインドは以下の通りです:

キーアクション
Enter確定(現在の項目を選択して終了)
ESC/Ctrl-G中止
Ctrl-P/↑カーソルを上に移動
Ctrl-N/↓カーソルを下に移動
TAB選択を切り替えて下に移動(-m 使用時)
Shift-TAB選択を切り替えて上に移動(-m 使用時)

キーバインドの完全な一覧については、man ページ(man sk)を参照してください。

検索構文

skim は項目のマッチングに fzf の構文を借用しています:

トークンマッチタイプ説明
textファジーマッチtext に一致する項目
^music前方完全一致music で始まる項目
.mp3$後方完全一致.mp3 で終わる項目
'wild完全一致(引用符付き)wild を含む項目
!fire逆完全一致fire を含まない項目
!.mp3$逆後方完全一致.mp3 で終わらない項目

skim はトークンの組み合わせにも対応しています。

  • 空白は AND の意味を持ちます。src main という語句では、skim は src と main の両方に一致する項目を検索します。

  • | は OR を意味します(| の前後のスペースに注意)。.md$ | .markdown$ という語句では、skim は .md または .markdown のいずれかで終わる項目を検索します。

  • OR は優先順位が高くなります。例えば、readme .md$ | .markdown$ は readme AND (.md$ OR .markdown$) として解釈されます。

  • --split-match オプションを使用する場合、スペースまたは | の周囲の各部分は分割方式でマッチングされます:

    • オプションの値(デフォルトは :)がクエリに存在しない場合は、通常のマッチングを行います
    • 存在する場合は、その前のすべてを項目内のその前のすべてにマッチさせ、その後のすべて(区切り文字の他の出現箇所も含む)を項目内のその後の部分にマッチさせます。これは、rg からの入力をパイプで渡してファイル名と内容の両方にマッチングさせる場合に特に便利です。

正規表現を使用したい場合は、skim は regex モードも提供しています:```sh sk --regex

root@kitploit:~
`Ctrl-R`(モード回転)を押すと、動的に `regex` モードに切り替えることができます。

## 終了コード

| 終了コード | 意味                             |
|-----------|-------------------------------------|
| 0         | 正常終了                     |
| 1         | 一致するものが見つからない                      |
| 130       | Ctrl-C/Ctrl-G/ESC などで中断された               |

# `skim` と互換性のあるツール

以下のツールは `skim` と互換性がある、または互換性を目指しています:

## [fzf-lua neovim プラグイン](https://github.com/ibhagwan/fzf-lua)

コード内をナビゲートするために fzf と skim を [neovim](https://neovim.io) 内で使用できるようにする [neovim](https://neovim.io) プラグインです。

README に従って、パッケージマネージャーでインストールしてください。例えば、`lazy.nvim` の場合:```lua
{
  "ibhagwan/fzf-lua",
  -- enable `sk` support instead of the default `fzf`
  opts = {'skim'}
}

nu_plugin_skim

nushell 用プラグインで、skim と nushell の間のより良い連携を可能にします。

プラグインの README の指示に従って、cargo でインストールできます:```nu cargo install nu_plugin_skim plugin add ~/.cargo/bin/nu_plugin_skim

root@kitploit:~
## [sqlite 拡張機能](https://github.com/tzachar/sqlite_skim)

SQL クエリ内で `skim_score` 関数を利用可能にする、ロード可能な `sqlite` モジュールです。

# カスタマイズ

ここに記載されているドキュメントはプレビューのみです。オプションの完全な一覧については、マニュアルページ(`man sk`)を参照してください。

## キーマップ

バインディングはカンマ区切りのペアで指定します(スペースは使用できません)。例:```sh
sk --bind 'alt-a:select-all,alt-d:deselect-all'

さらに、+ を使用してアクションを連結できます。例: execute-silent(echo {} | pbcopy)+abort。

詳細については、man ページの KEY BINDINGS セクションを参照してください。

ソート基準

結果には score, index, begin, end, length の5つのソートキーがあります。レコードの並び順は、sk --tiebreak score,index,-begin や、その他お好みの順序で指定できます。

カラースキーム

おそらく、あなた自身の美的な好みをお持ちでしょう! 幸いなことに、デフォルトの外観に制限されることはありません。Skim はカラースキームの包括的なカスタマイズをサポートしています。```sh --color=[BASE_SCHEME][,COLOR:ANSI]

root@kitploit:~
Skimは`NO_COLOR`環境変数も尊重します。これを何かに設定すると、`sk`(および他の多くのターミナルアプリ)はすべての色付き出力を無効にします。詳細については[no-color.org](https://no-color.org/)を参照してください。

### 利用可能なベースカラースキーム

Skimには、出発点として使用できるいくつかの組み込みカラースキームが付属しています。```sh
sk --color=dark      # Default dark theme (256 colors)
sk --color=light     # Light theme (256 colors)
sk --color=16        # Simple 16-color theme
sk --color=bw        # Minimal black & white theme (no colors, just styles)
sk --color=none      # Minimal black & white theme (no colors, no styles)
sk --color=molokai   # Molokai-inspired theme (256 colors)

色のカスタマイズ

基本スキームの後に色の値を指定することで、個々のUI要素をカスタマイズできます。```sh sk --color=light,fg:232,bg:255,current_bg:116,info:27

root@kitploit:~
色は以下の方法で指定できます:

- ANSIカラー(0〜255):`sk --color=fg:232,bg:255`
- RGB16進値:`sk --color=fg:#FF0000`(赤い文字)

### 利用可能な色のカスタマイズオプション

以下のUI要素をカスタマイズできます:

| 要素                | 説明                                   | 例                              |
|--------------------|---------------------------------------------|--------------------------------|
| `fg`               | 通常のテキストの前景色                | `--color=fg:232`               |
| `bg`               | 通常のテキストの背景色                | `--color=bg:255`               |
| `matched`          | 検索結果内の一致テキスト              | `--color=matched:108`          |
| `matched_bg`       | 一致テキストの背景                    | `--color=matched_bg:0`         |
| `current`          | 現在行の前景色               | `--color=current:254`          |
| `current_bg`       | 現在行の背景色               | `--color=current_bg:236`       |
| `current_match`    | 現在行内の一致テキスト                | `--color=current_match:151`    |
| `current_match_bg` | 現在行内の一致テキストの背景  | `--color=current_match_bg:236` |
| `spinner`          | 進行状況インジケーターの色                    | `--color=spinner:148`          |
| `info`             | 情報行の色                      | `--color=info:144`             |
| `prompt`           | プロンプトの色                                | `--color=prompt:110`           |
| `cursor`           | カーソルの色                                | `--color=cursor:161`           |
| `selected`         | 選択済み項目マーカーの色                  | `--color=selected:168`         |
| `header`           | ヘッダーテキストの色                           | `--color=header:109`           |
| `border`           | プレビュー/レイアウトの境界線の色             | `--color=border:59`            |

### 例```sh
# Use light theme but change the current line background
sk --color=light,current_bg:24

# Custom theme with multiple colors
sk --color=dark,matched:#00FF00,current:#FFFFFF,current_bg:#000080

# High contrast theme
sk --color=fg:232,bg:255,matched:160,current:255,current_bg:20

skの詳細については、manページ(man sk)を参照してください。

その他

  • --ansi: データソースのANSIカラーコード(例: \e[32mABC)を解析する
  • --regex: クエリを正規表現として使用し、データソースとマッチさせる

高度なトピック

インタラクティブモード

インタラクティブモードでは、コマンドを動的に呼び出すことができます。試してみましょう:```sh sk --ansi -i -c 'rg --color=always --line-number {q}'

root@kitploit:~
### どのように動作するのか?

![Skimのインタラクティブモードの動作](https://assets.kitploit.com/production/public/readmes/54416/5895df8cd6dbe8dfe20cafd1bf0b23fd690191710c00f811e110aba228b32a35/a7b995846d08eb2aa7f351371b38a9a35261eb393632363f62c6a67785f4038e-display-v1.webp)

- Skim は2種類のソースを受け付けます: コマンド出力またはパイプ入力
- Skimには2種類のプロンプトがあります: クエリパターンを指定するためのクエリプロンプトと、
    コマンドの「引数」を指定するためのコマンドプロンプト
- `-c` は実行するコマンドを指定するために使用され、デフォルトでは `SKIM_DEFAULT_COMMAND` になります
- `-i` は起動時にコマンドプロンプトを開くようにskimに指示し、デフォルトでは `c>` が表示されます。

コマンドが返した結果をさらに絞り込むには、
`Ctrl-Q` を押してインタラクティブモードを切り替えます。

## 外部プログラムの実行

Skimを終了せずに外部プロセスを起動するキーバインドを設定できます(`execute`、`execute-silent`)。```sh
# Press F1 to open the file with less without leaving skim
# Press CTRL-Y to copy the line to clipboard and aborts skim (requires pbcopy)
sk --bind 'f1:execute(less -f {}),ctrl-y:execute-silent(echo {} | pbcopy)+abort'

アルゴリズム

Skim は複数のアルゴリズムを提供しています。完全なリストはヘルプまたは man ページを確認してください。その中には以下のものがあります:

  • skim_v2、デフォルトのアルゴリズムで、おおまかに fzf のアルゴリズムに基づいています
  • frizbee、frizbee を使用します。blink.cmp neovim プラグイン由来のタイポ耐性アルゴリズムです (x86_64 と aarch64 のみ)
  • fzy、fzy のアルゴリズムを基本としたタイポ耐性を拡張したものです
  • arinae、skim の最新アルゴリズムで、社内設計によるタイポ耐性を念頭に置き、上記のすべてを拡張して、タイポ耐性マッチングをより自然に感じさせつつ、項目ごとのパフォーマンスを最高水準に保ちます

プレビューウィンドウ

これは fzf の優れた機能であり、skim が借用しています。たとえば、'ag' を使用してマッチした行を検索し、対象の行まで絞り込んだら、その行の周囲のコンテキストを確認して、最終的にどの行を選択するかを決定したいとします。 grep と ag には --context オプションがあり、skim は --context を利用してより良いプレビューウィンドウを実現できます。たとえば:```sh sk --ansi -i -c 'ag --color {q}' --preview "preview.sh {}"

root@kitploit:~
(注:[preview.sh](https://github.com/junegunn/fzf.vim/blob/master/bin/preview.sh) は、filename:lines:columns が指定された場合にコンテキストを出力するスクリプトです)

次のような結果が得られます:

![プレビューデモ](https://assets.kitploit.com/production/public/readmes/54416/b89dd1e40297ffc3fa4684c4a6d5dc9506c0eafdb881d4cea079ff843f1a271a/84156872f39354a97241078491506fee9f9962eda6628161f94f6f36ec2c79f9-display-v1.webp)

### どのように動作するのか?

プレビューコマンドが `--preview` オプションで指定されている場合、skim は現在ハイライトされている行を単一引用符で囲んで `{}` を置き換え、そのコマンドを呼び出して出力を取得し、プレビューウィンドウに出力を表示します。

コマンドを呼び出すために行全体が必要ない場合もあります。この場合は、`{}`、`{1..}`、`{..3}`、または `{1..5}` を使用してフィールドを選択できます。構文については、[Fields Support](#filds-support) セクションで説明されています。

最後に、`--preview-window` でプレビューウィンドウの位置を設定したい場合があります:
- `--preview-window up:30%` は、ウィンドウを上位置に配置し、高さを skim の全体の高さの 30% にします。
- `--preview-window left:10:wrap` は、`wrap` を指定してプレビューウィンドウがプレビューコマンドの出力を折り返すことを許可します。
- `--preview-window wrap:hidden` は、起動時にプレビューウィンドウを非表示にし、後で `toggle-preview` アクションで表示できます。

## Fields support

通常、この機能を理解する必要があるのはプラグインユーザーのみです。

例えば、次の形式のデータソースがあるとします:```sh
<filename>:<line number>:<column number>

ただし、クエリを入力するときだけ<filename>を検索したい場合があります。つまり、21と入力したとき、21を含む<filename>を見つけたいのであって、行番号や列番号に一致させたいわけではありません。

これを実現するには、sk --delimiter ':' --nth 1を使用できます。

また、--with-nthを使用してフィールドの順序を並べ替えることもできます。

範囲構文

  • <num> -- num番目のフィールドを指定します。1から始まります。
  • start.. -- start番目のフィールドから残りすべてを指定します。
  • ..end -- 0番目のフィールドからend番目のフィールドまでを指定します。endを含みます。
  • start..end -- start番目のフィールドからend番目のフィールドまでを指定します。endを含みます。

ライブラリとしての使用

SkimはRustクレート内でライブラリとして使用できます。

まず、Cargo.tomlにskimを追加します。```toml [dependencies] skim = { version = "", default-features = false, features = [..] }

root@kitploit:~
_機能に関する注記_:
    - `cli` フィーチャーは、skim を CLI として使用するために必要です。ライブラリとして使用する場合には、*通常* 必要ありません。

### 基本的な使用方法

次に、この簡単な例を実行してみてください:```rust
extern crate skim;
use skim::prelude::*;
use std::io::Cursor;

pub fn main() {
    let options = SkimOptionsBuilder::default()
        .height("50%")
        .multi(true)
        .build()
        .unwrap();

    let input = "aaaaa\nbbbb\nccc".to_string();

    // `SkimItemReader` is a helper to turn any `BufRead` into a stream of `SkimItem`
    // `SkimItem` was implemented for `AsRef<str>` by default
    let item_reader = SkimItemReader::default();
    let items = item_reader.of_bufread(Cursor::new(input));

    // `run_with` would read and show items from the stream
    let selected_items = Skim::run_with(&options, Some(items))
        .map(|out| out.selected_items)
        .unwrap_or_else(|| Vec::new());

    for item in selected_items.iter() {
        println!("{}", item.output());
    }
}

詳細な使用方法

tokio と非同期コードを使用して、skim をライブラリとしてより詳細に利用することもできます。これにより、動的に操作することが可能です。

内部の仕組み

Option<SkimItemReceiver> が与えられると、skim はそれに応じてアイテムを読み取り、処理を実行し、選択されたアイテムやクエリなどを含むユーザーの選択結果を返します。なお、以下の点に注意してください:

  • SkimItemReceiver は crossbeam::channel::Receiver<Arc<dyn SkimItem>> です
  • これが none の場合、指定されたコマンドを呼び出し、コマンドの出力からアイテムを読み取ります
  • それ以外の場合は、(crossbeam) チャネルからアイテムを読み取ります

トレイト SkimItem は、行の表示方法、比較方法、プレビュー方法をカスタマイズするために提供されています。これはデフォルトで AsRef<str> に対して実装されています。

さらに、SkimItemReader は BufRead を SkimItemReceiver に変換するヘルパーです(File や String を簡単に BufRead に変換できます)。これにより、文字列やファイルを簡単に扱うことができます。

examples/ ディレクトリの下にあるその他の例も確認してください。

ベンチマーク

このベンチマークは、tmux セッション内で対話型インターフェースを実行し、UI が安定するのを待ちます。

ベンチマークグラフ

just bench-plot を使用するか、GNU bash でレシピを手動で実行することで、グラフを生成できます。

FAQ

ファイルを無視するにはどうすればよいですか?

Skim は find . を呼び出して、フィルタリング対象のファイルリストを取得します。これは、環境変数 SKIM_DEFAULT_COMMAND を設定することで上書きできます。例:```sh $ SKIM_DEFAULT_COMMAND="fd --type f || git ls-tree -r --name-only HEAD || rg --files || find ." $ sk

root@kitploit:~
`.bashrc` や `.zshrc` に記述すれば、デフォルトで使用できます。

## Vim プラグインで一部のファイルが表示されない場合

Vim プラグインを使用して `:SK` コマンドを実行すると、一部のファイルが
表示されないことがあります。

[#3](https://github.com/skim-rs/skim/issues/3) で説明されているように、Vim
プラグインでは、`SKIM_DEFAULT_COMMAND` がデフォルトで次のコマンドに設定されています:```vim
let $SKIM_DEFAULT_COMMAND = "git ls-tree -r --name-only HEAD || rg --files || ag -l -g \"\" || find ."

これは、git が認識しないファイルは表示されないことを意味します。let $SKIM_DEFAULT_COMMAND = '' でデフォルトを上書きするか、不足しているファイルを自分で探してください。

fzf との違い

fzf は Go で書かれたコマンドラインのファジーファインダーであり、skim は Rust で新しいものを実装しようとしています!

このプロジェクトはゼロから書かれています。実装の決定のいくつかは fzf とは異なります。例えば:

  1. skim にはインタラクティブモードがあります。
  2. skim は事前選択をサポートしています。
  3. ファジー検索アルゴリズムが異なります。

より一般的には、skim のメンテナーは実装にある程度の自由を許容しています。目標は skim を fzf と同じくらい機能豊富に保つことですが、コマンドフラグは異なる場合があります。

貢献方法

バグに遭遇した場合やアイデアがある場合は、新しい issue を作成してください。プルリクエストも歓迎します。

Windows 互換性テスト

GUI を必要とせずに Windows 互換性をテストするために、ヘッドレスな Windows Server 2022 Core VM を起動する Vagrantfile が含まれています。ホストには VirtualBox と Vagrant が必要です(vagrant は flake.nix 経由で Nix dev shell に含まれています)。```sh vagrant up # First boot: downloads the box and provisions (~15–20 min) ssh -p 2222 vagrant@localhost # Password: vagrant

root@kitploit:~
VM内では、プロジェクトルートが `C:\vagrant` にマウントされています:```powershell
cd C:\vagrant
cargo build
cargo test

その後の起動は高速です — プロビジョニングは一度だけ実行されます:```sh vagrant halt # Stop the VM vagrant up # Resume vagrant destroy # Delete the VM entirely

root@kitploit:~
# トラブルシューティング

何が起きているかを調査するには、環境変数 `SKIM_LOG` またはフラグ `--log-level` を `debug` または `trace` に設定し、環境変数 `SKIM_LOG_FILE` またはフラグ `--log-file` をパスに設定できます。実行中または実行後にそれらのログを読むことで、何が起きているかをよりよく理解できます。問題が発生した場合は、ためらわずにそれらのログをイシューに添付してください。

## nix、FreeBSD、termux での改行表示の問題

次のような表示の問題が発生した場合:```bash
$ for n in {1..10}; do echo "$n"; done | sk
  0/10 0/0.> 10/10  10  9  8  7  6  5  4  3  2> 1

例えば

  • https://github.com/skim-rs/skim/issues/412
  • https://github.com/skim-rs/skim/issues/455

TERMINFOまたはTERMINFO_DIRSを、正しいterminfoデータベースのパスに設定する必要があります

例えば、Termuxでは、bashrcにこれを追加できます:``` export TERMINFO=/data/data/com.termux/files/usr/share/terminfo

root@kitploit:~
# ベンチマーク

## 対話型ベンチマーク(`cli`)

`cli` ベンチは、tmux セッション内で対話型インターフェースを実行し、一致件数が安定するまでステータスラインをポーリングすることで、skim(または互換性のある任意のバイナリ)を他のバージョンや fzf と比較してベンチマークします。これは決して正確または確実な測定方法ではありませんが、`fzf` とのベンチマーク比較が可能であり、リソースメトリクス(ピーク RSS と CPU)も提供できるという利点があります。```sh
cargo bench --bench cli -- run                              # defaults: sk, 1 M items, query "test"
cargo bench --bench cli -- run sk -n 500000 -q foo              # bare name resolved via $PATH
cargo bench --bench cli -- run ./old/sk ./new/sk -r 5           # compare two binaries, 5 runs each
cargo bench --bench cli -- run sk -f input.txt -q search        # use an existing file
cargo bench --bench cli -- generate -f testdata.txt -n 2000000       # generate input file and exit
cargo bench --bench cli -- run sk --perf                            # record perf data (auto-named file)
cargo bench --bench cli -- run sk --strace                            # record strace data (auto-named file)
cargo bench --bench cli -- run sk -p perf.data                 # record perf data to perf.data
cargo bench --bench cli -- run sk -j                            # JSON output
cargo bench --bench cli -- run sk -r 3 -- --tiebreak=index     # pass extra flags to sk

バイナリ名は使用前に which で絶対パスに解決されるため、sk や fzf のような裸の名前は、$PATH 上にあればそのまま動作します。

Criterionベンチマーク

Criterionベンチマークは、skimのパフォーマンスをより正確に測定するために利用できます。 これらを実行するには、まず cargo bench --bench cli -- -g benches/fixtures/10M.txt -n 10000000 && cargo bench --bench cli -- -g benches/fixtures/1M.txt -n 1000000 で入力データを生成し、その後 cargo bench -j 1 を実行する必要があります。

これらは数分間実行されます。

ツールをダウンロード