WordPress で本サイトを作成しています。
IT系のサイトのため、以下のように Teraterm でのコマンド結果をコピペして「コマンドライン」と「コマンド結果」を載せることがよくあります。
[test@cent07 ansible]$ ls -l |
コマンドの中には、コマンド結果が見やすいように空白でインデントをつけている場合があります。
以下はコマンド結果をそのままスクリーンショットを取ったものです。
綺麗にインデントが入っていて見やすいです。
以下はコマンド結果をそのまま貼り付けた(コピペした)ものです。
インデントも1行空白行も綺麗に消えています(笑)
パッと見た感じ分かりにくいです。
[root@cent07 ~]# ifconfig lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 [root@cent07 ~]# |
WordPress で「空白スペース」や「空白行」が勝手に消える(自動的に削除される)のを防ぐ方法
調査すると「TinyMCE Advanced」プラグインが入っていて「高度なオプション」で「段落タグの保持」にチェックが入っている場合は自動整形されなくなる?という情報があったので、確認してみました。
しかし・・・すでに設定はされてありました。
「TinyMCE Advanced」プラグインの「高度なオプション」-「段落タグの保持」のチェックは効きませんでした。(私の環境だけかもしれません)
実際、コピペしてすると以下のようになり、、
[root@cent07 ~]# ifconfig lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 [root@cent07 ~]# |
その後、コピペ時に消えてしまった「空白スペース」や「空白行」を再度自分でインデント調整すれば以下のように綺麗に成形することはできます。
[root@cent07 ~]# ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 [root@cent07 ~]# |
しかし、あとからこのインデントを作る作業をするのが面倒なので、何とかする方法を考えました。
文字実体参照「 」で置換する
コマンド結果をコピーしてエディタに貼り付けると、ちゃんとインデントは残っています。
※以下、サクラエディタの例です。
次にエディタの「置換機能」を利用して「 」(半角スペース)を「 」に置換します。
置換すると、こんな感じになります。
これをこのままコピペをしても以下のように改行タグ(<br />)がないので、こんな感じになります。
[root@cent07 ~]# ifconfig ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.12 netmask 255.255.255.0 broadcast 192.168.1.255 ether 00:0c:29:6b:9d:b5 txqueuelen 1000 (Ethernet) RX packets 65431 bytes 10219295 (9.7 MiB) RX errors 0 dropped 13 overruns 0 frame 0 TX packets 6258 bytes 566270 (552.9 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1 (Local Loopback) RX packets 4 bytes 340 (340.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4 bytes 340 (340.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@cent07 ~]# [root@cent07 ~]# |
そのため、サクラエディタで改行タグも追加します。
(エディタの改行コード「\r\n」を「<br />」に置換します)
「全て置換」ボタンをクリックすると、こんな感じになります。
一見すると、おかしく見えますが問題ありません。
これを WordPress のエディタを「テキストモード」にして貼り付けます。
こんな感じになります。
そして「ビジュアルモード」に変更すると、以下のように綺麗に原型を保ったままコマンド実行結果をコピペ(と言える?)できました。
[test@cent07 ~]$ ifconfig lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 [test@cent07 ~]$ |
今回はあえて「プラグイン」を利用しない方法にこだわりました。
しかし意外と手間がかかるので、ツール化するか「プラグイン」を導入するか考えたいと思います。
【追記】最終的にサクラエディタで「マクロ化」したら非常に便利になった
以下の定例作業をマクロ化したら、半角スペースを保ったままコマンド実行結果をコピペするのが楽になりました。
以下、改めて作業手順を作りました。
サクラエディタを起動する
新規作成でサクラエディタで起動します。
コマンドラインの貼り付け
マクロを実行したいコマンドライン結果をエディタに貼り付けておきます。
キーマクロの記録開始
メニューより「ツール」-「キーマクロの記録開始」をクリックします。
文字列の置換作業
メニューより「検索」-「置換」をクリックします。
置換前:半角スペース
置換後:
「すべて置換」ボタンをクリックします。
以下のように変わることを確認します。
更にメニューより「検索」-「置換」をクリックします。
置換前:\r\n
置換後:<br />
「すべて置換」ボタンをクリックします。
以下のように変わることを確認します。
その他必要な処理
私の場合はテーブルで囲みたかったので、その処理も追加しました。
キーマクロの終了
メニューより「ツール」-「キーマクロの記録を終了&保存」をクリックして、マクロに分かりやすい名前を付けて保存します。
動作確認
サクラエディタを起動してコマンドラインをコピペします。
サクラエディタのメニューより「ツール」-「キーマクロの実行」をクリックします。
マクロで変換されたコマンドラインを WordPress のエディタを「テキスト」モードにしてコピペします。
「ビジュアル」モードに戻して確認します。
見事にコマンドラインの結果そのままにコピペすることができました!
[test@cent07 ansible]$ ifconfig lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 [test@cent07 ansible]$ |
何気に私の中では今年一番の作業効率化アイデアだと思っています(笑)
【追記】タグが含まれているとタグごと消えてしまう問題あり(2017年12月2日追記)
更に追記です。
上記のサクラエディタのマクロ化で問題なく使えていたのですが、ある日タグが消去されていることが分かりました。。
例えば以下のようになります。
特定のタグが消えてしまう
マクロ実行後に特定のタグが消えてしまうことが判明しました。
テスト テスト1 |
- タグあり
- 空白あり
以下のようになってしまいます。
英語のタグ(<test>など)が消えています。
テスト > テスト1 |
おかしくなってしまう条件
- <日本語> ← 消えない。問題なし。【例】<テスト>、<日本語>など
- <英語> ← 消える。【例】<test>、<head>、<body>など
なぜ英語のタグだけ消えてしまうのか
調べたところ、マクロには問題がなくて、WordPress に貼り付けるときに消えていることが分かりました。
【マクロ実行後】
マクロ実行後もタグが残っています。
しかし、これを WordPress にコピペすると、以下のように消えてしまいます。
テスト > テスト1 |
つまり、原因は WordPress 側が原因でした。
ただ、よくよく考えてみると、<p>や<span>などの HTML タグは消えて当然です。
もう一度整理すると、
- タグをそのまま WordPress の記事に掲載したい
- ビジュアルエディタでタグをそのまま載せることは可能、しかし半角空白文字がすべて綺麗に消えてインデントがなくなってしまう ← そのためマクロを作成した
- マクロを使う ← テキストエディタを使うため、HTML タグが消えてしまう
- HTMLタグを載せたい ← ビジュアルエディタしか使えないが、半角空白文字が消える
- ビジュアルエディタで半角空白文字を残す方法がない ← ないからマクロを作った
みごとなデッドロック状態です(笑)
【理想】
ビジュアルエディタで、HTMLタグを貼り付けできて、且つ半角空白文字のインデントも保持したい。
→ 現状できない。
このような状態です。
追記【妥協案】
現時点での妥協案です。
- タグが含まれていない ← 【テキストエディタ作業】マクロを使って「テキストエディタ」から貼り付け
- タグが含まれている ← 【ビジュアルエディタ作業】一旦サクラエディタで半角文字2つを全角文字に置換してインデントを保って貼り付け
追記(2018年3月21日)
今までは「復帰改行(\r\n)」を「<br />」に置換していましたが、最近うまくいきません。
(2018年3月21日現在)
■今までうまくいっていた
- 置換前:\r\n
- 置換後:<br />
特に「<br />」が連続している場合にうまくいかないようです。
あ<br /> <br /> い<br /> |
<br /> |
↓ 結果、以下のように空白1行が入りません。(空白1行が削除されてしまいます)
あ い |
改良版
■改良版
- 置換前:\r\n
- 置換後:<p> </p>
置換後は<p>タグで囲みます。
← 半角スペースです。
■サクラエディタのマクロの場所
C:\Users\<ユーザー名>\AppData\Roaming\sakura
■マクロファイル名
commandline_macro.mac ← 適当に分かりやすいマクロ名を付けます。
■マクロ
//キーボードマクロのファイル |
S_ReplaceAll
■構文
S_ReplaceAll(‘検索文字列’, ‘置換文字列’, ‘オプション’)
例えば「半角文字」を「 」に置換したい場合は
S_ReplaceAll(‘ ‘, ‘ ’, 28);
になります。
オプションの「28」ですが、10進数表記で記載します。
「28」を2進数に変換すると「00011100」になります。
「28」は「00011100」なので「3bit」「4bit」「5bit」にフラグが立っているということになります。
つまり上図の表で言うと
- 3 ← 見つからない時にメッセージを表示
- 4 ← 置換ダイアログを自動的に閉じる
- 5 ← 先頭(末尾)から再検索する
というオプションになります。
※ただしこのオプション「28」が正しいオプションなのかどうか正直言って不明です。
S_ReDraw(0)
S_ReDraw(0); は「再描画」です。
最終的な修正マクロ
以下が最終的な修正したマクロです。
復帰改行を単純に「<br />」変換すると、「<br /><br />」の場合は2つ目の「<br />」が消えてしまうため、「<br />」の前に「半角空白文字」を挿入します。
その結果、「 <br /> <br />」と半角空白文字が入るので2つ目の「<br />」は消えません。
//キーボードマクロのファイル |
サクラエディタ マクロ説明
インターネット上に「サクラエディタ」の「マクロの解説」ページがあります。
http://www.geocities.jp/maru3128/SakuraMacro/
「S_ReplaceAll」で検索をすると・・・一応検索結果として表示されます。
コメント