Edytuj plik tekstowy na konsoli przy użyciu programu PowerShell

85

Próbuję wymyślić najłatwiejszy sposób edycji plików tekstowych w konsoli (w moim przypadku PowerShell). Używam 64-bitowego systemu Windows 7. Drażni mnie, że nie mogę po prostu pisać, edit filename.txtaby edytować plik. Kiedyś to działało, ale wszystko się zmieniło. Jakie mam opcje przeglądania i edycji plików tekstowych w konsoli Windows, a jeśli powiesz mi, żebym zainstalował i nauczył się VIM, uderzę cię w twarz. :-)

Busilinks
źródło
1
Pozwoliłem sobie edytować twoje pytanie, ponieważ nie ma ono nic wspólnego z PowerShell.
Joey
2
użyj nano ......
scape

Odpowiedzi:

28

Edytor tekstu Kinesics .

Jest super szybki i obsługuje duże pliki tekstowe, choć ma minimalne funkcje. Dostępna jest wersja GUI i wersja konsoli (k.exe). Powinien działać tak samo na Linuksie.

Przykład: W moim teście trwało 7 sekund, aby otworzyć obraz dysku 500 MB.

zrzut ekranu

user2164194
źródło
2
+1 Bardzo fajny edytor! Płynnie otworzono plik chmury punktów z 20 milionami punktów!
Adri CS
3
Nie musisz instalować. Po prostu uruchom pakiet .exe i zatrzyma się z błędem 740 (wymaga podniesienia uprawnień). Zanotuj katalog, w którym rozpakował pliki, i skopiuj je gdzieś.
Bill_Stewart
25

Dlaczego nie skorzystać z notatnika?

notepad.exe filename.txt

Stary edit.comdziała w PowerShell (przynajmniej na moim pudełku: Windows 7 Pro x86), ale w x64 nie działa z powodu swojej 16-bitowej architektury.

Możesz rzucić okiem na ten łatwy edytor.

CB.
źródło
Jeśli próbujesz edytować plik lokalnie, możesz po prostu wpisać notepad zamiast notepad.exe i będzie działać dobrze. Po prostu zaoszczędziłeś kilka sekund każdego dnia :)
Vlad Schnakovszki
1
Notatnik po cichu zawodzi dla mnie (Windows2019). Czy naprawdę ma wbudowany edytor konsoli, czy też próbuje otworzyć okno w sesji bez okien?
andrew lorien
21

Ryzykując, że mnie uderzysz, myślę, że utknąłeś z rozwiązaniem, o którym wspomniałeś. Spójrz na ten post na SuperUser:

Które edytory tekstu inne niż x są dostępne w programie PowerShell?

Istnieje również wersja nano dla systemu Windows:

Edytor Nano

Uchylę się teraz i mam nadzieję, że ktoś będzie miał bardziej wystarczającą odpowiedź.

Sven Plath
źródło
Dla użytkowników, którzy chcą wiedzieć, jak uruchomić nano z każdego katalogu, odpowiednia wyszukiwarka Google to: google.co.uk/ ... Osobiście wolę nano od kinesics, ale indywidualne preferencje mogą się różnić
Peter David Carter
Uratowałeś mi dzień. Istnieje wersja systemu Windows w obsłudze win32 .
Peter L
16

Trochę wskrzeszenie, ale dla każdego, kto przychodzi do tego pytania, spójrz na edytor Micro . Jest to mały samodzielny plik EXE bez żadnych zależności i z natywnymi wersjami systemu Windows 32 \ 64. Działa dobrze zarówno w PowerShell, jak i CMD.EXE.

wprowadź opis obrazu tutaj

Alan B.
źródło
micro.exe przetwarza chińskie znaki lepiej niż k.exe / kit.exe.
pimgeek
ale niestety micro.exe nie radzi sobie dobrze z przetwarzaniem ścieżki pliku systemu Windows, polecenie „otwórz plik” nie zapewnia okna eksploratora plików.
pimgeek
10

Zgadzam się ze Svenem Plath . Nano to świetna alternatywa. Jeśli masz konfigurację Chocolatey . Zainstaluj nano, wpisując w Powershell:

PS C:\dev\> choco install nano

Następnie, aby edytować plik somefile.txt, wpisz:

PS C:\dev\> nano somefile.txt

To całkiem fajne!

Edycja: Nano działa dobrze na moim komputerze z systemem Windows 10, ale ładowanie go po raz pierwszy na moim komputerze z systemem Windows 7 zajmuje niewiarygodnie dużo czasu. To spowodowało, że przełączyłem się na vim (vi) na moim laptopie z Win 7

PS C:\dev\> choco install vim
PS C:\dev\> vim $profile

Dodaj wiersz w profilu PowerShell do Set-Alias ​​(sal)

sal vi vim

Esc -: - x - Wpisz :-)

Albino Cordeiro
źródło
7

Możesz zainstalować Far Managera ( nawiasem mówiąc, świetny OFM ) i wywołać jego edytor w ten sposób:

