Initial Colemak Setup

This commit is contained in:
js0ny 2024-10-30 15:54:45 +00:00
parent ffcb1082b4
commit 0f456019d2
15 changed files with 611 additions and 210 deletions

25
powershell/keymap.ps1 Normal file
View file

@ -0,0 +1,25 @@
# aka PSReadLine
# PSReadLineOptions
Set-PSReadLineOption -EditMode vi # Vi Keybindings
Set-PSReadLineOption -PredictionViewStyle ListView
Set-PSReadLineOption -PredictionSource HistoryAndPlugin
Set-PSReadLineOption -ContinuationPrompt "`e[36m CR > "
# PSReadLineKeyHandlers
## Colemak hnei
Set-PSReadLineKeyHandler -Chord "n" -Function NextHistory -ViMode Command
Set-PSReadLineKeyHandler -Chord "e" -Function PreviousHistory -ViMode Command
Set-PSReadLineKeyHandler -Chord "i" -Function ViForwardChar -ViMode Command
## Similar position to [i] in QWERTY
Set-PSReadLineKeyHandler -Chord "l" -Function ViInsertMode -ViMode Command
Set-PSReadlineKeyHandler -Chord "L" -Function ViInsertAtBegining -ViMode Command
## Ne{[k]s}t
Set-PSReadLineKeyHandler -Chord "k" -Function RepeatSearch -ViMode Command
Set-PSReadLineKeyHandler -Chord "K" -Function RepeatSearchBackward -ViMode Command
## [j]ump
Set-PSReadLineKeyHandler -Chord "j" -Function NextWordEnd -ViMode Command
Set-PSReadLineKeyHandler -Chord "J" -Function ViEndOfGlob -ViMode Command
## Use N to Join
Set-PSReadLineKeyHandler -Chord "N" -Function ViJoinLines -ViMode Command
Set-PSReadLineKeyHandler -Chord "Control+Oem4" -Function ViCommandMode -ViMode Insert # ^[ to Escape
Set-PSReadLineKeyHandler -Chord "Ctrl+a" -Function BeginningOfLine
Set-PSReadLineKeyHandler -Chord "Ctrl+e" -Function EndOfLine

9
powershell/modules.ps1 Normal file
View file

@ -0,0 +1,9 @@
Import-Module -Name Terminal-Icons
Import-Module -Name CompletionPredictor
if ($IsWindows) {
# Chocolatey
$ChocolateyProfile = "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"
if (Test-Path($ChocolateyProfile)) { Import-Module "$ChocolateyProfile" }
# WinGet
Import-Module -Name Microsoft.WinGet.CommandNotFound #f45873b3-b655-43a6-b217-97c00aa0db58
}

86
powershell/prompt.ps1 Normal file
View file

@ -0,0 +1,86 @@
$promptTime = $true
# $promptWeather = $false
function prompt {
$prompt = "`e[35m"
# Time
if ($promptTime) {
$promptTime = Get-Date -Format HH:mm
$prompt += "`[$promptTime]"
}
# UserInfo
$prompt += " $Env:Username @ $Env:Userdomain"
# Directory
$promptCurrentDirectory = $(PWD).Path
$promptCurrentDirectory = $promptCurrentDirectory.Replace("$HOME", "~")
$prompt += "`e[0m in `e[33m$promptCurrentDirectory "
# Git
if ($(git rev-parse --is-inside-work-tree 2> $null) -eq "true") {
$prompt += "`e[32m`u{e702} $(git branch --show-current)"
}
# Conda
if ( $Env:CONDA_PROMPT_MODIFIER ) {
$promptConda = $Env:CONDA_PROMPT_MODIFIER.Replace("`(","").Replace(")","")
$pythonVersion = $(python --version).Split(" ")[1]
$prompt += " `e[33m`u{e73c} $promptConda $pythonVersion"
}
# Programming Language (by Get-ChildItem)
## Python
if (Test-Path -Path "$PWD\pyproject.toml") {
$pythonVersion = $(python --version).Split(" ")[1]
$prompt += " `e[33m`u{e73c} $pythonVersion"
}
## Node.js
if (Test-Path -Path "$PWD\package.json") {
$nodeVersion = $(node --version)
$prompt += " `e[32m`u{e3a0} $nodeVersion"
# Locked
if (Test-Path -Path "$PWD\yarn.lock" || Test-Path -Path "$PWD\package-lock.json") {
$prompt += "`u{f023}"
}
}
## .NET
### C Sharp
if (Test-Path -Path "$PWD\*.csproj") {
$dotnetVersion = $(dotnet --version)
$prompt += " `e[34m`u{e648} $dotnetVersion"
}
### F Sharp
if (Test-Path -Path "$PWD\*.fsproj") {
$dotnetVersion = $(dotnet --version)
$prompt += " `e[35m`u{e65a} $dotnetVersion"
}
## Rust
if (Test-Path -Path "$PWD\Cargo.toml") {
$rustVersion = $(cargo --version).Split(" ")[1]
$prompt += " `e[31m`u{e7a8} $rustVersion"
}
## Java
if (Test-Path -Path "$PWD\pom.xml" || Test-Path -Path "$PWD\build.gradle") {
$javaVersion = $(java --version).Split(" ")[1]
$prompt += " `e[31m`u{e738} $javaVersion"
}
## Makefile
if (Test-Path -Path "$PWD\Makefile") {
$prompt += " `e[32m`u{e673}"
}
if (Test-Path -Path "$PWD\CMakeLists.txt") {
$prompt += " `e[32m `u{e61d}"
}
# Docker
if (Test-Path -Path "$PWD\Dockerfile" || Test-Path -Path "$PWD\docker-compose.yml") {
$prompt += " `e[33m`u{f21f}"
}
# Weather
# if ( $global:promptWeather ) {
# $prompt += $(Write-WeatherCurrent -City "Edinburgh" -Country "UK" -Unit "metric" -Inline -Apikey $Env:WEATHER_API_KEY)
# }
# Error on last command
## TODO: Seems does not work
if ($?) {
$prompt += "`n`e[32m PS > `e[0m"
} else {
$prompt += "`n`e[31m PS > `e[0m"
}
return $prompt
}

