公開日: 2021年10月19日

その他の話題

単独では記事にならない話題をこのページに突っ込んでゆこうと思います。ほとんど備忘録のようなものなので、あまりエッジの立った話題はありません…

sudo

これを導入することで、一般ユーザが root 権限でプログラムを実行することができるようになります。packages からインストールし、visudo コマンドで権限に関する設定を行います。こういうところで vi の操作が要求されるので、最低限の使い方だけは覚えるようにしています。
# pkg install sudo
# visudo
visudo コマンドを通じて /usr/local/etc/sudoers を編集することになります。その書き方は sudoers(5) のマニュアルを参照してもらいたいのですが、大ざっぱにいえば「誰が どのマシンから=(誰の権限で) どのコマンドを」というように書きます。例えば私のパソコンは私しか使わないので、「私 mijinco が」「すべてのホストから」「全員の権限で」「すべてのコマンドを」ついでに「パスワードなしで」実行できるようにしてみましょう (全能の神になった気分)。次のように書きます。
mijinco ALL=(ALL) NOPASSWD:ALL
こうしておけば、次からは一般ユーザで
% sudo visudo
ということができるようになるわけです。

zsh

zsh が「その他の話題」扱いなのは、ひとえに私が使いこなせていないためであります。ここでは、導入から設定まで最低限のことだけを書くにとどめます。ports/packages からインストールし、chsh コマンドでシェルの切り替えを行います。
# pkg install zsh
% chsh
chsh コマンドを実行して表示された画面の「Shell:」で始まる行を zsh へのパスに書き換えます。zsh のインストール先がデフォルトのままなら /usr/local/bin/zsh になります。
Shell: /usr/local/bin/zsh
この画面での操作方法は visudo のときと同様、つまり vi と同じです。そしてホームディレクトリに .zshrc を作成します。
~/.zshrc
autoload -U compinit
compinit

path=(/sbin(N-/) /bin(N-/) /usr/sbin(N-/) /usr/bin(N-/) /usr/local/sbin(N-/) /usr/local/bin(N-/) $HOME/bin(N-/) $path)

alias sudo='sudo '
alias ll='ls -alF --color=never'
alias la='ls -aF --color=never'
alias ls='ls -F --color=never'
alias emacs='XMODIFIERS=@im=none emacs'

export LANG=ja_JP.UTF-8

PROMPT="%/%% "
PROMPT2="%_%% "

HISTSIZE=50
HISTFILE=~/.zhistory
SAVEHIST=50
1,2行目:zsh の補完機能を有効にするための記述らしいです。
4行目:path の設定。「(N-/)」を付けると、そのディレクトリが存在しない場合は path に追加しません。
6~10行目:コマンドのエイリアス。
10行目:Emacs で XIM を無効にするための設定。「Fcitx と Mozc で日本語入力」参照。
12行目:言語環境の設定。
14行目:プロンプトの設定。前半の「%/」がカレントディレクトリの絶対パスを、後半の「%%」が「%」自身を表します。結果として「/path/to/workdir%」のようなプロンプトになります。詳しくは下記 URL を参照してください。
15行目:if 文、for 文などでコマンドが複数行にわたるとき、2 行目以降に表示されるプロンプトの設定。次のような感じになります。
/home/mijinco% sum=0
/home/mijinco% for i in 1 2 3
for% do
for% sum=`expr $sum + $i`
for% echo $sum
for% done
1
3
6
17~19行目:コマンド履歴の保存に関する設定。

nkf 備忘録

  • 文字コードの判定 (-g は guess の g だったと思います)
    % nkf -g hoge.txt
    
  • hoge.txt をUTF-8、EUC-JP、SJIS に変換してそれぞれ hoge-u.txt、hoge-e.txt、hoge-s.txt にリダイレクトする。
    % nkf -w hoge.txt > hoge-u.txt
    % nkf -e hoge.txt > hoge-e.txt
    % nkf -s hoge.txt > hoge-s.txt
    
    むしろ上書きでいいよという場合は --overwrite オプションを付ける。
    % nkf -w --overwrite hoge.txt
    
  • 改行コードを DOS から UNIX へ変換
    % nkf -Lu hoge.txt > hoge-Lu.txt
    
  • 改行コードを UNIX から DOS へ変換
    % nkf -Lw hoge.txt > hoge-Lw.txt
    

Kompare (テキスト差分表示ツール)

私はテキストファイルの差分表示に Kompare というソフトを使っています。ポイントは
  • ただのビューアとして使える。マージはできなくてよい (Emacs の ediff で行うので)。
  • 外観がシンプル。その分本文のエリアを広く表示してくれる。
  • 設定方法がわかりやすい
