サイト内検索
Translation here

2017/01/06(金)Notepad++で自動保存機能を使っている人向け:トラブルシューティング:自動保存していたドキュメントがいきなり消えた時に見るページ

notepad.PNG

うおぉ、マジで焦ったぞ……!
間違っても、notepad+++をインストールした直後の画面ではない、と言っときます。

お疲れ様です、野村(@official_nomura)です。
今日はついにやらかしてしまったか、と思うほどに衝撃を受けたお話です。

本日の対象者

  • 高機能エディタを愛用している方
  • notepad++ユーザー
  • ブログの記事をローカルで書いている方

本日の議題

notepad++のアップデートは待ってください

この記事はアップデート時にやらかしたお話です。

問題の画面*1

期待値
notepad想定.PNG


実情
notepad.PNG


扉絵ですけど、原因は分かりますかね?
色々想像できますが、別のPCで開いているから、というしょーもない理由ではありません。

*1 : 【聡い方へ】こんなヤバい情報を生データで提供しているのも、私が所有しない端末でキャプチャしたものだからです。こういう特定が簡単なユーザー名をつけるのはやめた方がいいと思います。

解答

updateする際に環境設定を書き換えたからです。
APPDATAを使用していた場合、APPDATAを使わないように設定を書き換えてインストールしました。
そうすると参照するパスが変わりますので、new nnで書いていた記事が消えたように見えます。

つまり、use APPDATAを
  • ONにした(C:\Users\(ユーザー名)\AppData\Roaming\notepad++\ )か、
  • OFFにした(C:\Program Files\notepad++\ )*2か、
を間違えて切り替えてしまった場合です。

インストール時はuse APPDATAをONにしていたが、間違えてOFFでアップデートしてしまった(可逆)
という場合に起こります。
大体これが原因と言って差し支えないでしょう。

*2 : ここではProgram Filesをデフォルト設定でインストールしたものとします。Program Files(x86)や違うフォルダを指定した場合は適宜読み替えてください。

復旧方法

ON、OFFの状況を想定しますので、上記ディレクトリはどちらでも持っています。
backupフォルダ以下に入っているファイルを今開いているNotepad++にそのまま突っ込むとファイルが読めます。

念のため書いておきますが、そのファイル自体はテンポラリ領域ではなく、backupというフォルダの下にあるファイルを開いたという処理なので、newファイルではなくなっています。

カラクリ

リバースエンジニアリングをしたわけでもドキュメントを読んだわけでもない、私が理解した範囲ですが……
Notepad++の設定(T)→環境設定→自動保存のセッションスナップショットと定期的なバックアップ設定がONになっている場合、設定されているフォルダにファイルをテンポラリで作るようになっています。
7秒周期で変更を監視していて、変更が確認できれば保存する、という事をやっているようです。
補足
前回まで開いていたドキュメントが起動時に開かれるのが嫌な人、結構多いみたいなんで書いておきますが、ここで上記機能をオフにすることで、純粋なタブ型高機能テキストエディタとして使えます。
私はむしろ保存しなくてもいい事を利用して大量にメモを書き並べる用途として使っています。

ありえなくもないので書きますが……
この方法の場合、ディスクに都度書き込むため、空き容量が0Byteだった場合はファイルが壊れる可能性があります。
ファイルに変更を加えない場合はファイルの保存自体が行われないので大丈夫かとは思いますが、マシンの健康状態と言う意味では既に大丈夫ではないので早い段階で解決するようにしましょう。
また、notepad++自体のアップデートも失敗している可能性が考えられます。よく注意してください。

対策

new nnでファイルを放置するのはやめて、しっかりと保存する癖をつけた方がいくつか安心です。
そういう意味では、backup領域を離れたnew nn@YYYYmmdd*3ファイルは既に保存されたドキュメント、という扱いになります。
本当はちゃんとしたファイル名をつけてあげて、正しく管理してあげるのが良いです。

*3 : 【YYYYmmdd】私はヤマダと呼んでいるんですが、素直にワイワイワイワイエムエムディーディーっていう人の方が多いんでしょうか?YYmmddもYmdもやまだ。今夜がやまだ(20170105)

代替案