Far /e filename.txt
Joey
źródło
podziękowania dla menedżera plików, to przez długi czas od ostatniego czasu użyłem tego typu menedżer plików, Ohh, pamiętam czasy gry na szkolnym starego komputera :)
Łk
6

Jeśli używasz kontenera Windows i chcesz zmienić dowolny plik, możesz łatwo pobrać i używać Vima w konsoli Powershell.

Aby shelled do kontenera Windows Docker za pomocą PowerShell:

docker exec -it <name> powershell

  • Najpierw zdobądź menedżera pakietów Chocolatey

    Invoke-WebRequest https://chocolatey.org/install.ps1 -UseBasicParsing | Invoke-Expression;

  • Zainstaluj Vima

    choco install vim

  • Odśwież ZMIENNA ŚRODOWISKOWA Możesz po prostu exitpowrócić do pojemnika

  • Przejdź do lokalizacji pliku i Vim go vim file.txt

Aidar Gatin
źródło
5

zainstaluj vim z internetu, a następnie możesz po prostu zrobić: vim "nazwa_pliku", aby edytować ten plik

edwardtyl
źródło
2
Kiepska odpowiedź, po tym, jak OP wyraźnie stwierdził , że nie chcą używać Vima. -1.
MD XF
11
Niezła odpowiedź, ponieważ Google poprowadzi tutaj ludzi innych niż OP.
Bruno Bronosky,
3

Możesz zainstalować nano w PowerShell za pośrednictwem choco - jest to łatwy sposób na uzyskanie możliwości edycji tekstu w PowerShell:

  1. Zainstaluj Choco
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
  1. Zainstaluj Nano
choco install nano
  1. Zysk
nano myfile.txt

Najlepsze jest to, że staje się częścią ścieżki i działa po ponownym uruchomieniu itp. :)

user230910
źródło
Wydaje się, że Nano w systemie Windows w zdalnym programie PowerShell nie rozpoznaje klawiszy góra / dół / lewo / prawo.
not2qubit
Prawdopodobnie powinieneś użyć nowszej wersji nano. Ten dostarczony przez choco jest bardzo stary. Następnie, aby używać go z SSH, musisz uruchomić z -cgflagami, ale i tak stracisz aktualizację kursora. Aby zaktualizować wizualne położenie kursora, naciśnij CTRL-L.
not2qubit
Jeśli masz jakiekolwiek problemy z nano, użyj zamiast tego vima
Stas BZ
2

Jestem emerytowanym inżynierem, który dorastał z DOSem, Fortranem, IBM360 itp. W latach 60-tych i podobnie jak inni na tym blogu bardzo tęsknię za utratą edytora wiersza poleceń w 64-bitowym systemie Windows. Po tygodniu spędzonym na przeglądaniu internetu i testowaniu edytorów, chciałem podzielić się moim najlepszym rozwiązaniem: Notepad ++. Jest to dalekie od DOS EDIT, ale są pewne dodatkowe korzyści. Jest to niestety edytor ekranu, wymaga myszy, a co za tym idzie, działa wolno. Z drugiej strony jest to przyzwoity edytor źródeł Fortran i wyświetla numery wierszy i kolumn. Może zachować wiele zakładek dla edytowanych plików, a nawet zapamiętuje, gdzie kursor był ostatni. Oczywiście wciąż wpisuję kody na klawiaturze (50 lat przyzwyczajenia), ale zaskakująco przynajmniej niektóre z nich działają. Może nie jest to udokumentowana funkcja. Zmieniłem nazwę edytora na EDIT.EXE, ustawiłem ścieżkę do niego i wywołałem go z linii poleceń. Nie jest aż tak źle. Żyję z tym. BTW uważaj, aby nie używać klawisza tab w źródle Fortran. Umieszcza ASCII 6 w tekście. Jest niewidoczny i przynajmniej gFortran nie może sobie z tym poradzić. Notepad ++ prawdopodobnie ma wiele funkcji, z którymi nie mam czasu się bawić.

Doug Millar
źródło
1

Myślę, że możesz po prostu użyć notatnika, na przykład:

notepad myfile.extension

Powinien otworzyć się w notatniku.

Xelxa
źródło
Jaka jest różnica w stosunku do już istniejącej odpowiedzi stackoverflow.com/a/11045112/2442804 ?
luk2302
1

Musiałem przeprowadzić debugowanie na obrazie dokera Windows Nano i musiałem edytować zawartość pliku, który mógłby zgadnąć, że to takie trudne.

Użyłem kombinacji Get-Contenti Set-Contenti kodowania / dekodowania base 64 do aktualizacji plików. Na przykład

Edycja pliku foo.txt

PS C:\app> Set-Content foo.txt "Hello World"                                                                                                                                                                                        
PS C:\app> Get-Content foo.txt                                                                                                                                                                                                      
Hello World                                                                                                                                                                                                                         
PS C:\app> [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("TXkgbmV3IG11bHRpDQpsaW5lIGRvY3VtZW50DQp3aXRoIGFsbCBraW5kcyBvZiBmdW4gc3R1ZmYNCiFAIyVeJSQmXiYoJiopIUAjIw0KLi4ud29ybGQ=")) | Set-Content foo.txt 
PS C:\app> Get-Content foo.txt                                                                                                                                                                                                      
My new multi                                                                                                                                                                                                                        
line document                                                                                                                                                                                                                       
with all kinds of fun stuff                                                                                                                                                                                                         
!@#%^%$&^&(&*)!@##                                                                                                                                                                                                                  
...world                                                                                                                                                                                                                            
PS C:\app>       

