Отредактируйте текстовый файл на консоли с помощью Powershell

85

Я пытаюсь найти самый простой способ редактировать текстовые файлы в консоли (в моем случае - PowerShell). Я использую 64-битную Windows 7. Меня раздражает, что я не могу просто печатать, edit filename.txtчтобы редактировать файл. Раньше это работало, но теперь все изменилось. Какие у меня есть варианты просмотра и редактирования текстовых файлов в консоли Windows, и если вы скажете мне установить и изучить VIM, я собираюсь ударить вас по лицу. :-)

Бизилинки
источник
1
Я взял на себя смелость отредактировать ваш вопрос, потому что он не имеет ничего общего с PowerShell.
Joey
2
использовать нано ......
scape

Ответы:

28

Текстовый редактор Kinesics .

Он очень быстрый и обрабатывает большие текстовые файлы, но с минимальными функциями. Включены версия с графическим интерфейсом пользователя и консольная версия (k.exe). Должно работать так же на linux.

Пример: В моем тесте для открытия образа диска размером 500 МБ потребовалось 7 секунд.

Скриншот

user2164194
источник
2
+1 Очень красивый редактор! Открыл файл облака точек 20 миллионов точек плавно!
Adri CS
3
Вам не нужно устанавливать. Просто запустите пакет .exe, и он приостановится с ошибкой 740 (требуется повышение прав). Обратите внимание на каталог, в который были извлечены файлы, и скопируйте их куда-нибудь.
Bill_Stewart,
25

Почему бы не использовать блокнот?

notepad.exe filename.txt

Старое edit.comработает в PowerShell (по крайней мере, на моем компьютере: Windows 7 Pro x86), но в x64 он не работает из-за его 16-битной архитектуры.

Вы можете взглянуть на этот простой редактор.

CB.
источник
Если вы пытаетесь редактировать файл локально, вы можете просто ввести блокнот вместо notepad.exe, и он будет работать нормально. Вы просто экономите несколько секунд каждый день :)
Влад Шнаковский
1
Блокнот не работает для меня (Windows2019). В нем действительно есть встроенный консольный редактор или он пытается открыть окно в сеансе без окон?
Эндрю Лориен 07
21

Рискуя ударить меня, я думаю, что вы застряли на упомянутом вами решении. Взгляните на эту публикацию в SuperUser:

Какие текстовые редакторы не x в Powershell?

Также есть версия nano для windows:

Нано редактор

Я сейчас пригнусь и прикрою, надеюсь, у кого-нибудь будет более достаточный ответ.

Свен Плат
источник
Для пользователей, которым необходимо знать, как заставить nano работать из каждого каталога, соответствующий поиск в Google: google.co.uk/ ... Я лично предпочитаю nano кинезике, но индивидуальные предпочтения могут отличаться
Питер Дэвид Картер
Ты спас мне день. Есть версия для Windows с поддержкой win32 .
Peter L
16

Немного воскрешение, но для всех, кто задается этим вопросом, взгляните на редактор Micro . Это небольшой автономный EXE-файл без зависимостей с нативными версиями Windows 32 \ 64. Хорошо работает как в PowerShell, так и в CMD.EXE.

введите описание изображения здесь

Алан Б
источник
micro.exe обрабатывает китайские символы лучше, чем k.exe / kit.exe.
pimgeek
но, к сожалению, micro.exe плохо обрабатывает путь к файлу Windows, команда «открыть файл» не предоставляет окно проводника.
pimgeek
10

Я согласен со Свеном Платом . Нано - отличная альтернатива. Если у вас есть установка Chocolatey . Установите nano, набрав в Powershell следующее:

PS C:\dev\> choco install nano

Затем, чтобы отредактировать somefile.txt, введите:

PS C:\dev\> nano somefile.txt

Довольно аккуратно!

Изменить: Nano хорошо работает на моем компьютере с Windows 10, но загрузка на моем компьютере с Windows 7 занимает невероятно много времени. Это заставило меня переключиться на vim (vi) на моем ноутбуке с Win 7

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

