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 に設定する必要がありました!