0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人用SASIDE 全コマンド・全キーマップ・全オプション(リファレンス編)

0
Posted at

導入編で入れた「SASIDE」の網羅的なリファレンスです。
実際の使い方の流れは使い方編を参照してください。


1. キーマップ一覧

g:saside_no_default_maps = 1 で既定割当を全停止し、<Plug> で個別に割当可。
Leader は既定の \

ノーマルモード(ファンクションキー)

キー 機能 対応コマンド
F2 Project Explorer トグル :SasExplorer
F3 Navigator トグル :SasNav
F4 Outline トグル :SasOutline
F5 保存してSAS実行 :SasRun
F6 ログペイン トグル
F7 .lst 表示 :SasLst
F8 ERROR+WARNING を quickfix へ :SasQuickfix
F9 コード整形 :SasFormat
F10 TODO/FIXME/BUG 一覧 :SasTodo
F11 貼り付けモード切替(vimrc設定)
F12 IDE一括レイアウト :SasIde

ビジュアルモード

キー 機能
F5 選択範囲だけ実行
Tab / Shift+Tab インデント / 逆インデント(選択維持)
Ctrl+/ 選択行を一括コメント化・解除
Alt+j / Alt+k 選択行を下/上へ移動
\d 選択行を複製

Leader系(ノーマルモード)

キー 機能 対応コマンド
\rc 構文チェック実行(obs=0) :SasCheck
\rb カーソル位置のブロックだけ実行 :SasRunBlock
\lr 危険NOTE抽出 :SasLogRisk
\sg プロジェクト横断検索 :SasGrep
\sd データセット使用箇所検索 :SasFindDs
\sm マクロ定義/呼び出し検索 :SasFindMacro
\bb 現在行をブックマーク :SasBookmark
\bl ブックマーク一覧 :SasBookmarks
\d 行複製

挿入モード