Sztuczka polega na przesłaniu potokiem do dekodowanego ciągu bazowego 64 Set-Content

[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("...")) | Set-Content foo.txt 

To nie jest vim, ale mogę aktualizować pliki, na ile to warte.

ug_
źródło
0

Cóż, istnieje tysiące sposobów edycji pliku tekstowego w systemie Windows 7. Zwykle ludzie instalują Sublime, Atom i Notepad ++ jako edytor. W przypadku wiersza poleceń myślę, że polecenie Basic Edit (przy okazji, które nie działa na komputerach 64-bitowych) jest dobre; Alternatywnie uważam, że wpisz con> nazwa pliku jako metodę bardzo godną pochwały.Jeśli system Windows jest nowo zainstalowany i chce się uniknąć Notatnika . To może być to !! Idealne wykorzystanie Type jako edytora :)

odniesienie do obrazu: - https://www.codeproject.com/Articles/34280/How-to-Write-Applet-Code

Reitsu Y
źródło
0

W Linuksie lubię Nano lub vim, kiedyś używałem nano, a teraz vim, i są one naprawdę dobrym wyborem. Dostępna jest wersja dla systemu Windows. Oto link https://nano-editor.org/dist/win32-support/

Jednak częściej musimy otwierać dany plik z wiersza poleceń tak szybko, jak to możliwe, aby nie tracić czasu. Możemy użyć notepad.exe, możemy użyć notepad ++ i tak, możemy użyć tekstu sublimacyjnego . Myślę, że nie ma lepszego niż lekki, zbyt potężny edytor. Wysublimowany tekst tutaj. po prostu nie chcemy wychodzić z linii poleceń lub chcemy, aby linia poleceń była szybka. i tak. Możemy do tego użyć wysublimowanego tekstu. zawiera wiersz poleceń, który pozwala szybko otworzyć plik w wysublimowanym tekście. Istnieją również różne argumenty opcji, z których możesz skorzystać. Tutaj, jak to robisz.

Najpierw musisz wiedzieć, że istnieje subl.exe . interfejs wiersza poleceń dla sublim.

wprowadź opis obrazu tutaj

1-> najpierw tworzymy plik wsadowy. treść jest

wprowadź opis obrazu tutaj

@ECHO OFF

"C:\Program Files\Sublime Text 3\subl.exe" %*

Możemy to zapisać, gdziekolwiek zechcemy. Wolałem utworzyć katalog na wysublimowanym katalogu instalacyjnym tekstowym. I zapisaliśmy tam plik wsadowy, który mamy napisać i stworzyć.

(Uwaga: zmień powyższą ścieżkę poniżej instalacji).

2-> dodajemy ten folder do zmiennej środowiskowej systemu ścieżki. i to wszystko.

wprowadź opis obrazu tutaj

lub z konfiguracji systemu (Windows 7/8/10)

wprowadź opis obrazu tutaj

następnie:

wprowadź opis obrazu tutaj

następnie:

wprowadź opis obrazu tutaj

następnie kopiujemy ścieżkę:

wprowadź opis obrazu tutaj

następnie dodajemy to do zmiennej ścieżki:

wprowadź opis obrazu tutaj

za szybko!

uruchom nowe cmd i teraz masz dobrze działające polecenie subl !

wprowadź opis obrazu tutaj

aby otworzyć plik, musisz po prostu użyć polecenia subl jako innego:

subl myfileToOpen.txt

możesz także użyć jednego z argumentów opcji (wpisz --help, aby zobaczyć je jak na powyższym obrazku).

Pamiętaj również, że możesz zastosować tę samą metodę w większości z dowolnym wybranym edytorem.

Mohamed Allal
źródło
4
Jeśli używasz PowerShell jako powłoki zamiast cmd, możesz po prostu dodać Set-Alias subl 'C:\Program Files\Sublime Text 3\sublime_text.exe'do swojego $PROFILE, więcej informacji na profilu tutaj technet.microsoft.com/en-us/library/bb613488(v=vs.85).aspx
Kevin Secrist
0

Możesz wykonać następujące czynności:

bash -c "nano index.html"

Powyższe polecenie otwiera plik index.html z edytorem nano w programie PowerShell.

Alternatywnie możesz użyć edytora vim za pomocą następującego polecenia

bash -c "vi index.html"
Mwiza
źródło
0

Nie jestem pewien, czy przyniesie to komukolwiek korzyści, ale jeśli używasz Azure CloudShell PowerShell, możesz po prostu wpisać:

code file.txt

Kod programu Visual Studio wyskakuje z plikiem do edycji, całkiem nieźle.

Ng Sek Long
źródło