Linux」カテゴリーアーカイブ

Gedit Mode

GNOME アプリの C ソース先頭にある

/* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */

って何?
多分 vim, emacs 等で使うんだろうと今迄思っていた。
けれどたまに「あれ?」と思うことがあったので実験してみた。

#!/bin/sh

cat << _EOS_ > test.java
#!/usr/bin/env python3
#! -*- Mode: C; indent-tabs-mode: 2; tab-width: 2 -*-

import sys
_EOS_

という中身は Python モードは C 拡張子は Java というファイルを作る。
Gedit で作らないように上記のようにシェルスクリプトで作った。
まあこのスクリプトを保存した時点で結果は解ってしまったけど。

筆者の Gedit では普段の設定は Python ガイドラインに合わせている。

ind01

先程のスクリプトで作ったファイルを開いたら結果はどうなった?

ind02

C モードになりタブ幅が変更され Tab ではなく空白指定が解除された。
知らなかった、Gedit はこの指定でファイル毎にインデントを指定できるんだ。
指定方法は emacs 形式でいいみたい。

更に、書き換えると保存毎にリアルタイムで変更になる。
モードを変更してタブ幅を変えても Ctrl+S を押した時点で切り替わる。
つまり先程のスクリプトは保存した時点で C に切り替わって焦った。

ということで。
筆者のような Python ガイドライン派は C を書く時に上記を先頭に書く。

C Coding Style にしている人は

#!/usr/bin/env python3
# -*- Mode: PYTHON; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-

と書いとけば Python を書く毎に設定を弄らないですむ。

PHP は言語としては統一されていないのでお好みでいいかな。
とにかくどこかに書いてコメントにすればいいみたい。

<!-- -*- Mode: PHP; indent-tabs-mode: 4; tab-width: 4 -*- -->

他のファイルを開くと普通にデフォルトが適用されます。

他の言語はガイドラインを知らないので各自で調べてください。
ただ某言語はワンライナーしか書かないからどうでもいいだろうな。

後 SyntaxHighlighter は Tab にしても半角スペースになってまうんで。
Web に貼り付けている奴は気に入らないなら \t で全置換してNE!

追記
一番肝心なことを書き忘れていた。
[モードライン]プラグインの機能なので有効にしてね。

Linux でファイル名に改行コードを入れる

今日は Linux のファイル名で遊ぶよ。

ファイル名に日本語を使う人は改行位置が気になることがあるよね。
英語ならワードラップで勝手にイイ感じになるのに不公平だ。

rename01

ここは「魔法少女」の所で改行してくれると綺麗に見えるのに…
みたいなことを思う変人がいるかどうかは知らないけれど。
実はファイル名に改行コードを普通に入れられるんだよ。

mv コマンドの変更先ファイル名をダブルクォーテーションで始める。
改行させたいところで Enter して改行する、クォーテーションを閉じる。

$ mv 魔法少女まどか☆マギカ.jpg "魔法少女
> まどか☆マギカ.jpg"

rename02

ls での表示が ? になった。
0x0A なので改行するかなと思ったけど ? を表示なんだ。
Nautilus ではどうなるんだろう。

rename03

見事狙った位置で改行されるようになりました。
いや、ファイル名に改行コードなんて入れて問題無いのか?

rename04

eog, Firefox でも問題なく表示できるけど Chrome は駄目でした。
少し調べるとサーバーアップロードとかにも一部引っ掛るみたい。
普通は文字列以外がファイル名にあるなんて思わないもん。

でも外付け HDD なんかにコピーするのは問題無し。
つまり自分のコレクションに使う分にはやってもよさそう。

というより。
端末でこうすると 0x0A が入ってしまうので注意しよう。
気が付かずにファイル名に入れてしまい「何か変」にならないようにNE!

Linux でエロ本

今日は Linux でエッチな本を楽しむ方法の紹介だよ。
CBR, CBZ と言っても HONDA のバイクじゃないよ。

エッチなサイトを廻っているとたまに D○M のサンプル本が置いてあるよね。
紳士であるみんなはついつい zip を落としてしまうよね。
男の子だもん、しかたがないよ。
ということで、そのまま拡張子を *.cbz に変更してみよう。

ero1

あれ?圧縮したまま Nautilus でサムネイル表示されちゃった。
コレをそのまんまドキュメントビューアー(evince)で開くよ。

ero2

なんと今の Linux では何も入れなくてもエロ本を楽しめちゃう。
ファイルが一つで中身がサムネイルで解るので管理も簡単。
サムネイルを表示したら困るなんて女々しい男はいないよね。
まさしく男の中の男のための OS でありました。

