문제

나는 손가락을 가능한 한 홈으로 유지하려고 노력합니다.

모든 괄호를 입력하면 내가 그곳에서 멀어지게됩니다.

나는 EMAC를 사용합니다. 괄호 자체는 문제가되지 않습니다. 나는 그들에게 편안합니다. 그리고 나는 자동으로 그들을 입력하는 모드를 좋아하지 않습니다.

정사각형 브래킷을 괄호로 재입고하고 그 반대도 마찬가지입니다. 이것이 좋은 생각입니까? 다른 사람들은 무엇을합니까?

도움이 되었습니까?

해결책

나는 개인적으로 치명적인 콤보를 추천합니다 EMACS, 더러운 것 & paredit.elParedit을 사용하면 LISP 코드를 sexp 수준에서 유사하게 편집 할 수 있으므로 괄호가 거의 완전히 사라집니다. 간단한 단어 인 것처럼 sexps 주위를 움직일 수 있으며 심지어 몇 개의 키 스트로크로 돌연변이 할 수도 있습니다. 사소한 모드도 있습니다 붉은 색 Paredit과 함께 작동하며 더 많은 힘을 제공합니다.

간단한 예제를 고려하십시오 (| 커서의 위치) :

(foo bar (baz| quux) zot) + C-( => (foo (bar baz| quux) zot)
(foo (bar |baz) quux zot) + C-) => (foo (bar |baz quux) zot)

(foo (bar baz |quux) zot) + C-{ => (foo bar (baz |quux) zot)
(foo (bar |baz quux) zot) + C-} => (foo (bar |baz) quux zot)

나는 내 시대에 심각한 일반적인 LISP 프로그래밍을 해왔으며, Paredit은 나에게 귀중한 것으로 판명되었습니다. 도구 상자없이 사소한 LISP 코드를 작성하는 것을 생각조차 할 수 없습니다. 그리고 결국 그것은 그것이되어야하는 방식입니다. 당신은 당신의 괄호를 세거나 일치 할 필요가 없을 필요가 없습니다 ... 일단 당신이 마스터 한 후, 괄호는 눈 앞에서 사라집니다.

]를 ()로 다시 제거하면 도움이되지만 Paredit 사용을 시작한 후에는 많은 배려를 중단합니다.

자유롭게 사용하십시오 내 닷 에마에서 LISP 특정 부분.

다른 팁

많은 비 US 키보드 레이아웃을 사용하면 사각형 브래킷 또는 버팀대를 입력하는 것이 괄호를 입력하는 것보다 훨씬 번거롭습니다. ;)

나에 관해서는, 나는 [Super] -J 및 [Super] -K를 통해 괄호를 입력 할 수있는 프로그래머 친화적 인 비표준 키보드 레이아웃을 사용합니다.

나는 집 열쇠에서 손가락을 꺼냅니다 ....

발 페달이 있습니다. 왼쪽 발 = 오픈 파렌, 오른쪽 발 = 닫기 파렌.

글쎄, 나는 그렇지 않지만 LISP를 사용하지 않습니다. 그래도 나쁜 생각처럼 보이지 않습니다.

Parens 대신에 들여 쓰기를 사용한 LISP의 변형을 상상할 수 있습니까? (Python 사양에서 페이지 가져 오기)

나는 EMAC에서 재세포를 시도했지만 새로운 문제를 일으킨다. SSH를 통해 터미널 창에서 편집하고 있다고 말하면 스 니펫을 창에 붙여 넣는다. 그런 다음 파렌과 괄호가 타이핑뿐만 아니라 붙여 넣기에 교환됩니다. 이것을 시도하면 xmodmap과 같이 시스템의 낮은 레벨에서 다시 맵핑하십시오.

(물론, 다른 문제는 다른 컴퓨터를 다시 매핑하지 않고 사용하는 것입니다. 그것은 참을성이 있지만 성가신 일이었습니다.)

xmodmap을 사용하여 []로 ()을 다시 가져 왔습니다. []를 사용하는 언어로 코드를 작성하는 데 익숙해졌지만 어떤 변화와 마찬가지로 익숙해집니다. LISP에서 변속되지 않은 파렌을 사용하는 것은 다른 언어로 변속되지 않은 괄호가없는 것보다 더 좋습니다.

어쨌든, 여기 내 미국 키보드에 필요한 XmodMap Incantation이 있습니다.

!! swap () and []
keycode  18 = 9 bracketleft
keycode  19 = 0 bracketright
keycode  34 = parenleft braceleft
keycode  35 = parenright braceright

"... 너무 많은 기생충"

