24

Notepad++ はシェル ショートカットを自動的に追加するため、Windows エクスプローラーを使用しているときに、ファイルを右クリックして [Edit with Notepad++] を選択できます。どうすれば同じことを emacs で行うことができますか? Windows 用の GNU Emacs 22.3 を使用しています。

4

8 に答える 8

29

これが私が持っているものです-他の答えと同様です。emacs-conextmenu.reg (または anything-you-want.reg) という名前の新しいテキスト ファイルを作成し、以下を貼り付けます。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell]
[HKEY_CLASSES_ROOT\*\shell\openwemacs]
@="&Edit with Emacs"
[HKEY_CLASSES_ROOT\*\shell\openwemacs\command]
@="Absolute\\Path\\to\\your\\emacs\\bin\\emacsclientw.exe -n \"%1\""
[HKEY_CLASSES_ROOT\Directory\shell\openwemacs]
@="Edit &with Emacs"
[HKEY_CLASSES_ROOT\Directory\shell\openwemacs\command]
@="Absolute\\Path\\to\\your\\emacs\\bin\\emacsclientw.exe -n \"%1\""

パスを emacs インストール パスに変更します。「\」をエスケープすることを忘れないでください (\ がある場合は常に \\ に変更してください)。

これで、エクスプローラーでこの *.reg ファイルをダブルクリックするだけで、任意のファイルと任意のディレクトリの emacs のコンテキスト メニュー エントリが表示されます (熱心なファンなら!)。

これを機能させるには、emacs を開始し、emacs-server も開始する必要があることに注意してください (Mx server-start)。Windows で emacs を起動し、(server-start) を .emacs ファイルに入れることをお勧めします。

おまけとして、オートホットキー ( http://www.autohotkey.com/ )の次のスニペットは、Windows エクスプローラーで ctrl-shift-enter を押すと、emacs で選択されたファイルを開始します。これは、emacs で大量のファイルを編集するが、必ずしも emacs 自体でファイルに移動したくない場合に便利です。

#IfWinActive ahk_class CabinetWClass 
^+Enter::
  GetText(tmpvar)
  If (tmpvar != "")
     Run, d:/path/to/your/emacs/bin/dir/emacsclientw.exe -n "%tmpvar%"
Return
Return
于 2009-01-18T14:48:38.483 に答える
14

ポリグロットの答えと同じですが、サーバーやその混乱を開始する必要はありません。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell]
[HKEY_CLASSES_ROOT\*\shell\openwemacs]
@="&Edit with Emacs"
[HKEY_CLASSES_ROOT\*\shell\openwemacs\command]
@="C:\\Program Files (x86)\\Emacs\\bin\\emacsclientw.exe --alternate-editor=\"C:\\Program Files (x86)\\Emacs\\bin\\runemacs.exe\" -n \"%1\""
[HKEY_CLASSES_ROOT\Directory\shell\openwemacs]
@="Edit &with Emacs"
[HKEY_CLASSES_ROOT\Directory\shell\openwemacs\command]
@="C:\\Program Files (x86)\\Emacs\\bin\\emacsclientw.exe --alternate-editor=\"C:\\Program Files (x86)\\Emacs\\bin\\runemacs.exe\" -n \"%1\""
于 2012-04-11T19:36:43.237 に答える
5

レジストリを探索する準備ができていない場合は、Windows エクスプローラーからこれを行うことができます (Emacs だけでなく、任意のエディターの手順)。

  1. Windows エクスプローラーを開き、Tools\Folder Options...メニュー項目を選択します。

  2. タブをクリックしてFile Types、エディタに関連付けるファイルの種類の拡張子を選択します。この例では、TXT 拡張子を使用します。

  3. Advanced詳細フレームのボタンをクリックして、Edit File Typeダイアログを表示します。

  4. 現在のopenアクションを変更するか、または のような新しいアクションを指定できますOpen with MyEditor

    編集することを選択した場合は、Edit...ボタンをクリックし、Application used to peform actionテキスト ボックスにエディターへのフル パスを入力し、その後に"%1". たとえば、C:\SciTe\wscite\SciTE.exe "%1".

    新しいアクションを作成する場合は、New...ボタンをクリックし、アクションに名前を付けて、エディターへのフル パスを指定し、その後に"%1".

  5. アクションをそのファイル タイプのデフォルトにする場合は、アクションを選択してからSet Defaultボタンをクリックします。

  6. OKすべてのダイアログのうち。

