7

DelimitMate を使用すると、閉じ括弧が自動生成されます。括弧内の入力が終わったら、閉じ括弧の右側にすばやく移動するには、どのキー ストロークを押せばよいでしょうか? (今は手動で ESC を押してから 'a' を押す必要があります)

4

8 に答える 8

11

これらの自動終了プラグイン (Eclipse などの IDE に見られる元の機能の実装のようなもの) のアイデアは、終了文字を入力するだけでそれを乗り越えることです。プラグインはこの状況を検出し、文字を挿入する代わりに、既存の自動挿入されたものを飛び越える必要があります。

それがうまくいかない場合は、いくつかの代替プラグインが提供されています。Vim Tips Wikiにそれらのリストがあります。

于 2013-02-08T11:13:07.103 に答える
8

delimitMateを使用Shift-tabすると、現在の区切り文字からControl-G g飛び出し、ネストされた区切り文字から抜け出すことができます。何も再マップする必要はありません。

于 2013-12-01T00:34:58.370 に答える
5

自動ペアリングのフライ モードを試すことができます

例えば:

( hello| world )

press ) at |

( hello world )|

ジャンプが正しくない場合は、 を使用<M-b>してバック インサートを実行します。

例えば:

(hello| world()

press ) at |

(hello world()|

press <M-b>

(hello)| world()

リポジトリ: https://github.com/jiangmiao/auto-pairs

プラグイン: http://www.vim.org/scripts/script.php?script_id=3599

追加

let g:AutoPairsFlyMode=1 

フライモードをオンにする.vimrcへ

于 2013-02-19T08:58:53.840 に答える
4

カスタムマップを作成できます。モード中に閉じ括弧の右側に行きたいと思いますinsert.vimrcこのマッピングに追加するだけです:

:inoremap <F8> <ESC>f)a  

このようにしてinsert mode、括弧内に書き込みを終了するとF8、カーソル広告が閉じ括弧の右側に表示されます。必要に応じて、 の代わりに別のキーを使用して、マップされたキーを変更できますF8

ケントがコメントで言ったように、より一般的な解決策は次のようになります。

:inoremap <F8> <ESC>%%a  

これは、[および{括弧で機能します。

于 2013-02-08T11:44:18.350 に答える
1

これについては Atropo に同意します。DelimitMate を使い続けたい場合は、自動挿入された文字の反対側に到達するカスタム imap を作成することで、ワークフローの混乱を最小限に抑えることができます。

個人的には、文字がいつどこに自動挿入されるか、および自動挿入された文字をどのようにナビゲートできるかをより詳細に制御したいと考えています。UltiSnipsまたはSnipMateがそれを行います。多分彼らはあなたが探しているものです。

于 2013-02-08T13:54:25.063 に答える
0

新しい行に入力する場合は、Aどちらが行末にテキストを追加するかを試します。

于 2013-02-08T10:54:30.767 に答える
0

オートクローズをインストールしました。私が現在していることは(「私」はカーソルです)

- (xxxxI)
- ( xxxxI )
- ( xxxxIxx )
- text (xxxxI) other text
- text ( xxxxI ) other text
- text ( xxxxIxx ) other text

マッピングを作成するだけ<esc>%%aで、上記の場合、カーソルが移動します(...)I..whatever

引用符では機能しません。

于 2013-02-08T11:18:30.080 に答える
0

パーティーには少し遅れましたが、カスタム マッピングなしで簡単に実行できることに注意してください。挿入モードでは、<C-O>(デフォルトのマッピング) を押すと、単一の通常モード コマンドを入力できる「ワン ショット」通常モードに入ることができます。

あなたの質問に答えるために、あなたができることは<C-O>a.

于 2014-12-15T19:33:04.533 に答える