**Fff.nvim – タイポに強いコード検索**

2026/02/17 4:52

**Fff.nvim – タイポに強いコード検索**

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

FFF.nvim は Neovim 用の高性能ファジーファイルピッカーで、Rust で実装されているため高速なインデックス作成、git ステータス統合、およびタイプミスに強い検索機能を提供します。
50 k ファイルで 10 ms 未満の検索時間を実現し、遅延初期化、snacks.nvim を介した画像プレビューが可能です。また、lazy.nvim

vim.pack
、またはパッケージ変更時に Rust モジュールを再構築する自動コマンドからインストールできます。
デフォルトのキー割り当て(
ff
→ ファイル検索、
fg
→ ライブ grep、
fz
→ ファジー grep)は
keys
テーブルで設定可能です。プラグインは複数のコマンド(
:FFFFind
:FFFScan
:FFFRefreshGit
など)とメソッド(
find_files()
scan_files()
change_indexing_directory()
)を公開し、高度な使用に対応しています。
設定オプションには
base_path
prompt
layout
、プレビュー制限、ハイライト、frecency/history データベース、デバッグフラグ、ログ記録、および grep モード(プレーン/正規表現/ファジー)が含まれ、 で切り替えられます。
複数行クリップボード貼り付け、マルチセレクト quickfix リスト(
<Tab>
<C-q>
)、結果がない場合のクロスモード提案、およびサイン列に git ステータスハイライトとオプションでファイル名カラーリングをサポートしています。

本文

FFF.nvim – Neovim 用高速ファジーファイルフィンダー

FFFfreakin’ fast fuzzy file finder(めちゃくちゃ速いファジーファイルフィンダー)の略です。
意見を持った、タイプミスに強いピッカーで、すぐに使えます。


主な機能

  • 設定不要
  • タイプミスが自動的に許容される
  • Git ステータス統合(最終更新日時表示)
  • 専用 Rust バックエンド → 5万件以上のファイル検索で10 ms未満
  • 画像プレビュー(
    snacks.nvim
    経由)
  • スマートワークフローサポート
  • デフォルトで Lazy‑loaded

必須条件

要件備考
Neovim
0.10.0
以降
Rustupバックエンドをビルドするには Nightly ツールチェーンが必要

インストール方法

lazy.nvim

{
  'dmtrKovalenko/fff.nvim',
  build = function()
    require('fff.download').download_or_build_binary()
  end,
  opts = {
    debug = { enabled = true, show_scores = true },
  },
  lazy = false,
  keys = {
    { 'ff',  function() require('fff').find_files()   end, desc = 'FFFind files' },
    { 'fg',  function() require('fff').live_grep()     end, desc = 'LiFFFe grep' },
    { 'fz',
      function()
        require('fff').live_grep({
          grep = { modes = { 'fuzzy', 'plain' } }
        })
      end,
      desc = 'Live fffuzy grep'
    },
  },
}

vim‑pack

call packadd! fff.nvim
nnoremap ff :lua require('fff').find_files()<CR>

設定例