別のオプションは、エディターの実行可能ファイルへのショートカットをSend Toフォルダーに配置すること%USERSPROFILE%\SendToです. 私は通常、ここに「Editors」という名前の新しいフォルダーを作成し、使用するさまざまなエディターへのショートカットを配置します。

于 2009-01-18T14:17:02.930 に答える
4

少し追加すると、バックグラウンドをクリックして現在のディレクトリを emacs で開くことも可能になります。

<<<Code as posted by polyglot>>>

[HKEY_CLASSES_ROOT\Directory\Background\shell\openwemacs]
@="Open &with Emacs"
[HKEY_CLASSES_ROOT\Directory\Background\shell\openwemacs\command]
@="C:\\Program Files\\emacs-24.2\\bin\\runemacs.exe \"%V\""

これ%Vが現在のディレクトリです。この場合、使用%1は機能しません。

于 2013-03-19T14:50:20.540 に答える
3

これは、同じことを行う別の方法です。WinXP および Vista で動作します。

これをレジストリに追加します。

edit-with-emacs.reg

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\Emacs]
@="Edit With &Emacs"
[HKEY_CLASSES_ROOT\*\shell\Emacs\command]
@="Wscript.exe C:\\emacs\\emacs-22.3\\bin\\launch-emacs-client.vbs \"%1\""

このファイルを emacs の bin ディレクトリに配置します。

起動-emacs-client.vbs

Set objShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

If WScript.Arguments.Count = 1 Then

  strComputer = "."

  Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

  Set colItems = objWMIService.ExecQuery("Select * From Win32_Process")

  Dim isRunning
  isRunning = False

  For Each objItem in colItems
    If InStr(objItem.CommandLine, "emacs.exe") Then
      isRunning = True
    End If
  Next

  If isRunning Then
    objShell.Run(fso.GetParentFolderName(WScript.ScriptFullName) & "/emacsclientw.exe -n """ & WScript.Arguments(0) & """")
  Else
    objShell.Run(fso.GetParentFolderName(WScript.ScriptFullName) & "/runemacs.exe """ & WScript.Arguments(0) & """")
  End If

Else
  objShell.Run(fso.GetParentFolderName(WScript.ScriptFullName) & "/runemacs.exe")
End If

注: W32 インストーラーは、インストール時に同様のスクリプトを実行します。

于 2009-01-26T22:57:57.297 に答える
2

このサイトでは、別のアプリでそれを行う方法を説明しています。パスを変更するだけで、すべて設定できます。

このキー/値を作成します:

[HKEY_CLASSES_ROOT\*\shell\Edit with AppName\command]
@=”\”C:\\Program Files\\Notepad2\\Notepad2.exe\” \”%1\”"

これは、従うのが少し簡単な別のリファレンスです。

于 2009-01-18T13:39:03.647 に答える
2

Windows と統合された Emacs ディストリビューションをチェックしてください: http://ourcomments.org/Emacs/EmacsW32.html

そのインストーラーは、必要なことを行うエクスプローラー メニュー エントリを作成します。

于 2009-01-18T14:55:33.557 に答える
1

上記のポリグロットの回答に追加したい - 彼が言及している AutoHotkey ショートカットは非常に便利ですが、コードは不完全です: GetText() 関数は AutoHotkey フォーラム ( http://www.autohotkey.com/forum /viewtopic.php?p=279576#279576 )、それは:

GetText(ByRef MyText = "")
{
   SavedClip := ClipboardAll
   Clipboard =
   Send ^c
   ClipWait 0.1
   If ERRORLEVEL
   {
      Clipboard := SavedClip
      MyText =
      ERRORLEVEL := 1
      Return
   }
   MyText := Clipboard
   Clipboard := SavedClip
   Return MyText
}

;to test: 
#k::
GetText(FileName)
msgbox clipboard=%FileName%
return

ClipWait 遅延を変更する必要があるかもしれないことに注意してください: 2 に設定する必要がありました!

于 2009-07-05T13:37:37.750 に答える