といったあたりでしょうか。図 1 がデフォルトの状態で、図 2 がなるべく外観がシンプルになるようにいろいろ削った後の状態です。
図 1
図 1
図 2
図 2

ナビゲーションペインを非表示にする

「&Navigation」と書かれているバーの右端にある×ボタンで消す。元に戻したいときは、メニューバーを右クリック > [Navigation] のチェックをオンにする。

ステータスバーを非表示にする

[設定] > [ステータスバーを表示] のチェックを外す。

ツールバー上のアイコンの説明テキストを非表示にする

ツールバー右クリック > [テキストの位置] > [Icons only] を選択。

ツールバー上のアイコンのサイズを変更する

ツールバー右クリック > [アイコンサイズ]

ツールバーから保存・マージ関係のボタンを削除する

ツールバー右クリック > [ツールバーを設定] > [mainToolBar <kompare_part>]
「保存」「Save All」「Unapply All」「Unapply Difference」「Apply Difference」「Apply All」を「現在のアクション」から「利用可能なアクション」に移動する。

色の設定

[設定] > [Kompare を設定] > [View] > [Appearance] タブ
  • Removed color: #EDBEBE (HTML)
  • Changed color: #BEBEED (HTML)
  • Added color: #BEEDBE (HTML)
  • Applied color: よくわからないのでそのまま
※ Removed だの Added だのは右側に表示されているペインから見た場合です。

フォントを Ricty にする

[設定] > [Kompare を設定] > [View] > [Fonts] タブ

キーボードショートカット

[設定] > [Configure Keyboard Shortcuts]
  • 保存・マージ関係のボタンはショートカットなしに設定。
  • ついでに印刷関係もなしに設定。
  • Next Difference: N
  • Next File: Ctrl+Shift+N
  • Previous Difference: P
  • Previous File: Ctrl+Shift+P

その他

  • ファイル選択ダイアログでは、デフォルトでは隠しファイル (ドットファイル) は表示されません。表示させるには、ファイル一覧の適当な場所で右クリック > [Show hidden files] のチェックをオンです。
  • キーボードショートカットの設定項目にはありませんが、h、j、k、l キーで上下左右にスクロールできるようです。
設定は ~/.config/komparerc に保存されるようです。テキスト差分表示ツールのその他の選択肢としては Meld、KDiff3 などがあります。

各種バイナリエディタの比較

次の 2 点をクリアするバイナリエディタを探しているのですが、これこそはというものはなかなかありませんね…。Windows でいうところの Stirling のようなソフトがあるといいんですが。
  • バイナリレベルでファイルの比較ができる。
  • 行幅 (1 行あたりの表示バイト数) を指定できる。または 16 固定でも可。
いくつかのソフトを試してまとめたのが下の表です。行幅を指定できない (ウィンドウ幅に応じて自動調整される) ソフトが思いのほか多い印象です。どれか一つに決めなきゃならないというものでもないので、それぞれの長所を活かして使い分けるのが良さそうです。
名称UIファイル比較行幅指定設定ファイルその他
cmp コマンド

CUI

(*1)

hexer

TUI

×?

16 固定?

なし?

(*2)

dhex

TUI

×?

~/.dhexrc

wxHexEditor

GUI

×?

~/.wxHexEditor

ghex

GUI

×?

×?

なし?

okteta

GUI

×?

~/.config/octetarc

(*3)

(*1)「-l」オプションで相違箇所の一覧を表示できる
(*2)操作が vi 風なのは〇, 背景色がけっこうどぎつい
(*3)メニューからファイルが開けない気がする (コマンドラインで指定すれば可)

Firefox

あまり凝った使い方はしていないので、ここでは基本的な設定をいくつかと、Chrome のブックマークをインポートすることと、拡張機能を 2、3 インストールするくらいになります。

メニューを日本語化

ハンバーガーボタン > [Settings] > [Language] コンボボックスから「Search for more languages...」を選択。[Firefox Language Settings] ダイアログが立ち上がるので、[Select a language to add...] コンボボックスから「Japanese」を選択して「Add」ボタン、「OK」ボタン、「適用して再起動」ボタンの順に押す。再起動後、メニューが日本語になる。

Chrome からブックマークを移行する

  • Chrome 側
    1. ブックマークマネージャのハンバーガーボタン > [ブックマークをエクスポート]
    2. ファイル名を入力して HTML ファイルとしてエクスポートする。
  • Firefox 側
    1. ハンバーガーボタン > [ブックマーク] > [ブックマークを管理]
    2. 「ブラウジングライブラリー」ウィンドウのメニューバーにある [インポートとバックアップ] > [HTML からインポート]
    3. ファイル選択ダイアログにて Chrome からエクスポートした HTML ファイルを選択する。

