特定の文字だけインデントを解除したいNo.35856
h60 さん 17/06/26 10:49
 
このたび物書き用に購入させていただきました。
非常に軽快で気に入っております。
表題の件ですが、例えばインデントを設定している場合、
かぎ括弧の時だけはインデントを解除して字下げしないようにする
設定などはございますでしょうか?

既出かもしれませんが、教えていただけると幸いです。
よろしくお願いいたします。


[ ]
RE:35856 特定の文字だけインデントを解除No.35857
秀丸担当 さん 17/06/26 12:45
 

インデントとは、自動インデントのことかと思います。
[その他]→[ファイルタイプ別の設定]→[体裁]→[インデント]に「自動インデン
ト」と「全角空白もインデント」があって、この2つをONにしていて、現在行の
行頭に全角空白があれば、改行したときに全角空白があらかじめ入力された状態
になる機能を使われているということだと思います。

その状態で、以下のような体裁の文章を書く場合のことでしょうか。
----------------------
 最初の行。
 2行目。インデントする。
「鍵括弧はインデントしない」
----------------------

2行目で改行したときには、3行目には全角空白が入ることになります。
秀丸エディタのの自動インデントの機能としては、鍵括弧を入力したらインデン
トが無くなる(全角空白が削除されう)といった動作となるような設定はありま
せん。

やるとしたら、少し難しいやり方になりますが、マクロを使う方法が考えられま
す。
例えば、以下のようなテキストを、test.macというファイル名でマクロファイル
用のフォルダに保存します。

if(gettext2(0,lineno,4,lineno)==" 「"){
  #c=column;
  moveto2 0,lineno;
  delete;
  moveto2 #c-2,lineno;
}

マクロファイル用のフォルダは、[その他]→[動作環境]→[環境]であらかじめわ
かりやすい場所を指定されることをお勧めします。
目的の行にカーソルがある状態で、[マクロ]→[マクロ実行]でtest.macを選んで
実行できます。
このマクロは、行頭に全角空白と鍵括弧があれば削除するというマクロです。

[マクロ]→[マクロ登録]で登録をしておくとキー割り当てができます。
マクロは一般的には手動でキーを押して実行するということになります。

さらに高度な方法では、[マクロ]→[マクロ登録]の「自動起動」で「編集後タイ
マー」にマクロを指定しておくと、編集のたびに実行されて、自動的に処理され
ているかのようにすることができます。
自動起動マクロは十分な注意が必要で、もし設定される場合はマクロが確かに思
い通りに動いているか確認された後にすることをお勧めします。


自動インデント以外には、[その他]→[ファイルタイプ別の設定]→[体裁]→[イ
ンデント]に「折り返し行のインデント」がありますが、これのことだとしたら
また別の話になります。

[ ]
RE:35857 特定の文字だけインデントを解除No.35858
h60 さん 17/06/26 14:06
 
お返事ありがとうございます。
ただ、ご指示の通りマクロを書いて試してみたのですが、
実行されません。
ご指摘の通り自動インデントで、「自動インデン
ト」と「全角空白もインデント」をONにはしておりました。
ご指示にありました文章を書き、空白も確認しております。
マクロについて詳しくはないので、もしかしたら書き方が
間違っているのかもしれないのですがわからず・・。
大変申し訳ないのですが、何か解決方法はないものでしょうか・・?
何卒よろしくお願いいたします。



[ ]
RE:35858 特定の文字だけインデントを解除No.35859
秀丸担当 さん 17/06/26 15:55
 

マクロの実行手順そのものがうまくいっていないのか、それとも実行した段階で
うまくいっていないのか、こちらからはわからないので、どこでうまくいってい
ないのか試していただくしかないと思います。
マクロは、test.macの内容を以下のようにすると、メッセージボックスが出るだ
けのマクロになります。

message "a";

これでマクロを実行してみて、メッセージボックスが出るかどうかで確かにマク
ロが実行されているかが確認できると思います。

また、前のコメントで書いたマクロは、行頭に全角空白と鍵括弧がある場合に全
角空白を削除するマクロです。
以下のようになっているとき、3行目にカーソルがあるときに実行します。
----------------------
 最初の行。
 2行目。インデントする。
 「鍵括弧はインデントしない」
----------------------
1行目や2行目にカーソルがある状態で実行してもマクロが実行されても変化は
起きないです。

あと、空白が確かに全角空白であるかを見た目でわかるようにするといいと思い
ます。
[その他]→[ファイルタイプ別の設定]→[デザイン]で「全角空白」のチェックボ
ックスをONにして、四角い点線で表示されるようにしておくと、全角1つか半角
2つかが見た目でわかるようになります。