キー 機能
Tab 語中→補完ポップアップ / ポップアップ中→次候補
Shift+Tab ポップアップ中→前候補
Ctrl+Space 補完を明示起動
Enter ポップアップ中→候補確定 / 空括弧内→インデント付き展開
Ctrl+j スニペット展開 / 次のプレースホルダへ
( [ { " ' 対応する閉じ側を自動挿入
Backspace 空ペア () の内側→両方削除
Alt+j / Alt+k 行を下/上へ移動

SASバッファ内(ノーマル)

キー 機能
]] / [[ 次 / 前の DATA・PROC・%MACRO へジャンプ
% DO↔END、%DO↔%END、%MACRO↔%MEND、DATA/PROC↔RUN/QUIT 対応ジャンプ
K カーソル下のSAS関数/PROCの辞書ヘルプ
Ctrl+/ 行コメントのトグル
za / zR / zM 折り畳み トグル / 全展開 / 全折畳

特殊バッファ内

Explorer(F2)

キー 操作
Enter / o ファイルを開く / ディレクトリ展開・折畳
a / A 新規ファイル / 新規ディレクトリ
D 削除(確認あり。ディレクトリは再帰)
r / m / c リネーム / 移動 / コピー
u / C ルートを親へ / カーソル下をルートに
R / q 再読込 / 閉じる

Navigator(F3)

キー 操作
Enter 該当行へジャンプ
1 / 2 / 3 / 4 Navigator / Outline / Dataset / Macro 表示切替
r / q 手動更新 / 閉じる

ログバッファ

キー 操作
]e / [e 次 / 前の ERROR
]w / [w 次 / 前の WARNING
q 閉じる

2. コマンド一覧

実行

コマンド 機能
:SasRun [file] 保存してSAS実行(F5)
:{range}SasRunSelection 選択範囲だけ実行(ビジュアルF5)
:SasRunBlock カーソル位置のDATA/PROCブロックだけ実行(\rb
:SasCheck obs=0 構文チェック実行\rc
:SasRunTerm [file] 端末ペイン内で実行(+terminal 環境)
:SasAbort 実行中ジョブの停止

ログ

コマンド 機能
:SasLog [file] ログを下ペインに表示
:SasLst [file] .lst を下ペインに表示(F7)
:SasQuickfix ERROR+WARNING を quickfix へ(F8)
:SasLogErrors ERROR のみ抽出
:SasLogWarnings WARNING のみ抽出
:SasLogNotes NOTE のみ抽出
:SasLogRisk [file] 危険NOTE を理由付きで抽出\lr

ビュー

コマンド 機能
:SasExplorer 左ペイン: ファイルツリー(F2)
:SasNav 右ペイン: Navigator(F3)
:SasOutline 右ペイン: Outline(F4)
:SasDatasets 右ペイン: Dataset Browser
:SasMacros 右ペイン: Macro Browser
:SasIde IDE一括レイアウト(F12)

編集支援

コマンド 機能
:SasFormat 再インデント + 空白整理(F9)
:SasNew {kind} テンプレート挿入(data sql sort means freq macro header
:SasHelp [word] 辞書ヘルプ(K 相当)
:AutoPairsToggle 括弧自動補完のON/OFF

検索・記録

コマンド 機能
:SasGrep {pat} プロジェクト横断検索(\sg
:SasFindDs [name] データセット使用箇所検索(\sd
:SasFindMacro [name] マクロ定義/呼び出し検索(\sm
:SasTodo TODO/FIXME/BUG 一覧(F10)
:SasBookmark [name] 現在行をブックマーク(\bb
:SasBookmarks ブックマーク一覧(\bl
:SasBookmarkClear ブックマーク全削除
:SasSessionSave [name] セッション保存
:SasSessionLoad [name] セッション復元

デバッグ用

コマンド 機能
:SasBlockInfo カーソル行のブロック情報を表示
:SasIndex コードインデックス全体をダンプ

3. オプション一覧

~/.vimrclet g:名前 = 値 で設定します。

実行系

オプション 既定 意味
g:saside_sas_cmd 'sas' SAS実行コマンド(フルパス可)
g:saside_sas_args [] 全実行に付ける追加引数(例 ['-work','/tmp']
g:saside_check_args ['-obs','0','-noreplace'] :SasCheck の引数
g:saside_run_preamble 1 部分実行時に前方のLIBNAME/OPTIONS/%LETを自動付与

ログ系

オプション 既定 意味
g:saside_log_height 10 ログペインの高さ
g:saside_log_risk_patterns [] 危険NOTEパターンの追加

危険NOTEパターンの追加例:

let g:saside_log_risk_patterns = [
      \ {'pat': 'ORACLE.*disconnect', 'desc': 'DB切断(要確認)'},
      \ {'pat': '独自の警告文言',       'desc': '説明文'},
      \ ]

解析系

オプション 既定 意味
g:saside_index_maxlines 20000 リアルタイム解析の上限行数
g:saside_debounce_ms 300 解析デバウンス(ms)
g:saside_txt_detect 1 .txt のSAS自動判定
g:saside_txt_threshold 3 判定に必要なSAS特徴行数

画面系

オプション 既定 意味
g:saside_explorer_width 28 左ペイン幅
g:saside_navigator_width 34 右ペイン幅
g:saside_nav_stay 0 ジャンプ後もNavigatorに留まる

編集系

オプション 既定 意味
g:saside_format_upcase 0 整形時に予約語を大文字化
g:autopairs_enabled 1 括弧・クオート自動補完
g:ide_keymaps_enabled 1 Tab補完・Ctrl+/・Alt+jk等

その他

オプション 既定 意味
g:saside_project_root 自動 プロジェクトルート固定
g:saside_state_dir ~/.vim/.state 状態保存先
g:saside_session_auto 0 終了時に自動セッション保存
g:saside_no_default_maps 0 既定キー割当を全無効化

4. 危険NOTE 検出パターン一覧

:SasLogRisk\lr)が検出する既定パターンです。
いずれもERRORにならずに処理が続行し、誤った結果を生みうるものです。

ログ中のパターン 何が起きているか
uninitialized 変数が未初期化(変数名のタイプミス・定義漏れ)
Invalid numeric/character data 型変換に失敗し欠損値になっている
MERGE statement has more than one data set with repeats of BY values MERGEでBY値が重複(意図しない結合・件数増加)
Division by zero ゼロ除算(結果が欠損値)
W.D format was too small 桁あふれ(表示が丸められ・欠けている)
Character values have been converted to numeric 文字→数値の暗黙変換
Numeric values have been converted to character 数値→文字の暗黙変換
Missing values were generated 演算の結果として欠損値が発生
Mathematical operations could not be performed 数学演算を実行できず欠損値が発生
has 0 observations 出力が0件(抽出・結合条件の誤りの可能性)
SAS went to a new line when INPUT statement reached past the end of a line INPUTが行をまたいだ(読み込み位置のズレ)
LOST CARD 入力データの欠落
Multiple lengths were specified for the variable 変数長の不一致(文字列切り捨ての恐れ)
Truncated record レコードが切り捨てられた

5. スニペット一覧(Ctrl+j)

定義ファイル: ~/.vim/dict/snippets.txt(追記して自作可能)

キーワード 展開内容
datastep DATAステップ骨格(data / set / run)
sql PROC SQL(create table … select … from)
sortds PROC SORT(by / out=)
meansds PROC MEANS(class / var)
freqds PROC FREQ(tables)
macrodef %macro%mend
doloop DOループ
selwhen SELECT-WHEN-OTHERWISE
importcsv PROC IMPORT(CSV取込)
exportcsv PROC EXPORT(CSV出力)

テンプレート版(:SasNew {kind}): data sql sort means freq
macro header(プログラムヘッダコメント)


6. 補完の候補源

入力の先頭 候補源 メニュー表示
& このファイルで定義済みのマクロ変数(%let / %macro引数 / call symput / into : [mvar]
% マクロ構文辞書 + このファイルの %macro 定義(引数付き) [macro] [user]
その他 SASステートメント [stmt]
SAS関数辞書(説明付き) [func]
PROC名辞書 [proc]
ODS / FORMAT / システムオプション辞書 [ods] [fmt] [opt]
このファイルのデータセット名 [ds]
バッファ内の既出語 [buf]

辞書ファイルは ~/.vim/dict/ にあり、語<TAB>説明 形式で自由に追記できます。

  • sas_functions.dict / sas_procs.dict / sas_ods.dict
  • sas_formats.dict / sas_options.dict / sas_macros.dict

7. ファイル構成

~/.vim/
├── plugin/     saside.vim(IDE本体) / ide.vim(補完・IDEキー) /
│               autopairs.vim(括弧補完)
├── autoload/   saside/ 21モジュール
│               (parser=解析中核, run, log, layout, explorer,
│                 navigator, complete, snippet, format, search, …)
├── syntax/     sas.vim / saslog.vim / saslst.vim / syntax.vim(配線)
├── ftplugin/   sas.vim / saslog.vim
├── ftdetect/   sas.vim(.sas/.txt/.log/.lst判定)
├── indent/     sas.vim
├── colors/     sasdark.vim
├── dict/       6種の辞書 + snippets.txt
├── doc/        saside.txt(:help saside)
├── filetype.vim ftplugin.vim indent.vim   ← $VIMRUNTIME欠損の補完配線
└── .state/     ブックマーク・セッションの永続化(自動生成)

8. 設計の要点

単一パーサ・複数ビュー。 SASコードの解析器は autoload/saside/parser.vim
ただ一つです。DATA/PROC/%MACRO・入出力データセット・マクロ変数を1パスで抽出した
「コードインデックス」を、Navigator・補完・ステータスライン・部分実行のすべてが
共有します。解析結果は b:changedtick でキャッシュされ、編集時は300msデバウンスで
更新。2万行超のファイルは自動でリアルタイム解析を停止します。

完全遅延ロード。 起動時に読まれるのは plugin/saside.vim(コマンドとキーの
登録のみ)だけで、各機能は初回使用時に autoload されます。

イベント駆動。 モジュール間は User autocmd ベースの pub/sub で疎結合に
連携します。saside#event#On('RunFinished', 関数) でユーザー拡張も可能です。


9. 既知の限界

  • パーサは正規表現ベースで、完全な構文解析ではありません。マクロが動的に
    生成するコードや %include 先の中身は追跡できません。
  • ログの更新は実行完了時のみです(実行中のライブtailはしません)。
  • 意味解析を要するリファクタリング(変数の安全な一括リネーム)は非対応です。
    :SasGrep + :cdo での一括置換を使ってください。
  • 部分実行のプリアンブル自動付与は単純な行スキャンです。%macro 内で定義された
    %let や条件分岐で切り替わるLIBNAMEは追えません。

Vim内からは :help saside でも同じ情報が引けます
(初回のみ :helptags ~/.vim/doc が必要)。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?