できるだけホームローをキープするようにしています。
すべての括弧を入力すると、そこからかなり離れます。
私は Emacs を使っています。括弧自体は問題ありません。私はそれらに満足しています。そして、それらを自動的に入力するモードは好きではありません。
角かっこをかっこに、またはその逆に再マッピングすることを考えました。これは良い考えですか?他のみんなは何をしますか?
できるだけホームローをキープするようにしています。
すべての括弧を入力すると、そこからかなり離れます。
私は Emacs を使っています。括弧自体は問題ありません。私はそれらに満足しています。そして、それらを自動的に入力するモードは好きではありません。
角かっこをかっこに、またはその逆に再マッピングすることを考えました。これは良い考えですか?他のみんなは何をしますか?
多くの非 US キーボード レイアウトでは、角かっこや中かっこを入力するのは、かっこを入力するよりもさらに面倒です。ほとんどの言語でのプログラミングは非常に負担になります。幸運を考えてください。;)
私に関して言えば、[Super]-j と [Super]-k を介して括弧を入力できる、プログラマーが使いやすい非標準のキーボード レイアウトを使用しています。
I have foot pedals. LeftFoot = open paren, RightFoot = close paren.
Well, I don't, but I don't use Lisp. It doesn't seem like a bad idea, though.
Could you imagine a variation on Lisp that used indentation instead of parens? (taking a page from the Python spec)
ホームキーから指を離すと……
Emacs で再マッピングを試みましたが、新たな問題が発生します。ssh を介してターミナル ウィンドウで編集していて、スニペットをウィンドウに貼り付けたとします。次に、入力だけでなく、貼り付け時に括弧と括弧が交換されます。これを試す場合は、システムの下位レベル (xmodmap など) で再マップしてください。
(もちろん、他の明らかな問題は、再マッピングせずに他のコンピューターを使用することです。これも厄介でしたが、耐えられました。)
「…とても多くの括弧」
最初にしたことは、'(' キーをシーケンス '('+')'+right() にバインドすることでした。これにより、括弧が自動的に調整され、新しいコードを記述するときに入力する残りの半分が残ります。
また、1 つの括弧をナビゲートする便利な方法も必要です。つまり、C-] をシーケンス search(')')+right() にバインドします。ホーム ポジションから手を離す必要がないため、オーサリングが短くなりました。S-expr を完了するたびに C-] と入力するだけです。
次に行ったのは、既存の項目を現在のリストにプッシュするサブルーチンにキーをバインドすることでした... // がカーソル位置の場合、このコマンドは次のように変換されます。
(if (< //) (+ x 1)
(x)
(y))
に
(if (< (+ x 1) //)
(x)
(y))
1 つのアイテムを右から現在のリストに効果的にプッシュします。既存のコードを編集するのに非常に便利です。シーケンス '(', '<', CS-], Space, '2' は、既存の式に「2 未満の比較」を追加します。C-] と組み合わせると、既存の式から非常に迅速に新しい式を作成できます。
@jamesnvc、() を [] キーにバインドすることは考えていませんでした...試してみる必要があります、thx!
[] を () に xmodmap でリマップして気に入りました。[] を使用する言語でコードを書くことに慣れるのは少し奇妙でしたが、他の変更と同様に慣れます。Lisp でシフトなしの括弧を使用することは、他の言語でシフトなしのブラケットを使用しない場合よりも優れているため、うまくいきます。
とにかく、これが私の US キーボードに必要な xmodmap の呪文です。
!! swap () and []
keycode 18 = 9 bracketleft
keycode 19 = 0 bracketright
keycode 34 = parenleft braceleft
keycode 35 = parenright braceright
他のすべてのシフト番号オペレーターに到達するには、ホーム列から指を離さなければならないので、あまり考えたことはありませんでした。
そして、左括弧を入力すると、電気括弧が右になります。
ほとんどの場合、タイプするだけですが、関連する n 個の式を囲むために M-( および M-) を使用することがあります (特に、「ステージの後半」で LET バインディングを追加する場合)。
DrSchemeでは、括弧と角括弧のキーストロークがデフォルトで反転されています。また、2 つのうちのどちらを意味するかを魔法のように推測する機能も備えているため、シフト 9 に手を伸ばすことはめったにありません。
Quackには、DrScheme と同様の機能があります。
DivaScheme (私の編集者) は、まったく別のものです。括弧が邪魔にならないように、sexp レベルで編集します。
角かっこよりもかっこを使用する場合は、必ず再マップしてください。たとえば、左利きの人がマウス ボタンを交換する以上の問題を引き起こす可能性があるとは思えません。
コードを書いているときは、通常、コードを入力するよりも、コードを考えたり読んだりすることに多くの時間を費やします。過去に何度か Dvorak キーボード レイアウトに切り替えようとしましたが、思ったよりもずっと速く入力できるので、明らかなモチベーションがありません。プログラミング言語の構文も同様の問題です。キーボードを離れずにコードを入力できる限り (つまり、マウスを使用するのはよくありません)、私は満足しています。
capslock を "(" に再バインドし、エディターに ")" を自動挿入させます。
(これは、HTML など、括弧がたくさんある他の言語にも役立ちます...)
私はvim-sexpとvim-sexp-mappings-for-regular-people で<leader>u
Vim を使用してから、 new 内で通常モードにするようにマッピングしました(
。
map <leader>u i(
私は paredit と pair-mode パッケージを使用しますが、括弧をすばやく入力するために、5 ミリ秒の遅延で () の二重ピリオドを置き換えるために電気ドット アンド ダッシュを使用します (ゆっくり入力すると、2 つのドットが表示されます)。これはすばらしいパッケージです (個人的な好みで少しハックしました。Dvorak キーボードで入力するときに、ダッシュ キーをスラッシュに置き換えました (// は Lisp ではあまり一般的ではありません))。
括弧内の混乱を避けるために、'highlight-parentheses' という名前のパッケージをツール セットに追加します。一般的に、sexp グラブまたはテキスト ナビゲーションを最大限に効率化するために、vimpulse も使用します (私は Vim 中毒者です)。
また、(dvorak) キーボード レイアウトを (xmodmap 経由で) 変更して、括弧 ("[]") と括弧を切り替えましたparedit-mode
(これには実際に慣れるまでに時間がかかります)。