でも evince だと快適機能が何もない、でも大丈夫。
世界中の男子なプログラマーが MComix ってアプリを作っている。
コイツなら見開きページもバッチリさ(スクショは自粛)
もうプロパティからデフォルトアプリにしてしまえ。

ero3

いや、本当は自作か自分でスキャンしたもの用なんでしょうけど。
スマホや iPad の観覧アプリも結構あるんだよ。

ちなみに MComix は Python 製です、PyGtk ですが。
もし「もっとこう…」とか思ったらソースを参考に自作してみよう。
/usr/lib/python2.7/site-packages/mcomix にあるよ。

PyGObject ならおじさんがチップスを書いているよ。
PyGObject Tips – L’Isola di Niente
せっかく作り変えたけどアクセス少なくてションボリだよ。

Ctrl+G

たまには小ネタ。

今日も Google Chrome でコードを求めて海外 Web をページ内検索。
[次を検索]でうっかり Ctrl+G を、ソレ Gedit や!

でも普通に次を検索した、Shift+Ctrl+G も使えた、あれ?
もしやと思って Firefox でも試したら同じであった。

F3 だけじゃなかったのか、今迄使い分けしていた筆者って…

話は変わるが、GNOME 3.14 を使っている人なら解るだろうけど。
Gedit や Nautilus の新規タブペインが Ctrl+T になっている。
以前は F3 だった、gnome-terminal は +Shift が必要ですが。

google-chrome や Firefox に合わせたのだろう。
グローバル化は三本線のメニューボタンだけでは無いようです。

せっかくなので GNOME アプリのキーボード操作を少し。

Web ブラウザのタブペイン移動は Ctrl+PageDown ですね。
GNOME アプリでタブペインの移動は Ctrl+Alt+PageDown です。
実は GTK+ が提供しているので作り手側は何もせず実装される。

終了の Ctrl+Q は逆に google-chrome が +Shift。

タブペインを閉じるのは全部 Ctrl+W。
gnome-terminal では Shift を追加すると覚えておけばいい。

Ctrl+L のロケーションバーへ移動は Nautilus でも使える。

フルスクリーンは全部 F11。
Windows しか使えない人は Alt+Enter だと信じているようです。
Alt+Enter は Nautilus でファイルのプロパティシート。

メインメニューのドロップも全部 F10。
これは GTK+ が提供していないことは GUI アプリを自作すれば解る。
作り手側が合わせようとしなければコレらは実現しない。

Ctrl+A|S|Z|X|C|V は書くまでもない。
Home, End は Gedit では +Ctrl。

ついでにマウス操作。
Shift を押しながらウインドウを移動すると画面角に簡単に貼り付けできる。

GNOME アプリは昨今の Web ブラウザと同じ感覚で扱える素敵な環境になった。
なのに GNOME3 は何故か評判が悪い、理由は老害達だけどNE。

dos2unix

改行コードの変換と上書きモードについて。あるいは iconv と nkf に見る思想の違い – 玉虫色に染まれ!

iconv と g_convert については以前書いたけど
そういえば改行コードを考えていなかった。
g_convert | PaePoi

SHIFT-JIS じゃなく CP932…
は置いておいて、コードでヤルなら自力しか無さそうだ。

しかし dos2unix なんて便利なコマンドがあったのね。

よくわかんないので早速 man を見てみる。
どうやら基本的に CRLF を LF に置き換えるコマンドらしい。
特定の文字コードは変換もするっぽいけど CP932 は当然無いな。

–remove-bom が default で有効のようだ。
うっ、コレも考えていなかった。
UTF-8 に BOM を付けるあの Windows の最悪仕様を忘れていた!
BOM を付けると PHP が動かないとか色々あるのよ。

本当に BOM を削除してくれるか試してみよう。
使い方はパイプで渡すと標準出力へ、引数に渡すと上書きみたい。

SeeMe というアプリを C# で作っていた頃のファイルを引っ張り出して。
そう、Visual Studio やメモ帳は勝手に BOM を付けてしまうんです。
特にメモ帳は BOM の有無のみで UTF-8 を見分ける糞っぷり。

dos2unix

見事 CRLF が LF になり BOM が削除された。
上書きなのでワイルドカードでまとめて変換も簡単、これはいい。
つか Windows はいいかげん BOM をヤメろよと。

しかし nkf ってマジで今でもメンテされているんですね。
nkf Network Kanji Filter プロジェクト日本語トップページ – SourceForge.JP