require('fff').setup({
  base_path          = vim.fn.getcwd(),
  prompt             = '🪿 ',
  title              = 'FFFiles',
  max_results        = 100,
  max_threads        = 4,
  lazy_sync          = true,  -- 初回使用時にインデックスを作成

  layout = {
    height           = 0.8,
    width            = 0.8,
    prompt_position  = 'bottom',   -- または 'top'
    preview_position = 'right',    -- 'left', 'top', 'bottom'
    preview_size     = 0.5,
    show_scrollbar   = true,

    path_shorten_strategy = 'middle_number',
  },

  preview = {
    enabled           = true,
    max_size          = 10 * 1024 * 1024, -- 10 MB
    chunk_size        = 8192,
    binary_file_threshold = 1024,
    imagemagick_info_format_str = '%m: %wx%h, %[colorspace], %q-bit',
    line_numbers      = false,
    wrap_lines        = false,
    filetypes         = { svg = {wrap_lines=true},
                          markdown={wrap_lines=true},
                          text={wrap_lines=true} },
  },

  keymaps = {
    close                = '<Esc>',
    select               = '<CR>',
    select_split         = '<C-s>',
    select_vsplit        = '<C-v>',
    select_tab           = '<C-t>',
    move_up              = { '<Up>', '<C-p>' },
    move_down            = { '<Down>', '<C-n>' },
    preview_scroll_up    = '<C-u>',
    preview_scroll_down  = '<C-d>',
    toggle_debug         = '<F2>',
    cycle_previous_query = '<C-Up>',
    toggle_select        = '<Tab>',
    send_to_quickfix     = '<C-q>',
    toggle_grep_regex    = '<S-Tab>',
  },

  hl = {
    border            = 'FloatBorder',
    normal            = 'Normal',
    cursor            = 'CursorLine',
    matched           = 'IncSearch',
    title             = 'Title',
    prompt            = 'Question',
    active_file       = 'Visual',
    frecency          = 'Number',
    debug             = 'Comment',
    combo_header      = 'Number',
    scrollbar         = 'Comment',
    directory_path    = 'Comment',

    selected          = 'FFFSelected',
    selected_active   = 'FFFSelectedActive',

    git_staged        = 'FFFGitStaged',
    git_modified      = 'FFFGitModified',
    git_deleted       = 'FFFGitDeleted',
    git_renamed       = 'FFFGitRenamed',
    git_untracked     = 'FFFGitUntracked',
    git_ignored       = 'FFFGitIgnored',

    grep_match        = 'IncSearch',
    grep_line_number  = 'LineNr',
    suggestion_header = 'WarningMsg',
  },

  frecency = { enabled=true, db_path=vim.fn.stdpath('cache') .. '/fff_nvim' },
  history  = {
    enabled                = true,
    db_path                = vim.fn.stdpath('data') .. '/fff_queries',
    min_combo_count        = 3,
    combo_boost_score_multiplier = 100,
  },

  git = { status_text_color = false },

  debug = { enabled=false, show_scores=false, show_file_info=false },

  logging = {
    enabled   = true,
    log_file  = vim.fn.stdpath('log') .. '/fff.log',
    log_level = 'info',
  },

  grep = {
    max_file_size     = 10 * 1024 * 1024,
    max_matches_per_file = 200,
    smart_case        = true,
    time_budget_ms    = 150,
    modes             = { 'plain', 'regex', 'fuzzy' },
  },
})

利用可能なメソッド

メソッド説明
require('fff').find_files()
現在のディレクトリでファイルを検索
require('fff').find_in_git_root()
Git リポジトリ内で検索
require('fff').scan_files()
再スキャンを開始
require('fff').refresh_git_status()
Git ステータスを更新
require('fff').find_files_in_dir(path)
指定ディレクトリでファイル検索
require('fff').change_indexing_directory(new_path)
基底ディレクトリを変更

コマンド

  • :FFFFind [path|query]
    – ピッカーを開く
  • :FFFScan
    – 手動で再スキャン
  • :FFFRefreshGit
    – Git ステータス更新
  • :FFFClearCache [all|frecency|files]
  • :FFFHealth
    – 健康チェック
  • :FFFDebug [on|off|toggle]
    – デバッグスコアを切替
  • :FFFOpenLog
    – ログファイルを開く

主要機能の詳細

複数行ペーストサポート

クリップボードに改行が含まれる場合、すべて単一クエリとして結合されます。

デバッグモード

F2 を押すか

:FFFDebug on
で有効化。
debug.show_scores = true
に設定するとスコアリングを表示します。

マルチセレクト & Quickfix

  • <Tab>
    – 選択の切替(サイン列に太い枠が表示)
  • <C-q>
    – 選択したファイルを quickfix に送信しピッカーを閉じる

ライブ grep モード

<S‑Tab> で切り替え可能:

モード説明
Plain正規表現メタ文字なしのリテラル一致
Regex完全な正規表現サポート
FuzzySmith–Waterman スコアリング。タイプミスに強い

