Autocompleting ssh, rake, cap command parameters using PowerShell
I have mentioned in my previous posts that PowerShell has excellent and customizabme autocompletion support.
And some awesome plugins like powertab exist to take this functionality to another level.
Here is one easy way you can customize autocompletion easily by writing a couple of lines of code.
Open your PowerShell profile file (for help see here) and create a function with name "global:TabExpansion" in it.
This function basically overrides default autocompletion and sends your values to the prompt. For example for it to read your ssh files and display hosts in it the function would look something like this:
# customized tab expansion
function global:TabExpansion {
param($line, $lastWord)
if ($line -match 'ssh'){
return cat C:\Users\Gaurav\.ssh\config | Select-String '^Host ' | % { if($_.Line -match "^Host ($lastword\S*)" ){ $matches[1] }}
}
}
Here it is just parsing the config file and running it through a regular-expression and returning the results as an array. Here is what a typical ssh config file looks like:
Host blog
User username
HostName sitename.com
IdentityFile ~/.ssh/id_dsa
Host blog_2
User username
HostName sitename.com
IdentityFile ~/.ssh/id_dsa
Here is what the output looks like if I write “ssh ” and the press tab key twice:
Also this same function can easily be modded to autocomplete for ruby/rails commands like rake and cap.
Here is is my complete function:
# customized tab expansion
function global:TabExpansion {
param($line, $lastWord)
if ($line -match 'ssh'){
return cat C:\Users\Gaurav\.ssh\config | Select-String '^Host ' | % { if($_.Line -match "^Host ($lastword\S*)" ){ $matches[1] }}
}
elseif ($line -match 'rake'){
rake -T | % { if($_ -match "^rake ($lastword\S*)" ){ $matches[1] }}
}
elseif ($line -match 'cap'){
cap -T | % { if($_ -match "^cap ($lastword\S*)" ){ $matches[1] }}
}
}
No comments yet.
Leave a comment
Blogroll
Recent Posts
- Autocompleting ssh, rake, cap command parameters using PowerShell
- Using RubyAmf for creating a CRUD application in Rails
- Multiple ways to open PowerShell in the current Explorer window
- Context sensitive auto-completion using PowerShell, PowerTab and GIT
- Displaying GIT Branch on your PowerShell prompt
XBox Live
Songs I like
Categories
- adobe (4)
- amarok (1)
- C# (2)
- chat application (1)
- crud (2)
- cygwin (1)
- explorer (1)
- expression blend (1)
- flex (4)
- FOSS (2)
- free (1)
- GIT (3)
- ID3 (1)
- java (1)
- microsoft (3)
- mxml (2)
- nokia (1)
- open source (5)
- perl (1)
- powerpoint (2)
- powershell (3)
- rails (3)
- right click (1)
- ruby (9)
- ruby on rails (3)
- security (3)
- silverlight (4)
- smart playlist (1)
- socket (1)
- software (7)
- ssh (1)
- sudo (1)
- tabs (1)
- tomcat (1)
- user interface (6)
- vista (9)
- vista, security (2)
- visual studio 2008 (1)
- win32ole (1)
- windows (13)
- windows media player (1)
- wpf (1)
- xaml (4)
- XP (3)
