2

私は文字列のセットに対していくつかの操作を行うことがよくありますが、通常はNotepad++の正規表現でうまく機能します。昔、アクションを記録して同じ操作を実行できるツールを使用したことを覚えています。たとえば、この文字列があるとします。これは単なる例であることに注意してください。

First Name,Last Name,Social Security 

次のように変換したいと思います。

first_name("First Name"),last_name("Last Name"),social_security("Social Security")

テキストエディタを使用してこれを行う方法はありますか?私はこれらのタイプの要件を頻繁に持っています。似たようなものにvimを使ったことを覚えています。

4

3 に答える 3

2

これはvimマクロを使用して実行できますが、「単純な」置換の方が適しています

:s/\(^\|,\)\(\S\+\) \(\S\+\)\(,\|$\)/\l\2_\l\3("\2 \3")/g

または、次のように、内部からこれにawksed、何でも)を使用できます。vim

:%!awk 'BEGIN {FS=","} { print whatever you modified your columns }'

マクロの場合、qayt,Pi("ESCf,i")ESCF2SPACEr_l~0~q

しかし、これは部分的にしか機能しません...(最初の列の場合)基本的に:

  1. qaマクロをaレジスタに記録します
  2. yt,(私たちが行の最初の文字にいると仮定すると、これは最初の文字までヤンクします,
  3. Pヤンクされたテストを実際のカーソル位置(つまり、行の最初の文字)の直前に置きます。
  4. (カーソル位置を維持)i("ESC挿入("し、挿入モードを終了します
  5. f,i")ESC次のスペースを見つけて、") 前に挿入します
  6. F2SPACEr_2番目を後方に見つけ、次のspaceように置き換えます_
  7. l~0~q次の文字に移動し、大文字と小文字を小文字に変更してから、行の最初の文字に移動し、その場合も変更して、最後に記録マクロを終了します。

次に、を介して通常モードからマクロを実行します@a

Vimは非常に有能です。

于 2012-10-03T20:51:39.993 に答える
0

確かにvimはあなたがこの種のことをすることを可能にします。Vimマクロ機能を使用すると、エディター内で一連のアクションを記録および再生できます。私の経験によると、他のテキストエディタよりもはるかに強力です(vim自体の編集はコマンドのシーケンスに基づいているため)。ただし、vimに慣れていない場合は、vimの使用方法を学ぶのに時間がかかります。 。しかし、それは最終的に効率的なテキスト編集とコーディングにつながります。

vimを使用することにはもっと多くの利点があります。インターネット上にもそれらを説明する記事がたくさんあります。自分で決めることができるように、少しグーグルで回ることをお勧めします。

于 2012-10-03T21:02:33.660 に答える
0

また、Javaマルチプラットフォームの無料のオープンソースツールjEditを試してみることができます。

マクロの記録と編集を提供します。

マクロはBeanShellでダンプ/記述されます。これは、jEditがドキュメント化されたAPIのセットで拡張され、マクロを介して必要なことをすべて実現できるようにします。

jEditコミュニティで共有されている多くのマクロスクリプトもあります。

于 2012-10-05T20:33:04.550 に答える