diff --git a/README.md b/README.md index b4925382..2a63b7da 100644 --- a/README.md +++ b/README.md @@ -157,6 +157,7 @@ using matched rule and run it. Rules enabled by default: * `brew_unknown_command` – fixes wrong brew commands, for example `brew docto/brew doctor`; * `cd_parent` – changes `cd..` to `cd ..`; * `cp_omitting_directory` – adds `-a` when you `cp` directory; +* `fix_alt_space` – replaces Alt+Space with Space character; * `git_no_command` – fixes wrong git commands like `git brnch`; * `git_push` – adds `--set-upstream origin $branch` to previous failed `git push`; * `has_exists_script` – prepends `./` when script/binary exists; diff --git a/tests/rules/test_fix_alt_space.py b/tests/rules/test_fix_alt_space.py new file mode 100644 index 00000000..2d66e08f --- /dev/null +++ b/tests/rules/test_fix_alt_space.py @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- + + +from thefuck.types import Command +from thefuck.rules.fix_alt_space import match, get_new_command + + +def test_match(): + """ The character before 'grep' is Alt+Space, which happens frequently on the Mac when typing + the pipe character (Alt+7), and holding the Alt key pressed for longer than necessary. """ + assert match(Command(u'ps -ef | grep foo', '', u'-bash:  grep: command not found'), None) + assert not match(Command('ps -ef | grep foo', '', ''), None) + assert not match(Command('', '', ''), None) + + +def test_get_new_command(): + """ Replace the Alt+Space character by a simple space """ + assert get_new_command(Command(u'ps -ef | grep foo', '', ''), None) == 'ps -ef | grep foo' diff --git a/thefuck/rules/fix_alt_space.py b/thefuck/rules/fix_alt_space.py new file mode 100644 index 00000000..3c74ab31 --- /dev/null +++ b/thefuck/rules/fix_alt_space.py @@ -0,0 +1,15 @@ +# -*- encoding: utf-8 -*- + +import re +from thefuck.utils import sudo_support + + +@sudo_support +def match(command, settings): + return ('command not found' in command.stderr.lower() + and u' ' in command.script) + + +@sudo_support +def get_new_command(command, settings): + return re.sub(u' ', ' ', command.script)