Notepad++ はシェル ショートカットを自動的に追加するため、Windows エクスプローラーを使用しているときに、ファイルを右クリックして [Edit with Notepad++] を選択できます。どうすれば同じことを emacs で行うことができますか? Windows 用の GNU Emacs 22.3 を使用しています。
8 に答える
これが私が持っているものです-他の答えと同様です。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
ポリグロットの答えと同じですが、サーバーやその混乱を開始する必要はありません。
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\""
レジストリを探索する準備ができていない場合は、Windows エクスプローラーからこれを行うことができます (Emacs だけでなく、任意のエディターの手順)。
Windows エクスプローラーを開き、
Tools\Folder Options...メニュー項目を選択します。タブをクリックして
File Types、エディタに関連付けるファイルの種類の拡張子を選択します。この例では、TXT 拡張子を使用します。Advanced詳細フレームのボタンをクリックして、Edit File Typeダイアログを表示します。現在の
openアクションを変更するか、または のような新しいアクションを指定できますOpen with MyEditor。編集することを選択した場合は、
Edit...ボタンをクリックし、Application used to peform actionテキスト ボックスにエディターへのフル パスを入力し、その後に"%1". たとえば、C:\SciTe\wscite\SciTE.exe "%1".新しいアクションを作成する場合は、
New...ボタンをクリックし、アクションに名前を付けて、エディターへのフル パスを指定し、その後に"%1".アクションをそのファイル タイプのデフォルトにする場合は、アクションを選択してから
Set Defaultボタンをクリックします。OKすべてのダイアログのうち。
別のオプションは、エディターの実行可能ファイルへのショートカットをSend Toフォルダーに配置すること%USERSPROFILE%\SendToです. 私は通常、ここに「Editors」という名前の新しいフォルダーを作成し、使用するさまざまなエディターへのショートカットを配置します。
少し追加すると、バックグラウンドをクリックして現在のディレクトリを 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は機能しません。
これは、同じことを行う別の方法です。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 インストーラーは、インストール時に同様のスクリプトを実行します。
このサイトでは、別のアプリでそれを行う方法を説明しています。パスを変更するだけで、すべて設定できます。
このキー/値を作成します:
[HKEY_CLASSES_ROOT\*\shell\Edit with AppName\command]
@=”\”C:\\Program Files\\Notepad2\\Notepad2.exe\” \”%1\”"
これは、従うのが少し簡単な別のリファレンスです。
Windows と統合された Emacs ディストリビューションをチェックしてください: http://ourcomments.org/Emacs/EmacsW32.html
そのインストーラーは、必要なことを行うエクスプローラー メニュー エントリを作成します。
上記のポリグロットの回答に追加したい - 彼が言及している 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 に設定する必要がありました!