むしろテンポラリファイルでもアップロードすればいいんじゃないでしょうか?
WordPressにはクイックドラフトという機能がありますが、そういう事を言いたいんじゃない!という私のために、adiaryがマルチブログ可だという事を逆に利用してこんなブログを作る事にしました。
stub:profile

以下の記事もよく読まれます

2016/03/08(火)notepad++でネットワークを簡単に切り替える

LAN端子が2つついてるならそれぞれのネットワークアダプタで管理すればいいんですが、
残念ながら私の端末のLAN端子は一つしかないのでこれが面倒くさい!

とりあえずBatにするか、と方針を固めたら今度はよく分からない仕様に振り回されるのでとりあえず以下コマンドを打ってみてそれから見直してみます。
netsh interface set address name="(接続名)" source=dhcp
rem netsh interface set address name="(接続名)" source=static 192.168.1.10 255.255.255.0 192.168.1.1 1
netsh interface set address dnsservers="(接続名)" source=dhcp
rem netsh interface set dnsservers name="(接続名)" source=static 192.168.1.255 primary validate=no
数値はなんちゃってなので適宜対応してください。

nameとかsourceとか要らない場合もあるみたいですが、私の環境では必要でした。
これでなんか怒られる場合はcmdからnetshあたりをhelpして怪しいところをつぶしていくとたぶんできるはず。

あとは必要な設定分のbatを用意してnotepad++の外部スクリプト(実行→ファイルを指定して実行)でショートカット登録すると気持ちいい!

batが使えるので色々応用が利きます。
wc -m $(FULL_CURRENT_PATH)で文字数取ったり、 wc -l $(FULL_CURRENT_PATH)で行数取ったり。
$(FULL_CURRENT_PATH)っていうのは今開いているファイルのフルパスを意味します。notepad++用ですね。

とはいえ、サーバーイコールリナックスで育ってきたのでwindowsのbatが使いにくいのなんの。
コマンドプロンプトにlinuxコマンドを仕込む方法もありますが、個人的にはちょっとこわいかな…という印象。
この辺はちょっと調べてみます。teeが使えると色々と捗りますので、それだけでも価値はあります。


タイトルにはnotepad++と書いてますが、ソース部分はただのコマンドなのでcmdが使えるなら何でもOKです。

2016/02/28(日)ショートカットキー:notepad++

お疲れ様です、野村です。
ちょっと宗教戦争的なお話になりますが、エディタの機能比較と便利機能の紹介などをぼちぼちにやろうかなと。
アレな言い方をすると自分が使っているエディタのいいところを挙げて「いやそんなん○○でもできるし」を引き出していこうという狙いです。

ということで、まずは愛用してますnotepad++について。

notepad.png


画像はなんちゃってです。
アレコレプラグインを入れてますのでツールバーに見慣れないものがありますが、エディタ部分はデフォルト設定の状態です。
拡張子txtなのにハイライトがされているのはエディタの設定です。
具体的には「言語」→「(当該言語)」で表示させてます。

左側はR、右側はPerlとしました。
実際はそのタグに対し個別に振るので左側とか右側という表現は正しくないのですが便宜上そうします。
見えにくいですが左側のrun.phpなんかは当然phpの設定を振っていますし、new 1(アイコンが赤いタブ。未保存の意)は確かJavaScriptかCSSかどっちかだと思います、テンポラリファイルで使っていたので。

ショートカットキー

Ctrl+T 現在カーソルを置いている行全体を見やすく表示
Ctrl+D 現在の行を一行下に複製する
Ctrl+K コメントアウト切り替え
Ctrl+L 現在の行を削除する
Ctrl+G 置換
Ctrl+O ファイルを開く
Ctrl+W 現在のタブを閉じる

が主に使うかなぁ。特にCtrl+DとCtrl+Kははかどります。
逆に置換機能はCtrl+Fからの置換タブを使う事が多いので忘れがちです。
同じ理由でファイル操作系のO,Wはほとんど使わないかも…

魅力的な機能はまだまだありますが、今回はショートカットキーの話を。
ちなみに、ショートカットキーが少ないのはマクロを設定するためのような気もしてます。
(これは後日にまた)
OK キャンセル 確認 その他