Добавьте строку в профиле PowerShell в Set-Alias ​​(sal)

sal vi vim

Esc -: - x - Enter :-)

Альбино Кордейро
источник
7

Вы можете установить Far Manager ( кстати, отличный OFM ) и вызвать его редактор так:

Far /e filename.txt
Джоуи
источник
спасибо за файловый менеджер, прошло много времени с последнего раза, когда я использовал этот тип файлового менеджера, о, я помню времена, когда играл на школьном старом ПК :)
Люк
6

Если вы используете контейнер Windows и хотите изменить какой-либо файл, вы можете легко получить и использовать Vim в консоли Powershell.

Чтобы поместить в контейнер Windows Docker с помощью PowerShell:

docker exec -it <name> powershell

  • Сначала получите менеджер пакетов Chocolatey

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

  • Установить Vim

    choco install vim

  • Обновить ПЕРЕМЕННУЮ ОКРУЖАЮЩУЮ СРЕДУ Вы можете просто exitи оболочку вернуться в контейнер

  • Перейдите в расположение файла и Vim его vim file.txt

Айдар Гатин
источник
5

установите vim из сети, а затем вы можете просто сделать: vim "filename", чтобы отредактировать этот файл

эдвардтил
источник
2
Дерьмовый ответ, после того, как OP конкретно заявил, что они не хотят использовать Vim. -1.
MD XF
11
Не дерьмовый ответ, потому что Google приведет сюда людей, кроме OP.
Бруно Броноски
3

Вы можете установить nano в powershell через choco - это простой способ получить возможности редактирования текста в PowerShell:

  1. Установить Choco
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
  1. Установить Nano
choco install nano
  1. Прибыль
nano myfile.txt

Самое приятное то, что он становится частью пути и продолжает работать после перезагрузки и т. Д. :)

user230910
источник
Nano в Windows в удаленной оболочке PowerShell, похоже, не распознает клавиши вверх / вниз / влево / вправо.
not2qubit
Вероятно, вам следует использовать более новую версию nano. Тот, который предоставил choco , очень старый. Затем, чтобы использовать его с SSH, вам нужно работать с -cgфлагами, но в любом случае обновление курсора будет потеряно. Чтобы обновить визуальное положение курсора, нажмите CTRL-L.
not2qubit
Если у вас возникли проблемы с nano, используйте вместо него vim
Stas BZ
2

Я инженер на пенсии, выросший на DOS, Fortran, IBM360 и т. Д. В 60-х годах, и, как и другие участники этого блога, очень скучаю по потере редактора командной строки в 64-битной Windows. Проведя неделю в Интернете и тестируя редакторы, я хотел поделиться своим лучшим решением: Notepad ++. Это далеко от DOS EDIT, но есть некоторые побочные преимущества. К сожалению, это экранный редактор, требует мыши и, следовательно, работает медленно. С другой стороны, это достойный редактор исходного кода на Фортране, в котором отображаются номера строк и столбцов. Он может хранить несколько вкладок для редактируемых файлов и даже запоминать, где последний раз был курсор. Я, конечно, продолжаю набирать коды с клавиатуры (50 лет привычки), но на удивление, по крайней мере, некоторые из них работают. Возможно, это не задокументированная функция. Я переименовал редактор в EDIT.EXE, установил путь к нему и вызвал его из командной строки. Это не так уж и плохо. Я живу с этим. Кстати, будьте осторожны, чтобы не использовать клавишу табуляции в исходном тексте Fortran. Помещает в текст код ASCII 6. Это невидимо, и gFortran, по крайней мере, не может с этим справиться. Notepad ++, вероятно, имеет множество функций, с которыми у меня нет времени связываться.

Дуг Миллар
источник
1

Я думаю, вы могли бы просто использовать блокнот, например:

notepad myfile.extension

Он должен открыться в блокноте.

Xelxa
источник
в чем разница с уже существующим ответом stackoverflow.com/a/11045112/2442804 ?
luk2302 04
1

Мне пришлось выполнить некоторую отладку образа докера Windows Nano и отредактировать содержимое файла, кто бы мог подумать, что это так сложно.

