「locate を使うための設定(WSL 設定編)」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
&bold(){■ Windows Subsystem for Linux の Emacs で利用できる設定}
----
&bold(){【お知らせ】}
----
&bold(){<2018/08/28 追記>}
Cygwin での locate の利用については、こちらを参照ください。
・[[locate を使うための設定]]
&bold(){【本題】}
----
Ubuntu on WSL で locate を利用するための設定です。
Ubuntu の locate には次のページで説明されているとおり、2つのパッケージがあります。
・http://d.hatena.ne.jp/kitokitoki/20091025/p2
デフォルトでは、mlocate がインストールされていますが、mlocate の updatedb は複数の database root パスを指定できないため、使いづらいです。
このため、locate.findutils をインストールします。
$ sudo -E apt install locate
$ sudo update-alternatives --config locate # locate.findutils を有効にする
つぎに、locateを使うためのDBを以下のようなスクリプトを実行して作成します。updatedb のオプションは、適当に修正してください。
~/bin/updatedb.sh
#!/bin/sh
sudo updatedb \
--localpaths='
/mnt/c/home
/mnt/d/home
/mnt/server/home
' \
--findoptions='
-type d -name .git -prune -o
-type d -name .svn -prune -o
-path /mnt/c/home/tmp -prune -o
-path /mnt/d/home/tmp -prune
'
findoptions の設定の意味は、次のとおりです。
一行目:ディレクトリ.git は含めない
三行目:/mnt/c/home/tmp で始まるパスは含めない
これで、shell から locate <検索文字列> と入力して、検索が可能となります。
Emacs からは、M-x locate で実行できます。
※ &bold(){locate の検索に時間が掛かる場合は、データベース化するディレクトリの範囲を絞ってください。}
検索結果は、dired のように、Enter や f が利用可能ですが、以下の設定を行っておくと、より便利に利用できます。
(require 'locate)
;; ファイルのあるディレクトリを Explorer で開く
(define-key locate-mode-map (kbd "E")
(lambda ()
(interactive)
(os-open-command (locate-get-dirname))))
;; ファイルのあるディレクトリを dired で開く
(define-key locate-mode-map (kbd "d")
(lambda ()
(interactive)
(dired (locate-get-dirname))))
;; C-c l で locate を起動する
(global-set-key (kbd "C-c l") 'locate)
※ 上記の設定の os-open-command は、「[[dired を OS と連携して使うための設定]]」で紹介したものと同じものを利用しています。
「[[dired を OS と連携して使うための設定]]」で行った W キーや find-file の設定も、locate の検索結果の画面で利用可能です。
locate は helm とも連携できます。
;; locateコマンドのパラメータを指定する
(setq helm-locate-command "locate %s -A --regex %s")
※ helm の設定については、次のページを参照してください。
・[[helm を使うための設定]]
----
<変更履歴>
・2018/08/26 このページを作成した。
----
#javascript(){{
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-40267130-1', 'atwiki.jp');
ga('send', 'pageview');
</script>
}}
&bold(){■ Windows Subsystem for Linux の Emacs で利用できる設定}
----
&bold(){【お知らせ】}
----
&bold(){<2021/02/05 追記>}
本ページの内容は WSL2 でも動作します。DrvFs や VolFs の記載がある場合には、Windows 側のファイルシステム、WSL2 側のファイルシステムと読み替えてください。
&bold(){<2018/08/28 追記>}
Cygwin での locate の利用については、こちらを参照ください。
・[[locate を使うための設定]]
&bold(){【本題】}
----
Ubuntu on WSL で locate を利用するための設定です。
Ubuntu の locate には次のページで説明されているとおり、2つのパッケージがあります。
・http://d.hatena.ne.jp/kitokitoki/20091025/p2
デフォルトでは、mlocate がインストールされていますが、mlocate の updatedb は複数の database root パスを指定できないため、使いづらいです。
このため、locate.findutils をインストールします。
$ sudo -E apt install locate
$ sudo update-alternatives --config locate # locate.findutils を有効にする
つぎに、locateを使うためのDBを以下のようなスクリプトを実行して作成します。updatedb のオプションは、適当に修正してください。
~/bin/updatedb.sh
#!/bin/sh
sudo updatedb \
--localpaths='
/mnt/c/home
/mnt/d/home
/mnt/server/home
' \
--findoptions='
-type d -name .git -prune -o
-type d -name .svn -prune -o
-path /mnt/c/home/tmp -prune -o
-path /mnt/d/home/tmp -prune
'
findoptions の設定の意味は、次のとおりです。
一行目:ディレクトリ.git は含めない
三行目:/mnt/c/home/tmp で始まるパスは含めない
これで、shell から locate <検索文字列> と入力して、検索が可能となります。
Emacs からは、M-x locate で実行できます。
※ &bold(){locate の検索に時間が掛かる場合は、データベース化するディレクトリの範囲を絞ってください。}
検索結果は、dired のように、Enter や f が利用可能ですが、以下の設定を行っておくと、より便利に利用できます。
(require 'locate)
;; ファイルのあるディレクトリを Explorer で開く
(define-key locate-mode-map (kbd "E")
(lambda ()
(interactive)
(os-open-command (locate-get-dirname))))
;; ファイルのあるディレクトリを dired で開く
(define-key locate-mode-map (kbd "d")
(lambda ()
(interactive)
(dired (locate-get-dirname))))
;; C-c l で locate を起動する
(global-set-key (kbd "C-c l") 'locate)
※ 上記の設定の os-open-command は、「[[dired を OS と連携して使うための設定]]」で紹介したものと同じものを利用しています。
「[[dired を OS と連携して使うための設定]]」で行った W キーや find-file の設定も、locate の検索結果の画面で利用可能です。
locate は helm とも連携できます。
;; locateコマンドのパラメータを指定する
(setq helm-locate-command "locate %s -A --regex %s")
※ helm の設定については、次のページを参照してください。
・[[helm を使うための設定]]
----
<変更履歴>
・2018/08/26 このページを作成した。
----
#javascript(){{
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-40267130-1', 'atwiki.jp');
ga('send', 'pageview');
</script>
}}