ブックマークツールバーの設定

よく利用するサイトをブックマークツールバーに貼り付けておきましょう (図 3)。
  1. まずはブックマークツールバーを表示させる。
    タブバーを右クリック > [ブックマークツールバー] > [常に表示する] を選択。
  2. 再びタブバーを右クリック > [ツールバーをカスタマイズ]。
  3. 「Firefox をカスタマイズ」のウィンドウが開く (図 4)。
    初期状態ではブックマークツールバーに「ブックマークをインポートする」アイコンと「ブックマークツールバーの項目」アイコンが登録されている。
  4. 「ブックマークをインポートする」は不要なので画面左側のアイコンペインに戻す。
  5. アイコンペインから「ブックマークメニュー」をツールバーに登録する。ここで注意点として、「ブックマークツールバーの項目」を削除してしまうと、他のボタンがすべてツールバーの左側に貼り付いてしまう (図 5)。ボタンをツールバーの右側に置きたいのであれば、「ブックマークツールバーの項目」をツールバー上に残しておく必要があるようだ?残しておいても実際には表示されないので、無理に削除することはない。
  6. 完了ボタンを押して画面を閉じる。
  7. Chrome のブックマークバーにあったブックマークは [ブックマークメニュー] > [ブックマークバー] の下に置かれているので、これをドラッグ&ドロップでブックマークツールバーに移動する。
  8. ブックマークツールバーに登録するサイトは、たいてい説明不要のサイトなので、アイコンのキャプションを削除して見た目をスッキリさせる。アイコンを右クリック > [ブックマークを編集] で名前欄を空にすればよい。
図 3
図 3
図 4
図 4
図 5
図 5

拡張機能

  • Vimium-FF
    これが便利すぎることは、vi をたまにしか使わない私にもわかるんですが、なぜかたまにキーが効かなくなることがあり、そこだけが不満です。
  • Shortkeys
    C-n や C-p などとやってしまいがちな Emacs 使いの私には救世主のような拡張機能です。"ctrl+p" を Scroll up に、"ctrl+h" を Go back にするだけでかなり救われます。ところがなぜか "ctrl+n" だけは Scroll down にしても Do nothing にしても相変わらず新しいウィンドウが立ち上がり続けます(涙)
  • Simple Translate
    この歳になっても英語レベルが "This is a pen." な私には救世主のような拡張機能です。ページ全体を翻訳したり、選択したテキストだけを翻訳したりしてくれます。
  • Markdown Viewer Webext
    Markdown ビューア。ローカルな Markdown ファイルを開くには Markdown ファイルの拡張子に対する MIME タイプを設定する必要があります。詳細は下記の URL を参照。その方法は、まずアドレスバーに「about:config」と入力して表示される設定項目の一覧から「helpers.private_mime_types_file」が示すファイル名を調べます。デフォルトのままなら ~/.mime.types でしょう。そのファイルに次のように書いて保存し、Firefox を再起動します。
    ~/.mime.types
    type=text/plain exts=md, desc="Markdown document"
    
    あとは Ctrl-o でファイル選択ダイアログ開いて Markdown ファイルを選択すれば閲覧できます。

その他

  • Firefox はバージョン 87 以降、初期設定では Backspace キーで「戻る」が無効になりました。有効にするにはアドレスバーに 「about:config」と入力して表示される設定項目の一覧から「browser.backspace_action」の値を 0 に変更します。

LaTeX と Evince (PDF ビューア)