View file

@ -1,32 +1,16 @@
### PSReadLine ###
Set-PSReadLineOption -EditMode vi # Vi Keybindings
Set-PSReadLineOption -PredictionViewStyle ListView
Set-PSReadLineOption -PredictionSource HistoryAndPlugin
Set-PSReadLineOption -ContinuationPrompt "`e[36m CR > "
### Keybindings ###
Set-PSReadLineKeyHandler -Chord "Ctrl+Shift+f" -Function ForwardWord
Set-PSReadLineKeyHandler -Chord "Ctrl+Shift+b" -Function BackwardWord
Set-PSReadLineKeyHandler -Chord "Alt+f" -Function ForwardChar
Set-PSReadLineKeyHandler -Chord "Ctrl+b" -Function BackwardChar
Set-PSReadLineKeyHandler -Chord "Ctrl+p" -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Chord "Ctrl+n" -Function HistorySearchForward
Set-PSReadLineKeyHandler -Chord "Ctrl+a" -Function BeginningOfLine
Set-PSReadLineKeyHandler -Chord "Ctrl+e" -Function EndOfLine
### VARIABLES ###
$EDITOR = "code"
### Navigator ###
# Relative navigation #
# ${function:~} = { Set-Location -Path ~ } cd is better
${function:...} = { Set-Location -Path ..\.. }
${function:....} = { Set-Location -Path ..\..\.. }
${function:.....} = { Set-Location -Path ..\..\..\.. }
${function:......} = { Set-Location -Path ..\..\..\..\.. }
# Absolute navigation #
# Absolute navigation
${function:docs} = { Set-Location -Path ~/Documents }
${function:down} = { Set-Location -Path ~/Downloads }
${function:dt} = { Set-Location -Path ~/Desktop }
@ -37,25 +21,21 @@ ${function:doku} = { Set-Location -Path ~/doku && Get-ChildItem }
### Alias ###
# Shell Equivalents #
Set-Alias "touch" "New-Item"
${function:ll} = { Get-ChildItem -Force }
# Shell Configurations #
${function:shcfg} = { code $PROFILE }
Set-Alias "pwshcfg" "shcfg"
${function:reload} = { . $PROFILE }
${function:pulldots} = { Set-Location -Path $DOTFILES && git pull }
# Editors #
Set-Alias "v" "nvim"
Set-Alias "c" "code"
Set-Alias "gvi" "neovide"
# File Creation #
function mkcd { param ( [string] $dirname) mkdir $dirname && Set-Location $dirname }
function tc { param ( [string] $filename) New-Item $filename && code $filename }
function tv { param ( [string] $filename) New-Item $filename && nvim $filename }
@ -64,13 +44,12 @@ function cdls { param( [string] $dirname) Set-Location $dirname && Get-ChildItem
### Dev ###
# .NET #
${function:csi} = { dotnet repl --default-kernel csharp}
${function:fsi} = { dotnet repl --default-kernel fsharp}
# Python & Conda #
Set-Alias "py" "python"
Set-Alias "ipy" "ipython"
${function:pyact} = { conda activate $args[0] }
${function:pydact} = { conda deactivate }
${function:pylsenvs} = { conda env list }
@ -79,8 +58,3 @@ ${function:pyrmenv} = { conda remove --name $args[0] --all }
# C & C++ #
### Modules ###
Import-Module CompletionPredictor