1

JavaScript 関数を記述せずにテキスト エディターを使用する (たとえば、この優れた回答は使用できません: Javascript で正規表現一致の n 番目のインスタンスを置き換える) 。

どうすればこのようなものを取得できますか (私が制御できない独自のコード構造)

map(key1, value1, key2, value2, key3, value3, key4, value4 ...)

そして、これに変換します

map(
  key1, value1,
  key2, value2,
  key3, value3,
  key4, value4 
  ...
)

私が見つけた1つのオプションは、この正規表現を使用して2番目のコンマごとに見つけることでした (([^,]*,){2})

次に、\1\n\t

しかし、私はそれを改善したいと思います:

1. 最初と最後の行をうまく処理できない

 map(key1, value1,
    key2, value2,
    key3, value3,
    key4, value4 ...)

2. 平面構造でのみ機能します

たとえば、これを変換する方法が思い浮かびません

map(key1, value1, key2, map(key3, value3, key4, value4 ...), key5, value5)

これに

map(
  key1,value1,
  key2,map(
    key3,value3,
    key4,value4 
  ),
  key5,value5    
)

正規表現を使用していますか、それとも方法はありますか?

4

2 に答える 2

3

エラン、やっと質問に のタグを付けてくれたvimね、いいね!^_^

vimはそれを少しフォーマットできます。私は小さな関数を書きました:

改行として使用したことに注意してください\r。うまくいかない場合は、に変更してください\n

function! ExpandMap()
    let s = line('.')
    exec 'silent s/(/(\r/g'
    let e = line('.')
    exec 'silent '.s.','.e.'s/),\=/\r&\r/g'
    let e = line('.')
    exec 'silent '.s.','.e.'s/,[^,]*\zs,\ze/,\r/g'
    let e = line('.')
    exec s.','.e.' normal =='
endfunction

.vimrc頻繁に使用する場合は、ファイルに入れることができます。また、入力して試してみることもできます:so %

次の方法で、その関数呼び出しのマップを作成できます。

`nnoremap <leader>r :call ExpandMap()<cr>`

このように、行を再フォーマットしたい場合は、mapカーソルをその行に移動し、Normalモード タイプ<leader>r(デフォルトは \)で移動します。

この機能は変更されます

map(k1, v1, k2,  map(k3, v3, k4, v4), k5, v5, k6, map(k7, v7,k8,v8,k9,v9),k10,v10,k11,v11)

の中へ

map(
        k1, v1,
        k2,  map(
            k3, v3,
            k4, v4
            ),
        k5, v5,
        k6, map(
            k7, v7,
            k8,v8,
            k9,v9
            ),
        k10,v10,
        k11,v11
)

ここで、それがどのように機能するかを示します。

  • ウィンドウを 2 つに分割し、関数のみを表示します
  • 関数の後にマッピングを作成しました
  • ネストされた 2 つのマップを作成します。また、行を短くするために、使用したk#のは ,v#

ここに画像の説明を入力

さて、いつnotepad ++をアンインストールしますか?^_^

于 2013-02-09T01:36:29.643 に答える
1

テキストの方向に "Down" を置き換える、非常に基本的な実装です。

探す:

([^(,)]+,[^(,)]+)

交換:

\n\t\1

これは機能しないことに注意してください...(これは何ですか?)。ネストの深さに関しては、特別なことは何も行いません。ネストの深さを追跡するには、正規表現を超える機能を備えたパーサーが必要になります。プログラミング言語の解析は、 HTML の解析と同じくらい難しいものです。

于 2013-02-08T21:21:01.080 に答える