2

次のようなコメントを変換するにはどうすればよいですか

{{{
abc
def
}}}

のようなコメントをマークダウンする

    abc
    def

(各行の先頭に4つのスペース)vimまたはsedで?

次のことを試しましたが、最初の行の後にスペースがありませんでした:

:%s/{{{\n\(\_.*\)\n}}}/    \1/
4

5 に答える 5

4

vimを使用:

:g/{{{/,/}}}/le 4|d|/}}}/d

説明:

  • :g/{{{/パターンを使用して各行でコマンドを実行します{{{
  • ,/}}}/le 4現在の行から末尾まで左揃え}}}
  • d現在の行を削除する
  • /}}}/d一致する行を検索して}}}削除します

インデント設定によっては、の>代わりに使用するle 4とソーターになる場合があります。

詳細については、次を参照してください。

:h :g
:h range
:h :left
:h :d
于 2012-11-20T15:37:05.680 に答える
3

で:

awk '/{{{/{l=1;next}/}}}/{l=0} l{print"    "$0}' file.txt

以下の不可解な:

awk '/{{{/{l=1;next} /}}}/{l=0} l==1{print "    " $0}' file.txt
于 2012-11-20T15:31:16.283 に答える
2

テキストにオブジェクトがないと仮定すると、以下\rの助けを借りて変換を行うことができますtr:

tr '\n' '\r' \
| sed 's/{{{/\r{{{/;
       s/}}}/}}}\r/;
       :w;
         s/\r{{{\r}}}//;
         s/{{{\r\([^\r]*\)\r\(.*\)}}}/    \1\r{{{\r\2}}}/;
       tw' \
| tr '\r' '\n'

コードセクションの前後に余分な行を追加したことに注意してください。そうしないと、マークダウンがコードを正しく認識しません。

于 2012-11-20T15:35:41.297 に答える
2
sed -i~ '/^{{{/,/^}}}/{/^{{{\|}}}/d;s;\(^.*$\);    \1;}' inFile
于 2012-11-20T15:25:12.450 に答える
1

これはうまくいくかもしれません(GNU sed):

sed '/^{{{/,/^}}}/{//d;s/^/    /}' file
于 2012-11-20T17:33:24.967 に答える