現在のモードは入力フィールドに表示されます。

grep.modes
をグローバルまたは呼び出しごとに設定できます。

クロスモード提案

検索結果が得られない場合、FFF は自動的に反対側のモードで再クエリを行い提案を表示します。


Git 統合

  • サイン列(デフォルト)にステータスインジケーターを表示
  • ファイル名テキストカラーオプション:
    git.status_text_color = true
  • ハイライトグループは一般的な git サインとリンクしていますが、上書き可能

例:

vim.api.nvim_set_hl(0, 'CustomGitModified', { fg = '#FFA500' })
require('fff').setup({
  git = { status_text_color = true },
  hl  = {
    git_modified   = 'CustomGitModified',
    git_untracked  = 'CustomGitUntracked',
  }
})

ファイルフィルタリング

FFF は

.gitignore
を尊重します。
追加パターンを指定したい場合は
.ignore
ファイルを作成してください。

# 全ての Markdown ファイルを除外
*.md

# docs/archive/**/*.md を除外
docs/archive/**/*.md

:FFFScan
で再スキャンを強制します。


トラブルシューティング

健康チェック

:FFFHealth
はバックエンド、オプション依存、データベース接続を確認します。

ログ

デフォルトのログ場所:

~/.local/state/nvim/log/fff.log

よくある問題と対処法

問題対策
ピッカーが起動しないRust バックエンドがビルドされているか確認 (
cargo build --release
)。Neovim は 0.10 以上であることを確認
画像プレビューが表示されないターミナルは画像出力に対応している必要があります(kitty, iTerm2, WezTerm)。必要なら
chafa
,
viu
または
img2txt
をインストール
パフォーマンスが遅い
max_threads
を調整、プレビューサイズ/行数を減らす、キャッシュをクリア (
:FFFClearCache all
)
ファイルがインデックスされない
:FFFScan
を実行。
base_path
と権限を確認

デバッグモードの永続化

require('fff').setup({
  debug = { enabled=true, show_scores=true }
})

Neovim で高速かつファジーなファイルピックをお楽しみください!

同じ日のほかのニュース

一覧に戻る →

2026/02/17 3:41

14歳のマイルズ・ウーは、重量の万倍を支えられる折り紙パターンを折りました。

## Japanese Translation: --- ### Summary 14歳のミレス・ウーは、ニューヨーク市にあるハンター・カレッジ高校(Hunter College High School)の9年生であり、彼がミウラ折り紙パターンについて行った研究で2025年 Thermo Fisher Scientific Junior Innovators Challenge の賞金25,000ドルのトップ賞を受賞しました。ウーは、コピー用紙、薄い厚手紙(light cardstock)、重い厚手紙(heavy cardstock)の3種類の紙を使用し、家族のリビングルームに設置した臨時実験室で **54 の異なるバリエーション**(108 回の試行)をテストしました。各折り紙は 64 平方インチで、ガードレールが 5 インチ間隔で配置されていました。初期重量推定は約50ポンドでしたが、最も強いパターンは **200 ポンド**まで耐え、正確な測定には 50 ポンドのエクササイズウエイトを必要としました。この結果、デザインは自身の重さの **10,000 倍以上** を支えることができること(ニューヨーク市のタクシーで4,000頭以上のゾウを運ぶに相当)を示しています。 この研究は、ハリケーンや山火事などの自然災害時に堅固で費用対効果が高く、簡単に展開できる **配備可能な緊急シェルター** を開発することを目的としています。ウーは、1枚または複数枚のミウラ折り紙シート(長方形/テント状構造)でアーチ型シェルターをプロトタイプ化し、横方向圧縮や多方向力に対する耐性を検証する計画です。 この業績はサイエンス協会の社長マヤ・アジャメラ(Maya Ajmera)によって注目されました。彼女はウーが生涯の折り紙趣味を厳密な構造工学へと変革したこと、創造性、リーダーシップ、チームワークを称賛しました。また、プリンストン大学のエンジニアグラウィオ・H・パウリーノ(Glaucio H. Paulino)は、設計をスケールアップするには非線形強度スケーリング、ジョイント設計、不完全性、ボッキング、多方向荷重抵抗の課題に対処する必要があると指摘しました。 ミウラ折り紙は日本の天体物理学者・宮浦耶(Koryo Miura)によって発明され、宇宙機関(例:日本のスペースフライヤー・ユニットや宇宙船のソーラーパネル)で使用されています。最近では、望遠鏡や衛星に適用できるブルームパターンも開発されています。ウーは6年前から紙折りを探求し、1960年代以降に拡張された折り紙の工学・医療・数学・建築への応用を知ったことで趣味から STEM 研究へとシフトしました。 Thermo Fisher Scientific Junior Innovators Challenge は1999年からサイエンス協会が主催する中学生向けの主要な全国STEM競技です。

