Czy program Notepad ++ może sam w sobie otwierać łącza do plików?


13

W Ustawieniach / Preferencjach Notepad ++ ma opcję na MISC.zakładce w „Ustawieniach łącza klikalnego” po prawej stronie, aby umożliwić otwieranie łączy znajdujących się w edytowanych plikach. Podkreśla je i otwiera po dwukrotnym kliknięciu. Próbowałem tego z file:///protokołem i działa, ale faktycznie wykonuje je zgodnie z powiązaniem plików ustawionym w systemie Windows.

Czy istnieje sposób, protokół lub sposób „utworzenia” protokołu (lokalnego), tak aby Notepad ++ otwierał dowolne pliki (dowolne rozszerzenia) z tych łączy w dokumencie, w samym Notepad ++? (tj. w innej zakładce)


To dość późna odpowiedź ... Więc nie chcesz zmieniać domyślnego edytora na Notepad ++, po prostu chcesz, aby linki znajdujące się w Notepad ++ pozostały tam, gdy je otworzysz?
Jon

@Jon tak, jak mówisz! Dodatkowo, jeszcze lepiej, jeśli mogę wybrać, jaki rodzaj (protokół) linków ma być otwierany wewnętrznie (n ++) i zewnętrznie (OS). Więc mogłem wybrać tylko ten plik: // linki do otwarcia w n ++.
n611x007

1
Myślę, że do tego potrzebowałaby wtyczka. Zeskanowane przez katalog wtyczek Notepad ++, ale nie wykryło czegoś podobnego, tylko wtyczka Explorer, która obiecuje otworzyć dowolny plik kliknięty w Npp.
zagrimsan

Dla każdego, kto jest tak dumny jak ja: nie mogłem tego zrobić z linkami file: //. To dlatego, że próbowałem "file: // C: \ SomeFolder \ SomeFile.txt". Działa po przełączeniu na „plik: // C: /SomeFolder/SomeFile.txt”
Rob3C

Pamiętaj, aby użyć %20jako zamiennika spacji w łączu, np file://C:/Some%20Folder/Some%20File.txt. Działa również jeśli pozostawić backslash \ w ścieżce jak długo masz prawo Protocol file://C:\Some%20Folder\Some%20File.txt.
Thomas H. Schmidt

Odpowiedzi:


6

file://jest wewnętrznym protokołem systemu Windows, więc jeśli chcesz zignorować „cokolwiek skojarzenie pliku [jest] ustawione w systemie Windows”, sugeruję użycie dedykowanego protokołu, powiedzmy npp://. Następnie dodaj to do rejestru (używając odpowiedniej ścieżki w systemie):

[HKEY_CLASSES_ROOT\NPP]
@="URL: NotePad++ Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\NPP\DefaultIcon]
@="\"C:\\Program Files\\Notepad++\\notepad++.exe\""

[HKEY_CLASSES_ROOT\NPP\shell]

[HKEY_CLASSES_ROOT\NPP\shell\open]

[HKEY_CLASSES_ROOT\NPP\shell\open\command]
@="\"C:\\Program Files\\Notepad++\\notepad++.exe\" \"%1\""

1
doskonała wskazówka i zabawne wyniki: D. w zależności od separatora ścieżek i liczby używanych katalogów, N ++ / windows zachowuje się bardzo różnie (czasami otwierając folder w eksploratorze ?!), większość kombinacji nie działa. Również uciekłem \"%1\"w pliku .reg.
n611x007,

Punkt wzięty. . cokolwiek to jest, że Windows przechodzi do niego jak argumenty [0] ...: D
CB

Nie działa na moim Win10. (Z lub bez poprawek dla „(x86)” w ścieżce pliku.) Chyba potrzebowałbym również obejścia opisanego przez Luke'a w jego odpowiedzi .
StackzOfZtuff

1

Podana odpowiedź nie działa w moim systemie Windows 7 Pro. Parametr %1nigdy nie został (poprawnie) przekazany do NotePad ++ i zaczął się od nowego pustego pliku.

Jednak zamiast tego uruchomiłem plik wsadowy poprzez @=c:\soft\start-notepad.bat "%1" W tym pliku wsadowym usunąłem NPP:///prefiks %1i zastąpiłem /go \wewnątrz %1. Z tego pliku wsadowego początek NotePad ++ ze zmodyfikowanym parametrem %1działa idealnie. Oto krótki kod pliku wsadowego:

start-notepad.bat

set note=insert here the path to notepad++.exe
set para1=%1%
SETLOCAL ENABLEDELAYEDEXPANSION 
set para1=!para1:edit:///=!
set para1=!para1:/=\!
%note% %para1%

Cudzysłów "%1"wokół %1tak naprawdę nie są konieczne, ponieważ ścieżki lub nazwy plików ze spacjami lub specjalnych symboli będzie byle doprowadzić rozbitych hiperłączy w Notepad ++.

Jeśli to konieczne, należy to poprawić w NotePad ++ za pomocą np %20. „Spacji”, w przeciwnym razie hiperłączenie łącza NPP:///c:/path/file name.txtzakończy się po file.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.