내가 한 첫 번째 일은 '('시퀀스의 키 '('+')'+right ()를 바인딩하는 것이 었습니다. 따라서 괄호 자동 균형을 유지하고 새 코드를 작성할 때 남은 반의 절반을 남겨 두었습니다.

또한 하나의 paren-bind c-]를 Sequence Search ( ')')+Right ()로 탐색하는 편리한 방법을 원합니다. S-EXPR을 완료 할 때마다 홈 위치에서 손을 잡을 필요가 없으므로 저작은 이제 더 짧아집니다.

다음으로 내가 한 일은 기존 항목을 현재 목록에 밀어 넣는 서브 루틴의 열쇠를 바인딩하는 것이 었습니다 ... 따라서 //가 커서 위치라면이 명령이 변환됩니다.

(if (< //) (+ x 1) 
    (x) 
  (y))

에게

(if (< (+ x 1) //)
    (x) 
  (y))

오른쪽에서 하나의 항목을 현재 목록으로 효과적으로 푸시 - 기존 코드를 편집하는 데 매우 유용합니다. 시퀀스 '(', '<', cs-], space, '2'는 기존 표현식과 "2 미만의 비교"를 추가합니다. C-와 결합하면 기존 표현에서 매우 빠르게 새로운 표현식을 만들 수 있습니다.

@jamesnvc, 나는 binding () to [] 키에 대해 생각하지 않았다 ... 나는 그것을 시도해야 할 것이다, thx!

다른 모든 시프트 햄버 연산자에게 다가 가기 위해 손가락을 홈으로 꺼내야합니다. 그래서 나는 그것에 대해 많이 생각하지 않았습니다.

그리고 왼쪽 부모를 입력하면 전기 부문이 당신에게 권리를줍니다.

정사각형 브래킷보다 괄호를 더 많이 사용하는 경우 꼭 필요한 경우 다시 맵핑하십시오. 예를 들어 마우스 버튼을 교환하는 것보다 어떻게 더 많은 문제를 일으킬 수 있는지 알 수 없습니다.

코드를 작성할 때 코드를 입력하는 것보다 코드를 생각하고 읽는 데 훨씬 더 많은 시간을 소비합니다. 나는 과거에 Dvorak 키보드 레이아웃으로 전환하기 위해 두 번 시도했지만 생각보다 훨씬 빨리 입력 할 수 있기 때문에 명백한 동기가 부족합니다. 프로그래밍 언어 구문은 비슷한 문제입니다. 키보드를 떠나지 않고 코드를 입력 할 수있는 한 (예 : 마우스를 사용하는 것이 나쁘다) 행복합니다.

대부분, 나는 단지 그것들을 입력하지만, 때때로, 나는 m- (및 m-)를 사용하여 (특히 무대에서 늦게 바인딩을 추가 할 때) 관련 표현을 둘러싸고 있습니다.

또한 (dvorak) 키보드 레이아웃 (xmodmap을 통해)을 변경하여 브래킷 ( [])와 Parens를 함께 전환했습니다. paredit-mode (실제로 익숙해집니다).

패배 및 쌍 모드 패키지를 사용하지만 빠른 괄호 타이핑의 경우 5ms 지연에서 A ()의 이중 기간을 대체하기 위해 전기 도트 앤 다쉬를 사용합니다 (천천히 입력하면 두 개의 점을 얻습니다). 그것은 훌륭한 패키지입니다 (개인적 선호도를 위해 약간 해킹했습니다. Dvorak 키보드로 입력하면서 대시 키를 슬래시로 교체했습니다 (// LISP에서는 일반적이지 않음).

Parens의 혼란을 피하기 위해 '하이라이트-파렌 스세스라는 패키지를 도구 세트에 추가하고 Sexp Grabbings 또는 텍스트 탐색의 최대 효율성을 위해 Vimpulse (VIM 중독자이므로)를 사용합니다.

drscheme 기본적으로 파렌과 사각형 버팀대에 대한 키 스트로크가 있습니다. 그것은 또한 당신이 의미하는 두 가지 중 하나를 마술처럼 추측하는 기능이 있으므로 Shift-9에 거의 도달하지 않습니다.

돌팔이 의사 DrScheme과 비슷한 기능이 있습니다.

divascheme (내 편집자)는 완전히 다른 것입니다. Sexp 수준에서 편집되어 파렌이 더 이상 방해가되지 않습니다.

Rebind Capslock to "("그리고 편집자 Autoinsert ")" ".

(이것은 또한 많은 괄호가있는 다른 언어 (예 : HTML)에 도움이됩니다 ...)

나는 vim을 사용합니다 vim-sexp 그리고 vim-sexp-mappings-for-Regular-people 그런 다음 매핑했습니다 <leader>u 새로운 내부의 정상 모드에 넣으려면 (.

map <leader>u i(

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top