2026/02/17 6:15

研究:自己生成型エージェントスキルは役に立たない (Note: This translation preserves the original meaning and maintains a natural, polite tone in Japanese.)

## Japanese Translation: 現在の要約は主要な発見とほぼすべての定量的詳細を捉えていますが、キュレーションされたスキルで影響を受けたタスク数を正確に追加し、著者数を修正することでさらに簡潔にできます。以下は若干改訂したバージョンです: > **要約:** > SkillsBench は 11 ドメインにわたる 86 タスクで大規模言語モデル(LLM)を評価し、「スキル」(事前定義された手順のステップ)がパフォーマンスに与える影響を測定するベンチマークです。キュレーションされたスキルが追加されると、平均合格率は「スキルなし」時より 16.2 pp 上昇します。効果は大きく異なり、ソフトウェアエンジニアリングでは +4.5 pp、ヘルスケアでは +51.9 pp に達します。実際に 84 タスクのうち 16 件がキュレーションされたスキルでマイナスの差分を示し、自身生成したスキルは全体として有益ではなく、モデルが消費する手順知識を信頼して作成できないことを示しています。わずか 2〜3 のスキルモジュールだけで完全なドキュメントよりも優れた性能を発揮し、これらのスキルを備えた小型モデルはそれらを持たない大型モデルと同等に競合できます。このベンチマークは 7,308 の対話軌跡で 7 つのエージェント–モデル構成をテストします。著者は複数機関からなる 38 人の研究者チームで、2026 年 2 月 13 日に公開され(ファイルサイズ 1,366 KB)、今後は最も効果的なスキルを選択してより効率的かつドメイン特化型 AI エージェントを構築する研究が進められることが示唆されています。

2026/02/17 5:34

Suicide Linux(2009)

## Japanese Translation: **改善された要約** この記事は、入力ミスしたコマンドを自動的に `rm -rf /` に書き換えてシステムを削除する「Suicide Linux」と呼ばれる皮肉な Linux ディストリビューションについて説明しています。Suicide Linux は、OS を使い続けられる時間を測るゲームや実験として提示されており、すべてのデータが失われるまでどれだけ長く使用できるかを試すものです。記事はその開発経緯を追っています:2011‑12‑26 の Debian パッケージとデモ動画、2015 年に自動修正機能がオプションであり標準の Linux 動作ではないことを明確化した説明、2017 年の Docker イメージ(`tiagoad/suicide-linux`)にソースコードが含まれていること、そして 2020 年に著者が自らそのパッケージを作成していないと認めたことです。記事は将来の改良点として、冗長な警告メッセージやランダムな単一ファイル削除などを追加し、実験を教育用途に安全にする提案も示しています。総じて、Suicide Linux は主に好奇心と学習ツールであり、システムの堅牢性をテストしたい開発者や「タイプミスアラート」スクリプトを作成したい人には有用ですが、一般的な Linux ディストリビューションに影響を与える可能性は低いと結論付けられています。

**Fff.nvim – タイポに強いコード検索** | そっか~ニュース