web-dev-qa-db-ja.com

Notepad ++で失われたセッションを回復する方法

Notepad ++に50以上のファイルが開かれていて、すべての作業が整理されていました。

私はいつもコンピューターを一晩中冬眠状態にしていたので驚いた。

Notepad ++を最大化するとエラーメッセージが表示され、ファイルに沿って何かを開くことができません。

エラーを受け入れ、Notepad ++にはファイルがありませんでした。

再起動後、何も変更されず、backupsフォルダーで、ずっと前に作業したスタンドアロンの古いダーティファイルのみが見つかりました...

私の貴重な作業セッションを回復する方法について何か考えはありますか?

おかげで、

5
Peanuts

あなたはできませんが、これが再び起こるのを防ぐことができます。

これは 可能 設定でクラウドパスを設定している場合:

enter image description here

内訳後、すぐにクラウドとの同期をオフにし、そこから元のファイルを復元します。クラウドにファイルのバージョン管理がある場合、それはより簡単です。古いバージョンのsessions.xmlを取得するだけです。

これは他のすべての設定ファイルでも機能します。詳細については、上記のリンクを参照してください。


また、少なくとも Notepad ++ 7.5.9 に更新したことを確認してください。

修正されたバグのリストには、

  1. バックアップ中または停電中に発生する可能性のあるファイルの破損、またはその他のN ++の異常終了を修正します。

はい、これは2018年10月に対処されました。

4
miroxlav

前の回答のようにセッションをクラウドに保存していない限り、セッション全体を復元することはできません。ただし、保存していない(新しい)ノートを復元することはできます。それらは次の場所に保存されます:

%APPDATA%\Notepad++\backup

これらすべてのファイルをNotepad ++で直接開くか、次の場所でセッションファイルを再作成できます。

%APPDATA%\Notepad++\session.xml

<mainView>セクションにはそれらすべてが含まれます。

Pythonスクリプトで、セッションファイルのやり直しを簡単にしています。出力を<mainView> そしてその </mainView>タグ:

import os
import os.path as osp

npp_path = osp.join(osp.expandvars('%APPDATA%'), 'Notepad++', 'backup')
for fn in sorted(os.listdir(npp_path), key=lambda fn: fn.split('@')[1]):
    name = fn.split('@')[0]
    print('<File firstVisibleLine="0" xOffset="0" scrollWidth="64" '
          'startPos="8" endPos="8" selMode="0" lang="Normal Text" '
          'encoding="-1" userReadOnly="no" filename="{name}" '
          'backupFilePath="{npp_path}\{fn}" originalFileLastModifTimestamp="0"'
          'originalFileLastModifTimestampHigh="0" '
          'mapFirstVisibleDisplayLine="-1" mapFirstVisibleDocLine="-1" '
          'mapLastVisibleDocLine="-1" mapNbLine="-1" mapHigherPos="-1" '
          'mapWidth="-1" mapHeight="-1" mapKByteInDoc="0" '
          'mapWrapIndentMode="-1" mapIsWrap="no" />'.format(
                  name=name, npp_path=npp_path, fn=fn))
5
Ronan Paixão

バックアップフォルダーに関するコメントを提供してくれたJoe Pinedaに感謝します。クラッシュしたセッションを失った後、このフォルダに多くのファイルがあることを確認しました-保存されていないメモと既存のファイルの両方。それらはバイトでゼロ以外のサイズでしたが、通常のメモ帳もメモ帳++自体も何も表示しませんでした。ただし、Linuxではそれらを読み取ることができます。

予期しない問題が発生した場合に備えて、バックアップディレクトリのコピーを作成してください。

ファイル名のリストを作成し、ファイル名から「新規」を削除することで、未保存のメモを復元しました(Windowsはファイル名のスペースが大好きです)。

for note in $(ls new*); do echo $note | grep -v new; done

この名前のリストを変数に保存してから、ファイルを.txtにコピーできます。

filenames=$(for note in $(ls new*); do echo $note | grep -v new; done) 
for f in $filenames ; do cp 'new '$f 'new '$f.txt; done
2
Suzanka