last updated:2021/06/03

←前へ 次へ→ 機能別Q&A 質問番号順Q&A


[HMM0082A]

●カーソルのある行の内容を文字列型変数に取り込む方法

Q.
カーソルのある行の内容を、文字列型変数に取り込む方法はありませんか?

A.

方法は複数あります。

  1. 行選択を行い、選択範囲を取り込む

    selectline;
    $line = gettext(seltopx, seltopy, selendx, selendy);
    message $line;
  2. gettext2関数と、キーワードを組み合わせて取り込む

    $line = gettext2(0,lineno,linelen2, lineno);
    message $line;
[解説]

(1)のマクロは、行選択を行い、選択範囲の文字列を取り込んでいます。行選択の副作用でカーソルがマクロ実行前後で、違う位置に移動してしまう場合があります。

(2)のマクロは

  • lineno キーワード
  • linelen2 キーワード

を使用し、範囲選択なしで取り込んでいます。

行の先頭は、"0"と決まっているので直接記述し、行の長さは linelen2 キーワード、行数は、lineno キーワード を使い範囲を求め取得しています。

結果は同じですが、カーソルが移動する/しないの違いがあります。

[補足]
(2)は、gettext関数でも問題ないように見えますが、折り返しがある場合や、タブコードがある場合、 gettext関数では正常に内容を(簡単には)取得できません。

←前へ 次へ→ 機能別Q&A 質問番号順Q&A