자체 제작 CLI 도구에 Rust Fuzzy Finder skim 포함
skim
중 Go가 쓴 fzf
처럼 애매한 검색을 할 수 있다.cargo install skim
에 sk
를 설치하면 명령을 사용할 수 있습니다.이것
skim
은 프로그램 라이브러리로도 사용할 수 있습니다.이번에 자체 제작한 책갈피 관리 CLI 도구skim
에 편입해 보았다.만든 물건
여기 있습니다.
이 도구는 자주 방문하는 웹 페이지 기사 링크를 로컬에서 관리할 수 있는 CLI 도구입니다.책갈피는 파일
~/rbm-bookmarks.toml
에 저장됩니다.손잡이와 브라우저의 책갈피도 괜찮지만, 자신은Vim을 자주 사용하기 때문에 하나하나 브라우저에 가서 터미널에서 열려고 한다.
crate.io에도 등록되어
cargo install rbm
에 설치할 수 있습니다.rbm add
명령으로 새 책갈피를 추가합니다.$ rbm add
Title> Google
URL> https://google.com
Tag> Google,Search
rbm list
에 등록된 책갈피 일람표를 표시하고 브라우저에서 모호한 검색을 통해 선택한 책갈피를 열 수 있습니다.여기skim
는 프로그램 라이브러리로 사용됩니다.라이브러리의 일부로 사용되는 코드
책갈피 관리 CLI 도구
skim
에서 사용하여 흐리게 검색한 부분의 코드는 다음과 같습니다.(CLI 도구 자체 제작 및 toml 파일에 저장된 부분은 분리됩니다. 자세한 내용은 GiitHub을 확인하십시오.)
use crate::bookmark::Bookmark;
use skim::prelude::*;
use skim::{Skim, SkimItemReceiver, SkimItemSender};
use std::{process::Command, sync::Arc};
impl SkimItem for Bookmark {
// 曖昧検索に使われる値
fn text(&self) -> Cow<str> {
Cow::Borrowed(&self.inner)
}
// 絞り込んで選択した際に表示される値
fn output(&self) -> Cow<str> {
Cow::Borrowed(&self.url)
}
}
/// Search bookmark with fuzzy finder.
pub fn finder(bookmarks: Vec<Bookmark>) {
// 曖昧検索の起動時の画面高さを指定・Enterキーで選択する
let options = SkimOptionsBuilder::default()
.height(Some("50%"))
.multi(true)
.bind(vec!["Enter:accept"])
.build()
.unwrap();
let (tx_item, rx_item): (SkimItemSender, SkimItemReceiver) = unbounded();
for bookmark in bookmarks {
let _ = tx_item.send(Arc::new(bookmark));
}
drop(tx_item);
let selected_items = Skim::run_with(&options, Some(rx_item))
.map(|out| match out.final_key {
Key::Enter => out.selected_items,
_ => Vec::new(),
})
.unwrap_or_else(Vec::new);
for item in selected_items.iter() {
let url = item.output();
// 曖昧検索の結果出力されるurlをopenコマンドで開く
// Macだけで動く
Command::new("open")
.arg(url.as_ref())
.output()
.expect("Faild to execute process");
}
}
이 코드는 skim
의 창고examples
내의 custom_item.rs와 custom_keybinding_actions.rs의 코드를 참고했다.솔직히 내부 구조를 이해하고 능숙하게 사용할 수는 없지만, 자체 제작 CLI 도구에 애매한 검색을 간단하게 추가할 수 있다.
겸사겸사 말씀드리겠습니다.
이번에 제작된 책갈피 관리 앱은 마이크로소프트가 공개한 Rust의 학습교재명령줄을 만드는 to-do 목록 프로그램를 개조한 것이다.
이 교재는 나처럼 Rust를 공부하는 사람들에게 매우 도움이 된다.
Reference
이 문제에 관하여(자체 제작 CLI 도구에 Rust Fuzzy Finder skim 포함), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/urawa72/articles/556d0bc2f9c1ec44adfe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)