[EMCAS] Emacs 시작 시 타이포 보완
6666 단어 ShellScriptaliasBashEmacstypo
개요
Emacs를 사용할 때 자주 명령을 잘못 잘못 버리므로 emacs의 타이포를 보완하기위한 쉘 스크립트를 만들었습니다.
EMCAS라는 단어는
라는 것이 유래입니다.
Github:
htps : // 기주 b. 코 m / 708 야마 구치 / 에 M 또는 S
설치
위의 github 리포지토리를 clone하여 스크립트 파일을 source하십시오.
git clone https://github.com/708yamaguchi/EMCAS.git
cd EMCAS
source emacs.aliases.bash
실행 예
EMCAS를 사용하여 치는 실수를 보간하는 모습입니다.
보간할 수 있는 단어의 예를 나타냅니다. 어떤 단어를 보간할 수 있는지는 소스 코드을 참조하십시오.
$ ./test.sh
emcas 0nw hoge -> emacs -nw hoge
eamcs -wn foo -nw -> emacs -nw foo -nw
ema -csw -f shell -> emacs -nw -f shell
ems -> emacs
emac s-nw fuga hoge -> emacs -nw fuga hoge
emacs fuga -nw hoge -> emacs fuga -nw hoge
emavs -f shell -nw -> emacs -f shell -nw
emcs hoge fuga -> emacs hoge fuga
emsc hoge s-nw fuga -> emacs hoge s-nw fuga
하고 있는 일
EMCAS 보간으로 수행하는 것은 크게 두 가지입니다. 아래에서 자세히 설명합니다.
git clone https://github.com/708yamaguchi/EMCAS.git
cd EMCAS
source emacs.aliases.bash
EMCAS를 사용하여 치는 실수를 보간하는 모습입니다.
보간할 수 있는 단어의 예를 나타냅니다. 어떤 단어를 보간할 수 있는지는 소스 코드을 참조하십시오.
$ ./test.sh
emcas 0nw hoge -> emacs -nw hoge
eamcs -wn foo -nw -> emacs -nw foo -nw
ema -csw -f shell -> emacs -nw -f shell
ems -> emacs
emac s-nw fuga hoge -> emacs -nw fuga hoge
emacs fuga -nw hoge -> emacs fuga -nw hoge
emavs -f shell -nw -> emacs -f shell -nw
emcs hoge fuga -> emacs hoge fuga
emsc hoge s-nw fuga -> emacs hoge s-nw fuga
하고 있는 일
EMCAS 보간으로 수행하는 것은 크게 두 가지입니다. 아래에서 자세히 설명합니다.
1. 타이포워드 리스트 작성
emacs -nw 커멘드를 emacs부와 -nw부로 나누어 생각해, 각각에 대해 치고 틀린 것 같은 단어 리스트(타이포워드 리스트)를 만듭니다.
소스 코드(emacs.aliases.bash) 안에서는, 다음과 같은 타이포워드 리스트를 만들고 있습니다.
EMCAS_ALIASES=(
eamcs
eamsc
ema
ems
emac
emacs
emasc
emavs
emcs
emsc
)
NW_OPTIONS=(
c-w
n-w
n0w
s-
s-n
s-nw
s-w
s-wn
w0n
0nw
0wn
0sw-
-csw
-nw
-s
-snw
-w
-wn
)
2. 타이포 대체 함수 호출
emacs의 치는 실수가 있었을 때, 즉 상기의
EMCAS_ALIASES
배열에 포함되는 커멘드가 실행되었을 때, 이하의 alias에 따라 자작의 emcas 함수를 호출합니다.for ((i = 0; i < ${#EMCAS_ALIASES[@]}; i++))
do
alias ${EMCAS_ALIASES[$i]}="emcas"
done
emcas 함수에서는, 제1 인수가 상기의
NW_OPTIONS
배열에 포함되어 있으면 -nw부의 타이포라고 판정해, emacs -nw로 보간합니다(아래의 elif절).그렇지 않은 경우는 -nw부의 타이포가 존재하지 않는다고 판정해, 인수를 그대로 emacs 커멘드에 건네줍니다.
function emcas(){
if [ $# -eq 0 ]; then
COMMAND="emacs"
elif echo "${NW_OPTIONS[@]}" | grep '\'$1 > /dev/null; then
COMMAND="emacs -nw ${@:2}"
else
COMMAND="emacs ${@:1}"
fi
# if EMCAS_ECHO is set, only print the command
if [ -v EMCAS_ECHO ]; then
echo $COMMAND
else
command $COMMAND
fi
}
문제점
EMCAS에서는 emacs 명령도 emcas에 alias하므로 예를 들어,
emacs s0nw
라고 쳤을 때, 사실은 s0nw라고 하는 텍스트를 열고 싶었다고 해도, s0nw는 -nw의 타이포라고 판단해
emacs -nw
를 실행합니다.
이것을 피하기 위해서, emcas 함수가 제1 인수의 타이포 밖에 체크하지 않는 것을 이용해,
emacs -nw s0nw
그렇다면이 명령은 그대로 실행되므로 s0nw 파일을 엽니 다.
Reference
이 문제에 관하여([EMCAS] Emacs 시작 시 타이포 보완), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/708yamaguchi/items/f62d2b65e6a0ef70f854
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
emacs s0nw
emacs -nw
emacs -nw s0nw
Reference
이 문제에 관하여([EMCAS] Emacs 시작 시 타이포 보완), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/708yamaguchi/items/f62d2b65e6a0ef70f854텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)