[ ]
RE:35859 特定の文字だけインデントを解除No.35860
h60 さん 17/06/27 10:13
 
お返事ありがとうございます。

>マクロは、test.macの内容を以下のようにすると、メッセージボックスが出るだけ
>のマクロになります。

こちら、試してみたところ、メッセージボックスが出ましたので実行されているよう
です。

>あと、空白が確かに全角空白であるかを見た目でわかるようにするといいと思います。

基本的にかぎ括弧のついた行にしか試しておりませんでしたが、上記を試してみたと
ころ、タブでの空白になっていることがわかりました。

ただ、すべて全角空白に直し、マクロを実行してもやはり削除はされません。

とりあえず検索で「を検索し、F3で下候補を検索しながらbackspace
で全て削除したのですが、マクロで実行できると効率が上がりそうです。

すみませんが何卒よろしくお願いいたします。



[ ]
RE:35860 特定の文字だけインデントを解除No.35861
でるもんたいいじま さん 17/06/27 11:43
 
マクロユーザーの「でるもんた・いいじま」です。

> お返事ありがとうございます。
>
> > マクロは、test.macの内容を以下のようにすると、
> > メッセージボックスが出るだけのマクロになります。
>
> こちら、試してみたところ、メッセージボックスが出ましたので
> 実行されているようです。

基本的なところで何かスレ違いが起きているように思います。
実際にどんなメッセージが出てくるのかの投稿もないですし。

なので、順を追って下記を確認していってください。

まず、マクロ自体のファイル名のフルパス。
C:\Users\(ユーザ名)\Documents\… といったフルパスになっているはずなので、
(ユーザ名) の部分は一切隠さずに、もういちど投げてみてください。

次に、「マクロの全文」をここに転載してください。、

その次ですが、マクロを実行したらどんな結果になるのか、書いてください。
(エラーメッセージが出るならその全文を書き写す。
カーソルが移動するだけならその旨を書く。
カーソル移動すらないようならやはりそれも書く。)

それと、多分関係ないと思いますが、念のため秀丸のバージョンを書いてください。

ではでは。

[ ]
RE:35861 特定の文字だけインデントを解除No.35862
秀丸担当 さん 17/06/27 12:33
 

とりあえずマクロは実行できているとのことで、実行の段階に何かが違うという
ことになると思います。

何か文章では伝わっていないことがあるのだと思います。
インデントは行頭の全角空白1つのつもりで書いていましたが、タブ文字とは思
っていなかったので、そうだとしたら全角空白2つとか4つにされたということ
でしょうか。
前のコメントにあるサンプルテキストではできると思うので、それと実際のテキ
ストの違いなどを見比べてみると何かわかると思います。

自動インデントのような振る舞いではなく、一度にまとめてやるとしたら、置換
でやることができます。
例えば、[検索(S)]→[置換(R)...]で置換ダイアログを出して、以下のようにし
ます。

検索文字列:^ +「
置換文字列:「
「正規表現」だけをON
これで全置換をすると、一度に鍵括弧の前の行頭の削除ができます。
これをマクロにすると以下のようになります。

setcompatiblemode 0x20000;
replaceallfast "^ +「", "「",regular;


ただ行頭に全角空白と鍵括弧があるという想定が何か伝わっていない気がするの
で、何か食い違いがあるとしたら、これでいいのかはわからないです。

具体的なテキストをここに書いてもらうか、メールで送っていただけると確実で
す。
メールで送っていただける場合、差支えなければ[その他]→[設定内容の保存/復
元]で設定をファイルに保存したものもあると助かります。
メールの宛先は"taki@maruo.co.jp"になります。

[ ]
RE:35862 特定の文字だけインデントを解除No.35863
h60 さん 17/06/27 16:49
 
お返事ありがとうございます。

解決いたしました!

一番最初に書いていただいたマクロをコピペして使用したみたのですが
うまく実行されず、次にマクロを見ながら自分で書いてみました。こちらも実行され
なかったのですが、今回もう一度一番最初に書いていただいたマクロをコピペしてみ
ると実行されました。

おそらく何らかのケアレスミスだったのだと思います。
最初はたぶん、行頭がタブ入力だったので実行されず、自分が書いたマクロは全角空
白でも実行されなかったので、記述がおかしかったのだと思います。

このたびは丁寧なご対応、本当に助かりました。
また、こちらの不手際でお時間とらせてしまい誠に申し訳ございません。

ありがとうございました!


[ ]