Я использовал комбинацию Get-Contentи Set-Contentи кодирования / декодирования base 64 для обновления файлов. Например

Редактирование 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>       

Хитрость заключается в том, чтобы связать декодированную строку base 64 с Set-Content

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

Его нет vim, но я могу обновлять файлы, чего бы он ни стоил.

ug_
источник
0

Есть тысячи способов редактировать текстовый файл в Windows 7. Обычно люди устанавливают Sublime, Atom и Notepad ++ в качестве редактора. Для командной строки я думаю, что команда Basic Edit (кстати, которая не работает на 64-битных компьютерах) хороша; В качестве альтернативы я нахожу тип con> filename как очень достойный метод.Если окна установлены недавно и нужно избегать Блокнота . Это могло быть !! Идеальное использование Type в качестве редактора :)

ссылка на изображение: - https://www.codeproject.com/Articles/34280/How-to-Write-Applet-Code

Reitsu Y
источник
0

В linux мне нравится Nano или vim, раньше я использовал nano, а теперь vim, и это действительно хороший выбор. Есть версия для windows. Вот ссылка https://nano-editor.org/dist/win32-support/

Однако чаще нам нужно как можно быстрее открывать рассматриваемый файл из командной строки, чтобы не терять время. Мы можем использовать notepad.exe, мы можем использовать notepad ++, и да, мы можем использовать подсознательный текст . Думаю, нет ничего лучше легкого и слишком мощного редактора. Здесь возвышенный текст. на самом деле, мы просто не хотим выходить из командной строки, или мы хотим использовать командную строку, чтобы работать быстро. и да. Для этого мы можем использовать возвышенный текст. он содержит командную строку, которая позволяет вам быстро открыть файл с возвышенным текстом. Также есть различные аргументы, которые вы можете использовать. Вот как вы это делаете.

Для начала нужно знать, что есть subl.exe . интерфейс командной строки для sublim.

введите описание изображения здесь

1-> сначала создаем командный файл. содержание

введите описание изображения здесь

@ECHO OFF

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

Мы можем сохранить это где угодно. Я предпочел создать каталог в каталоге установки возвышенного текста. И сохраняем там командный файл, который мы приходим писать и создавать.

(Примечание: измените указанный выше путь после установки).

2-> мы добавляем эту папку в системную переменную окружения path. вот и все.

введите описание изображения здесь

или из конфигурации системы (windows 7/8/10)

введите описание изображения здесь

тогда:

введите описание изображения здесь

тогда:

введите описание изображения здесь

затем копируем путь:

введите описание изображения здесь

затем мы добавляем это в переменную пути:

введите описание изображения здесь

слишком быстро!

запустите новый cmd, и теперь у вас есть команда subl, работающая хорошо!

введите описание изображения здесь

чтобы открыть файл, вам нужно просто использовать команду subl в качестве товарища:

subl myfileToOpen.txt

вы также можете использовать один из аргументов параметров (введите --help, чтобы увидеть их, как на изображении выше).

Также обратите внимание, что вы можете применить тот же метод практически с любым редактором по вашему выбору.

Мохамед Аллал
источник
4
Если вы используете PowerShell в качестве оболочки вместо cmd, вы можете просто добавить Set-Alias subl 'C:\Program Files\Sublime Text 3\sublime_text.exe'в свой $PROFILEпрофиль дополнительную информацию здесь technet.microsoft.com/en-us/library/bb613488(v=vs.85).aspx
Кевин Секрист
0

Вы можете сделать следующее:

bash -c "nano index.html"

Приведенная выше команда открывает файл index.html с помощью редактора nano в Powershell.

Кроме того, вы можете использовать редактор vim со следующей командой

bash -c "vi index.html"
Мвиза
источник
0

Не уверен, что это принесет пользу кому-либо, но если вы используете Azure CloudShell PowerShell, вы можете просто ввести:

code file.txt

И появится код Visual Studio с файлом, который нужно отредактировать, очень здорово.

Нг Сек Лонг
источник