Saya suka Powershell, tetapi dari latar belakang Linux ada beberapa hal yang benar-benar mengganggu saya. Seperti misalnya cara penyelesaian otomatis default berfungsi.
Sebagai contoh: Get-PS memperluas ke "Get-PSBreakpoint" yang merupakan perintah pencocokan pertama. Dalam bash jika hanya ada satu perintah yang cocok, bash akan memperluas ke perintah yang cocok. Jika ada beberapa tab memukul sekali tidak melakukan apa-apa, tab ketuk ganda akan menampilkan daftar perintah yang cocok tetapi tidak berkembang. Apakah ada cara untuk membuat Powershell bersikap seperti ini?
Dan satu hal lagi, jika saya telah menulis satu baris, dan memindahkan marker kembali ke perintah sebelumnya (marker adalah di mana ^ berada):
"Get-PSS ^ | Remove-PSSession" otomatis menyelesaikan ke "Get-PSSession ^", menghapus semua perintah tambahan. Dalam bash perintah trailing masih akan ada di sana tidak terpengaruh. Apakah ada cara untuk membuat Powershell tidak menghapus perintah tambahan saat menyelesaikan otomatis?
Bonus adalah untuk mendapatkan CTRL + L untuk menghapus layar. CTRL + A untuk pergi ke awal baris, dan CTRL + E untuk pergi ke akhir baris.
sumber
Jawaban:
Lihat PSReadline .
Dari artikel:
Saya menggunakannya setiap hari!
sumber
Set-PSReadlineKeyHandler -Key Tab -Function Complete
CompleteMenu
alih-alihComplete
untuk pengalaman yang lebih mirip bash, ini memungkinkan Anda menggunakan tombol panah untuk menavigasi pilihanMungkin Anda harus melihat Powertab , perluasan PowerShell Tab yang dapat disesuaikan.
sumber
hai peter cukup tekan F8 untuk sesuatu seperti pencarian cepat. Itu selesai dengan perintah yang Anda jalankan sebelumnya yang dimulai dengan apa yang Anda miliki di baris. Masalah dengan penghapusan trailing itu mengganggu, saya menulis saran di Connect tentang masalah yang sama. Di waktu utama Anda dapat menggunakan Powershell ISE, itu berperilaku sedikit lebih baik (jangan menghapus karakter yang tertinggal).
sumber
Subsistem command.exe lama masih terlibat dalam PowerShell, dan memaksa banyak perilaku tidak menyenangkan. Tetapi pada PowerShell v3, GUI (PowerShell ISE) sekarang dapat digunakan, dan itu mencakup pengalaman penyelesaian + pewarnaan yang jauh lebih modern.
sumber
PowerShell menggunakan fitur konsol yang sama dengan Command Prompt yang terhormat; jadi Anda memiliki Beranda / Akhir yang biasa, dan:
... tapi tidak ada fasilitas untuk menunjukkan semua kemungkinan penyelesaian, sejauh yang saya tahu.
sumber
Powerhell biasa menggunakan cmd sebagai jendela command prompt. Itu sebabnya ia memiliki warisan besar (program menyampaikan perilaku cmd lama untuk usia) yang tidak dapat diubah karena keterbandingan mundur.
Saya sarankan Anda menggunakan powershell_ise alih-alih powershell (ini termasuk dalam bundel powershell standar). Versi 3.0 (tidak yakin tentang sebelumnya) mendukung Intellisense dari kotak. Ini sangat dekat dengan gaya penyelesaian pesta. Tekan saja Ctrl + Space, bukan Tab. Saya mengalami masalah dengan penyelesaian kustom di PowerTab, tetapi Intellisense berfungsi dengan baik. Powershell_ise juga mempertahankan perintah trailing, memiliki mode pilih normal, mendukung Ctrl + C, Ctrl + V, Ctrl + A untuk memilih perintah yang dimasukkan, jadi Ctrl + A, lompat ke pengemis baris, Ctrl + A, sampai akhir (atau Rumah /Akhir).
sumber
PowerShell menggunakan parser sendiri untuk perintah, jadi dalam arti itu adalah shell yang berbeda dari cmd.exe, meskipun mereka berbagi terminal yang sama (jendela gui).
Karena perbedaan itu, PowerShell memungkinkan Anda untuk mengganti fungsionalitas penyelesaian-tab dengan fungsi Anda sendiri. Saya belum punya waktu untuk mengacaukan ini sendiri, tetapi Anda pada dasarnya menimpa fungsi
tabexpansion
di profil Anda, dengan cara yang sama Anda dapat menimpaprompt
fungsi tersebut.Saya menemukan artikel ini , oleh Lee Holmes (penulis Windows PowerShell Cookbook yang mengagumkan ), yang menjelaskan penggantian tabexpansion yang sangat mirip dengan yang Anda cari. Anda mungkin dapat men-tweak untuk memberikan apa yang Anda inginkan.
sumber