LaTeX を用いて文書を組み版し、PDF に変換して閲覧するまでの備忘録です。Tex Live という TeX ディストリビューションをインストールすると、PDF 変換までに必要なツールが一式インストールされます。PDF ビューアには Evince、Okular、MuPDF などの選択肢がありますが、ここでは Evince から GNOME に依存する機能を排した (らしい) evince-lite というパッケージを使います。PDF だけでなく Postscript など複数のフォーマットに対応している模様です。
# pkg install texlive-full evince-lite
platex コマンドで LaTeX のソースファイルをコンパイルして DVI ファイルを得、dvipdfmx コマンドで DVI ファイルを PDF ファイルに変換します。ちなみに、LaTeX の tableofcontents コマンドで目次を生成している場合は、platex コマンドを 2 回実行する必要があります (そういえばそうだったなあ…)。
% platex hoge.tex
% dvipdfmx hoge.dvi
% evince hoge.pdf &
ところで、さっき初めて気がついたのですが、得られた PDF を眺めてみると、本文のフォントがゴシック体になっています (図 6)。その理由は、上のようにして作成した PDF がフォント埋め込みになっていないこと、そしてどうも Evince ではそのようなファイルに対してゴシック体が使われること、のようです。フォントを埋め込む方法は、下記のサイトに書かれていました。
LaTeX(DVI)から作成する PDF のフォント埋め込み
http://www.math.kobe-u.ac.jp/HOME/kodama/tips-latex-pdf-embedding.html
まず、システムにインストールされているフォントの中から、使用するフォントを選びます。
% fc-list | grep ipa
...
/usr/local/share/fonts/mplus-ipa/fonts/ipag.ttf: IPAゴシック,IPAGothic:style=Regular
/usr/local/share/fonts/mplus-ipa/fonts/ipam.ttf: IPA明朝,IPAMincho:style=Regular
...
texfonts.map を作成します。「%」から始まる行はコメントになります。
fonts.map
% IPA-fonts
rml  H :0:ipam.ttf
gbm  H :0:ipag.ttf
rmlv V :0:ipam.ttf
gbmv V :0:ipag.ttf
dvipdfmx コマンドの -f オプションに texfonts.map を指定します。
% dvipdfmx -f texfonts.map hoge.dvi
これで本文のフォントが明朝体になりました (図 7)。
図 6
図 6
図 7
図 7
余談: Evince の操作方法は vi ライクになっており、vi に慣れ親しんでいる人ならすんなり操作できると思います。ただしカスタマイズはできないようです。普段使いが Emacs な私にとっては C-n が新規ウィンドウの起動に割り当てられていたり、C-p が印刷に割り当てられていたりするのが悲しいです。

ristretto (画像ビューア)

図 8
図 8
インストールするには ristretto 本体に加え、サムネイルを表示するのに xfce4-tumbler が必要になります。
# pkg install ristretto xfce4-tumbler
余談: どうでもいい情報ですが、サンプルの写真は私が実家の畑で撮った写真と、父が木曽駒ケ岳に登ったときの写真を使わせてもらっています。実家の畑はいわゆる「ぐうたら農法」を推進しているらしく、一面に雑草が生い茂っています。それでもこのようになかなか立派なプチトマトが生ります。

そこはかとなく Emacs 風な GNU nano

図 9
図 9
nano は Emacs のようにプレフィックスキーを持たないので、おのずから限界がありますが、なんとか Emacs 風のキーバインドになるように頑張った結果をここに掲載します。殊に C-s を上書き保存にするのか、はたまた文字列検索にするのかについては散々迷った挙げ句、上書き保存を採用しております。文字列検索のほうは F6、F7、F8 キーに追いやっております。各設定項目の詳細は nanorc(5) のマニュアルを参照してください。
~/.nanorc
set autoindent               # オートインデント
set constantshow             # ステータスバーを表示
unset linenumbers            # 行番号表示 *しない*
set nohelp                   # ショートカット表示をしない
unset softwrap               # 折り返し設定?
set nowrap                   # 折り返しを行わない
unset casesensitive          # 検索で大文字小文字の区別を *しない*
set cutfromcursor            # カーソル位置から行末までを切り取り
set tabsize 4                # タブ幅
set trimblanks               # 折り返し時に行末に空白を挿入しない
#set saveonexit              # 終了時に自動的に保存する
unset saveonexit             # 終了時に未保存のバッファがあれば確認する
set indicator                # 右端にスクロールバーを表示する
set minibar                  # タイトルバーの代わりにミニバーを画面底部に表示する
set mouse                    # マウスを有効にする

bind ^O insert main          # ファイルを開く
bind ^S savefile main        # ファイルを上書き保存
bind ^C exit all             # nano を終了する
bind ^G cancel all           # 操作をキャンセルする
bind ^F right main           # カーソル 右
bind ^B left main            # カーソル 左
bind ^P up main              # カーソル 上
bind ^N down main            # カーソル 下
bind ^A home main            # カーソル 行頭
bind ^E end main             # カーソル 行末
bind ^U pageup main          # ページアップ
bind ^V pagedown main        # ページダウン
bind ^L center main          # カーソルのある行を画面の真ん中へ
bind M-L gotoline main       # 行番号を指定してカーソル移動
bind ^D delete main          # Delete
bind ^H backspace main       # Backspace
bind ^J enter main           # Enter
bind ^R replace main         # 文字列置換 (確認あり)
bind ^Space mark main        # マークセット
bind ^W cut main             # カット
bind ^K cut main             # カット
bind M-W copy main           # コピー
bind ^Y paste main           # ペースト
bind ^/ undo main            # アンドゥ
bind M-/ redo main           # リドゥ
bind ^Z suspend all          # サスペンド
bind F1 help main            # ヘルプ
bind F5 refresh main         # バッファ再読み込み
bind F6 whereis main         # 文字列検索
bind F7 findnext main        # 文字列検索 次へ
bind F8 findprevious main    # 文字列検索 前へ