2019年3月21日木曜日

slimv.vim インストール手順 及び 使い方


slimv.vim インストール手順 及び 使い方

2019/3/22 更新

素人目線で紹介していきたいと思います。
間違いがあるでしょうが大目に見てください。

slimvとは
vimでlispが使える環境


事情
xyzzyでlispをし始めたけれど、emacs風キーバインドに慣れませんでした。
キーバインドをvim風にしたけれど、やっぱりしっくりとこなくて、
ついに、slimvをインストールする事にしました。
また、この手の記事があまりなかったのでアップしました。


参考サイト
だいたい以下のサイトを参考にして作業をしました。

Vimmerな人たちのためのCommonLisp環境構築(slimv)
https://qiita.com/kedama17/items/93ae7ccd1839f4bbb567


私の環境
Windows7 64bit


手順
1 Gitのインストール
Git? これをいれたら、コマンドでファイルをインストールできる物?
以下サイトを参考にインストールしました。

WindowsのVimでdeinを使ってプラグイン管理
http://neko-mac.blogspot.com/p/windowsvim.html

https://gitforwindows.org/ よりダウンロード、インストール。
インストール時選択する画面が何度かでますが、全てデフォルトでいきま
す。


5 deinのインストール
vimのプラグイン管理するのものです。
以下「WindowsのVimでdeinを使ってプラグイン管理」 を参考にします。
「Git Bash」コンソールを立ち上げます。
今後、そのコンソール上で以下のコマンドを打つ作業となります。


5-1 フォルダの作成
$ mkdir ~/vimfiles
$ cd ~/vimfiles
$ mkdir bundles
私はgvim.exeがあるフォルダにvimfiles以下を作成しました。


5-2 installer.sh のダウンロード
$ cd ~/vimfiles

https://github.com/Shougo/dein.vim
その状態で、上のサイトのQuick Startで示されているコマンドをプ
ロンプトに書き込み実行します。
$ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh


5-3 deinのインストール
$ sh ./installer.sh ~/vimfiles/bundles
コンソールの最後ぐらいにDoneとでればOKでしょうか。
上サイトには 「installer.sh」は削除 の注意がありました。


5-4 dein.vimの設定
_vimrcの最初に以下を記述

if &compatible
  set nocompatible
endif

"dein.vimディレクトリをruntimepathに追加する
set runtimepath+=$VIM/vimfiles/bundles/
repos/github.com/Shougo/dein.vim
                           

"以下定型文
if dein#load_state("$VIM/vimfiles/bundles")
call dein#begin("$VIM/vimfiles/bundles")
call dein#add("$VIM/vimfiles/bundles/repos/github.com/
                    Shougo/dein.vim")
 
"好きなプラグインを dein#add() 追加していく
      "call dein#add('好きなプラグイン')
"call dein#add('vim-airline/vim-airline')
      call dein#add('kovisoft/slimv')
call dein#add('Shougo/neocomplete.vim')

call dein#end()
call dein#save_state()
endif

filetype plugin indent on
syntax enable

設定の仕方は以下のサイトを参考にしました。
"Vimプラグインの管理にdein.vimを使う
"https://blog.yuheikagaya.com/entry/2016/03/20/171907
"
"call dein#begin('プラグインを管理する一番上のディレクトリ')
"call dein#add('プラグイン名')
"call dein#add('プラグイン名')
"...
"call dein#end()
"vimrcの中で、上のようにdein#begin()とdein#end()の行の間にインストール
"したいプラグインの名前をdein#add('プラグイン名')で書いていけばオッケ


5-5 新しいプラグインをインストールするには
私はコード補完機能のneocomplete が欲しかったので
_vimrcに call dein#add('Shougo/neocomplete.vim') と
書いています。
gvimを再起動すると、インストールされます。これも最後にDoneとで
ればOKです。



2 Lispをインストール
http://www.sbcl.org/platform-table.html よりLispをインストール。
64bitのOSならAMD64、32bitならx86を選びます。



3 Pythonをインストール
https://www.python.org/downloads/windows/ よりインストール。
上サイトには以下のように指定されています。
32bit版(大事!!!)のバージョン2.7.12rc1(大事!!!)をインストールし
ます。
32bit版のPythonでないとslimvは動かないとの事。
バージョンの指定の理由はわかりません。
ファイルが見当たらないようでしたら、python 2.7.12rc1 とかで検索。


4 gvimのインストール
https://www.kaoriya.net/software/vim/ よりKaoriYa版のgvimを
インストール。例によって32bit版のvimでないとslimvは動かないとの事。
私はバージョン8.1をいれました。



5 lispファイル実行
参考サイト
Windows10でvimのCommonLisp環境を作る
https://qiita.com/kimurap/items/7b054616820cef5aec82

(print "hello lisp")
(+ 1 10)

上のファイルをtest.lispとして保存してから,c を押すとREPLが立ち上
がります。
test.lispを開いているバッファに戻って,bを押すとバッファ全体が評価
されます。

Vimmerな人たちのためのCommonLisp環境構築(slimv)のtest.lisp を少
し変えた以下ファイルを実行すると

(defun greeting ()
  (print "Welcome to the world of CommonLisp!"))
(greeting)

WARNING: redefining COMMON-LISP-USER::GREETING in DEFUN
と警告がでます。
しかし、調べた所では問題がなさそうです。
 関数を再定義している?



6 slimvの使い方
参考サイト
(old lisp junky)
http://bis83gb.hatenadiary.jp/entry/2013/04/29/211008
以下引用です。私の環境では動作しませんでした。

Slimeの基本操作
Slimeの公式ドキュメントに細かい操作説明が載っています。
http://common-lisp.net/project/slime/doc/html/

まず覚えておきたいコマンドはこちらです。

M-x slime Slimeの起動
M-x slime-quit-lisp SlimeのSwankサーバを終了
M-x slime-restart-inferior-lisp Lispの再起動
C-c C-c (ファイルバッファで)カーソルがある式をコンパイル&ロード
C-c C-k (ファイルバッファで)ファイル全体をコンパイル&ロード
C-c C-l ファイル名を指定してロード
C-c C-z REPLに移動
M-. シンボルの定義にジャンプ
M-, 前回のM-.ジャンプ先に戻る
M-x slime-inspect インスペクトモード*7を開く
たくさん機能がありますが次が基本的な流れになります。

ソースコードを書く
C-c C-c またはC-c C-kでコンパイル
C-c C-z でREPLを開き、動作を確認する

以下のサイトも参考になるかも
https://translate.google.com/translate?hl=ja&sl=en&u=https://kovisoft.bitbucket.io/tutorial.html&prev=search
https://translate.google.com/translate?hl=ja&sl=en&u=https://kovisoft.bitbucket.io/tutorial2.html&prev=search


以下いくつかのサイトで使い方をしらべました。
slimvは
    (setq foo '(+ 1 2))
    (eval foo)
で これを評価させるとエラーがでます。
xyzzyでは評価結果がでましたが。

一旦、変数を以下のように定義しないとだめなようです。
(let (foo)
    (setq foo '(+ 1 2))
    (eval foo)
  )

話は別ですけれど、以下のようなエラーがよくでます。
コードのミスがあったんでしょうね。
The variable FUNC is unbound.
   [Condition of type UNBOUND-VARIABLE]

Restarts:
  0: [CONTINUE] Retry using FUNC.
  1: [USE-VALUE] Use specified value.
  2: [STORE-VALUE] Set specified value and use it.
  3: [RETRY] Retry SLIME REPL evaluation request.
  4: [*ABORT] Return to SLIME's top level.
  5: [ABORT] abort thread (#<THREAD "repl-thread" RUNNING {1002FFFE43}>)






https://www.slideshare.net/samugari/vim-asalispfrontendpub
,c サーバー起動
,d トップレベルフォームを評価 再帰関数をトレースできる
,r 選択範囲を評価
,e 式を評価
,1 MACROEXPAND-1
,v 対話的評価
,a abort
,s DESCRIBES
,y 評価の中断

,e 一行の式を評価
  カッコ内を評価したかったら最後のカッコ閉じにカーソルをもっていって
  ,e と打つ事
  test-list の内容を知りたかったら、その単語内にカーソルをもっていって
  ,e と打つ事
  それ以外はエラーとなります。
(setq test-list '("foo" "bar"))
test-list

,c   プロンプトが訳の分からない事になったら、押しています。するときれいな
  プロンプト画面になります。




https://translate.google.com/translate?hl=ja&sl=en&u=https://kovisoft.bitbucket.io/tutorial.html&prev=search
REPL(lispのインタープリター)上で式を入力してEnter(挿入モードで)を押す
と評価される


 * 、 ** 、 ***を入力して以前の評価で返されたオブジェクトを取得する
   か、 + 、 ++ 、 +++を入力して以前に評価したフォームを取得できます。

ソースファイル上でシンボルにマウスを持ってくると
ツールチップで機能の説明がでます。英語であまり意味がわかりません。

,s シンボルの説明がでます。初心者にはあまり役にたちません
,h シンボルの説明がブラウザででます。英語なので雰囲気だけはわかりま
  す。 自分で日本語サイトを検索した方が早くわかりやすいかな。
,d 最上位のフォームを評価します。 フォーム:式のことかな
  ,bとどう違うのかわかりません。
,e カーソル行の式を評価?


パッケージ
以下パッケージの説明がありますが、初心者の為スルーします。
find-packageでパッケージを見つけることができます。 また、gを押して(ま
たはREPLメニューからSet-Packageを選択して) モールスを入力して現在の
パッケージをモールスに設定することもできます。これは新しいMORSE>プロン
プトおよび* package *の値に反映されます。

関数とかの引数のリスト表示
てSpaceを押すと、関数の引数リストがステータス行に表示されます。 この機
能は、組み込みの機能だけでなく、ユーザーが定義したすべての機能に対して
機能します。

以下初心者には難しいのでパス。



https://common-lisp.net/project/slime/doc/html/
TAB コード補完ができるようです。私はneocompleteを入れているので、slimvの
機能かわかりません。


以下slimvをインストールしたあたりのslimv.txtが一番くわしいようです。
C:\ProgramFile\vim81-kaoriya-win32\vimfiles\bundles\repos\github.com\kovisoft\slimv\doc\slimv.txt



Set#1 Set#2コマンド
    -------------------------------------------------- -
    、、、、 Slimvメニュー

    編集コマンド(挿入モード):
    <C-X> 0フォームを閉じる
    <タブ>完全な記号
    <スペース>関数の引数リスト
    <C-]>定義の検索(タグ検索)

    編集コマンド(通常モード):
    、)、tcフォームを閉じる
    、(、(t Paredit Toggle
    、j、fd定義の検索

    評価コマンド:
["x]、d [" x]、ed Eval Defun(現在の最上位フォーム)[レジスタxに入れる]
["x]、e [" x]、ee評価現在の式(現在のサブフォーム)[regに入れます。バツ]
["x]、r [" x]、er評価領域(視覚的選択)[またはレジスタxからのテキスト]
    、b、eb評価バッファー
    、v、ei Interactive Eval(SLDBの場合はフレーム内で評価)
    、u、eu関数の定義解除

    デバッグコマンド:
    、1、m1 Macroexpand-1
    、m、ma Macroexpandすべて
    、t、dtトレースの切り替え
    、T、du Untrace All
    、B、dbブレークポイントを設定
    、l、dd逆アセンブル
    、i、di Inspect(SLDBの場合はフレーム内で検査)
    、a、da中止
    、q、dqトップレベルに終了
    、n、dc続行
    、H、dlリストスレッド
    、K、dkスレッドを殺す
    、G、dgデバッグスレッド

    コンパイルコマンド:
    、D、cdコンパイルDefun
    、L、clファイルのコンパイルとロード
    、F、cfコンパイルファイル
["x]、R [" x]、crコンパイル領域[またはレジスタxからのテキスト]

    相互参照コマンド
    、xc、xc誰が呼び出すか
    、xr、xr
    、xs、xs
    、xb、xbバインドする人
    、xm、xmマクロ展開するユーザー
    、xp、xp専門分野
    、xl、xl発信者のリスト
    、xe、xe呼び出し先のリスト

    プロファイルコマンド:
    、p、ppプロファイルの切り替え
    、B、pbサブストリングによるプロファイル
    、U、paすべてのプロファイル解除
    、? 、psプロファイルの表示
    、o、prプロファイルレポート
    、x、pxプロファイルのリセット

    ドキュメントコマンド:
    、s、ds記述記号
    、A、da Apropos
    、h、dh Hyperspec
    、]、dtタグを生成

    Replコマンド:
    、c、rcサーバーに接続
    、y、ri Lispプロセスに割り込みます
    、-、-REPLをクリア
    、Q、rq REPLを終了


    Set#1 Set#2コマンド
    -------------------------------------------------- -
    、\、\ REPLメニュー(別のメニュー、REPLバッファーにのみ有効)

    REPLメニューコマンド:
    、。 、rs入力を送信
    、/、ro入力を閉じて送信
    、g、rpセットパッケージ
    <C-C> <C-C>割り込みLispプロセス
    、<Up>、rp前の入力
    、<Down>、rn次の入力
    、-、-REPLをクリア


    、中止
    、qトップレベルに終了
    、n続行

    =テキストが選択された後、選択を再インデントします。
    ==現在の行を再インデントします。
    vab =または[(v%=現在のリストを選択して再インデントします。
    99 [(v%=トップレベルのフォームを選択して、再度インデントします。
    gg = Gファイル全体を再インデントします。


    :inoremap(()<Esc> i次の場合に閉じ括弧を自動的に挿入します
                            開口部が挿入されます。

    :inoremap [[] <Esc> i上と同じですが、角かっこを使用します。

    :set showmatchカーソルを合わせて簡単にジャンプします
                            閉じペアの場合の括弧または角括弧
                            挿入されます。

    %一致する括弧または角括弧に移動します。

    :source $ VIMRUNTIME / macros / matchit.vim
                            Vimに「%」との拡張一致を追加します。

    vabまたは[(v%現在のリストを選択します。
    vib括弧で囲まずに現在のリストを選択します。
    yab Yank現在のリスト。
    dab現在のリストを削除します。

    99 [(v%トップレベルフォームを選択します。

    g:lisp_rainbow異なるレベルの括弧で色付けする
                            異なる強調表示。現在のみで動作します
                            「lisp」ファイルタイプ。うまくいけば追加されます
                            Clojureプラグインにもすぐに。





同じフォルダにparedit.txtがありますが、smlivで使えるキーバインドが
説明されています。
C:\ProgramFile\vim81-kaoriya-win32\vimfiles\bundles\repos\github.com\kovisoft\slimv\doc\paredit.txt

日本語訳
https://translate.googleusercontent.com/translate_c?depth=1&hl=ja&prev=search&rurl=translate.google.co.jp&sl=en&sp=nmt4&u=https://github.com/kovisoft/slimv/blob/master/doc/paredit.txt&xid=17259,15700021,15700186,15700191,15700253,15700255&usg=ALkJrhioEuQA9JacwosrBB-4I8acDYUxCA#L129

* paredit.txt * Paredit最後の変更:2016年12月13日

 Vim * paredit * * slimv-paredit *の信用モード
バージョン0.9.13
paredit.vimプラグインは、で使用されるS式の構造化編集を実行します。
Lisp、Clojure、Schemeプログラミング言語。 それはSlimvの一部として来るかもしれません
しかし、それはまたスタンドアロンのプラグインとして別々に配布されています。
| paredit-mode | 信用モード
|クレジットキー| 信用キーバインド
| paredit-options | 信用オプション
=================================================== =============================
PAREDIT MODE * paredit-mode *
信用モードは、一致したすべての文字を保持する特別な編集モードです。
(括弧、四角と中括弧、二重引用符)バランス、つまりすべて開き
文字は、一致する終了文字を持ちます。 ほとんどのテキストの入力と消去
コマンドはバランスの取れた状態を維持しようとするため、単一の一致文字はありません。
追加または削除すると、ペアで入力または削除されます。
この関数は文字列とコメントを処理するので、括弧と四角は使用しません。
角かっこのバランスは、文字列またはコメント内で実行されます。
[]と{}のペアはLispファイルタイプに対してバランスが取れていないことに注意してください。
ClojureとSchemeのために。
アイデアはEmacsの尊厳モードから取られていますが、すべてのparedit.elではありません。
編集機能は、実装されているか、まったく同じように動作します。
Emacsで。
'('その後に一致する ')を入力すると自動的に挿入されます。
必要に応じて、 '()'ペアの前後にスペースを追加します。
挿入モードで ')'を押すと、最後を挿入する必要はありません。
かっこ記号(すでに存在している)なので、カーソルは単純に過去に進みます。
次の右括弧(次に次の外側の右括弧など)
ただし、この結果は、クレジットモードでテキストを入力した場合です。
あなたは信用モードなしと同じキーストロークを使用することができ、あなたは同じを得る
結果。 もちろん、閉じ括弧を入力しないことを選択できます(
それが既にそこにあるので、信用モードなしで必要とされる)。
あなたが単独で ')'を削除しようとしている場合、それは不可能です、カーソル
リスト内に移動するだけで、すべての通常の文字を削除できます。
リストが最終的に空になったとき: '()'、それからオープニング '('の削除
両方の括弧を同時に消去するので、バランスの取れた状態が維持されます。
上記のすべてが[...]と "..."の文字ペアに当てはまります。
あなたが一度に複数の文字を削除しているとき、例えば、行全体を削除する、
または行末まで削除するなどしてから、単一の削除ロジックを削除します。
文字が繰り返されます。 これは、行全体または文字までが
行末などは必ずしもすべて削除されるわけではありません。 に応じて
左かっこ、右かっこ、中かっこ、二重引用符
バランスのとれた状態を維持するためにそれらのうちの1つが維持されるかもしれません。
たとえば、通常モードでDを押して行末まで削除するとします。
次のClojure関数定義のaパラメーターとbパラメーターの間
(defn myfunc [abc](+ abc))
^ ---ここでDを押す
最後のクロージング]と同様にクロージング]も削除されません。
リストには(と[がマッチするので、結果は次のようになります。
(deff myfunc [a])
複数の行を削除している場合は、上記のプロセスが実行されます。
関係するすべての行 行が完全にクリアされていない場合は、結合されます
次の行に進み、プロセスは続行されます。
もちろん、すべてのVimコマンドがpareditモードと互換性があるわけではありません(例:
バランスの悪いコードスニペットをヤンクアンドペーストしたり、非対称のコードをコメントアウトしたりできます。
コードの一部)、およびソースコードを編集する可能性もあります
それを不均衡にするために、信用モードでオフにするか、他のエディタでオフにします。
基になるコードのバランスが取れていないことをpareditモードが検出すると、
最上位のフォームバランスが修正されるまで、信用機能は一時停止されます。
すべての親が一致するとすぐに、信用モードが自動的に再開されます。
Pareditには、基礎となる構文要素を識別するための「構文オン」が必要です。
構文がオフになっている場合、pareditは内部で中断されません。
コメントや文字列
Emacsから知られているSlurpageとBarfageも可能ですが、違う
fashion:あなたはシンボルを動かすのではなく、開きかっこと閉じかっこを動かします
シンボルまたはサブリストの上に。 これにより、シンボルやサブリストを移動できます
現在のリストに出入りする。 括弧を移動することはできません
例えば、左括弧を右に移動すると、
それからそれは一致した閉じ括弧で止まるでしょう。
.lisp、.cl、.clj、cljs、.scm、および.rktファイルでは、デフォルトで信用モードが設定されています。
しかし、次の文をに含めることでそれをオフにすることは可能です。
.vimrcファイル:
g:paredit_mode = 0とします。
他の種類のファイルでも認定モードを有効にできます。 設定方法はこちら
それはあなたの.vimrcの中のArcファイルのためのものです(あなたが定義されたファイルタイプ 'arc'があると仮定します):
au FileTypeアークコールPareditInitBuffer()
PareditはSlimvの一部ですが、スタンドアロンとしても配布されています
プラグイン SWANKクライアントやSlimvのインデントを使うつもりなら、
構文関数、それからSlimvプラグインをインストールしてください。 そうでなければあなたが望むかもしれません
Pareditプラグインをインストールするには、他の不要なファイルを省略します。
=================================================== =============================
PAREDIT KEYBINDINGS *クレジットキー*
以下はpareditのキーバインドのリストです。
挿入モード:
( '()'を挿入してカーソルを内側に移動します。
または必要に応じて末尾のスペース
コメントまたは文字列の中に '('を挿入します。
)カーソルを次の右括弧記号に移動します。
現在のリスト もう一度押すと次へ移動します
外側の閉じ括弧など
トップレベルのフォームに到達しました。
コメントや文字列の中に ')'を挿入します。
| g:paredit_electric_return |の場合 それからまたそれはまた集まります
適切な場合は電気が戻ります。
['[]'を挿入してカーソルを内側に移動します。 また、主要な追加
または必要に応じて末尾のスペース
コメントや文字列の中に '['を挿入します。
]カーソルを次の右角かっこに移動します。
現在のリスト もう一度押すと次へ移動します
外側の閉じ角かっこなど
トップレベルのフォームに到達しました。
コメントや文字列の中に ']'を挿入します。
| g:paredit_electric_return |の場合 それからまたそれはまた集まります
適切な場合は電気が戻ります。
{'{}'を挿入してカーソルを内側に移動します。 また、主要な追加
または必要に応じて末尾のスペース
コメントまたは文字列の内側にある場合は '{'を挿入します。
カーソルを次の閉じ中括弧に移動します。
現在のリスト もう一度押すと次へ移動します
外側の閉じ中括弧など
トップレベルのフォームに到達しました。
コメントまたは文字列の内側にある場合は '}'を挿入します。
| g:paredit_electric_return |の場合 それからまたそれはまた集まります
適切な場合は電気が戻ります。
"文字列の外側にある場合、 '" "'を挿入してカーソルを移動します
内部。 文字列の内側にある場合は、最後の '"'に移動します。
コメントの内側に「」を挿入します。内側の「」を挿入します
文字列で、先頭に「\」が付きます。
<BS>(、)、[、]、または "を削除しようとしているが他にもある場合
内側の文字は、左にスキップしてください。 いつ
一致した文字の開始部分を削除しようとしています
中に何も入っていないと、空のリスト全体が削除されます。
<Del>(、)、[、]、または "を削除しようとしているが他にもある場合
内側の文字は、右にそれをスキップします。 いつ
一致した文字の最後の部分を削除しようとしています
中に何も入っていないと、空のリスト全体が削除されます。
<Enter> If | g:paredit_electric_return | オンになっている
「電気的リターン」、すなわち挿入することによって空の行を作成する
2つの改行文字
ノーマルモード:
(現在のリストの最初の '('を見つけます。押すことができます
最上位フォームが開くまで繰り返します。
)現在のリストの ')を閉じます。 押すことができます
最上位フォームが閉じるまで繰り返します。
[[現在/前のdefunの先頭に移動します。
]]次のdefunの始めに行きます。
<Leader> <区切り文字(括弧または角括弧)の上に立っている場合
それから丸めるかバーフをかけることによって左にそれを動かします
の方向に応じて、左側のs式
デリミタ:
')'の上に立っているときに '<'を押すと、S式になります。
現在のリストから出ていく ')'の左側。
'('の上に立っているときに '<'を押すと、S式になります。
現在のリストに入る '('の左側にあります。
たとえば、|でマークされた位置で<Leader> <を押すと、
(aaa bbb |)--->(aaa |)bbb
aaa |(bbb)---> |(aaa bbb)
<Leader>>区切り文字(括弧または角括弧)の上に立っている場合
それから丸めるかバーフをかけることによってそれを右に動かします
の方向に応じて右にs式
デリミタ:
'('の上に立っているときに '>'を押すと、S式になります。
現在のリストから出ていく '('の右側にあります。
')'の上に立っているときに '>'を押すと、S式になります。
現在のリストに入ってくる ')'の右側に。
たとえば、|でマークされた位置で<Leader> <を押すと、
(aaa |)bbb --->(aaa bbb |)
|(aaa bbb)---> aaa |(bbb)
<Leader> J後続の2つのリストまたは文字列を結合します。 最初のものは終わらなければなりません
カーソルの前では、2番目のカーソルは
カーソル位置
たとえば、|でマークされた位置で<Leader> Jを押すと、
(aaa) (bbb)--->(aaa | bbb)
"ああ" | "bbb" ---> "aaa | bbb"
<Leader> O現在のリストまたは文字列をカーソル位置で分割(「開く」)します。
結合の反対。 オリジナルのためキーOが選択されています
ヴィムマッピングJとOもまた一種の反対です。
例えば、|でマークされた位置で<Leader> Oを押すと
(aaa | bbb)--->(aaa)|(bbb)
"aaa | bbb" ---> "aaa" | "bbb"
<Leader> W現在のシンボルを一対の括弧で囲みます。 カーソル
<Leader> w(次に折り返しとして開き括弧上に配置されます。
これは通常、次のようにして関数を呼び出したいからです。
パラメータとしての記号なので、 "a"を押すことで入力できます。
新しく挿入された "("の直後の関数名
たとえば、|でマークされた位置で<Leader> Wを押すと、
(aaa b | bb ccc)--->(aaa |(bbb)ccc)
<Leader> w [現在のシンボルを一対の角括弧で囲みます。
<Leader> Wと同じです。
たとえば、|でマークされた位置で<Leader> w [を押すと、
(aaa b | bb ccc)--->(aaa | [bbb] ccc)
<Leader> w {現在のシンボルを一対の中括弧で囲みます。
<Leader> Wと同じです。
たとえば、|でマークされた位置で<Leader> w {を押すと、
(aaa b | bb ccc)--->(aaa | {bbb} ccc)
<Leader> w "現在のシンボルを二重引用符で囲みます。
<Leader> Wと同じです。
たとえば、|でマークされた位置で<Leader> w "を押すと
(aaa b | bb ccc)--->(aaa "bbb |" ccc)
<Leader> S現在のリストを包含リストに接合します。
開閉パネルを取り外します。 折り返しの反対側。
たとえば、|でマークされた位置で<Leader> Sを押すと、
(aaa(b | bb ccc)ddd)--->(aaa | bbb ccc ddd)
<Leader> <Up>削除することによって現在のリストを包含リストに接合します。
カーソル位置から
親を開く
たとえば、|でマークされた位置で<Leader> <Up>を押すと、
(aaa(bbb | ccc)ddd)--->(aaa | ccc ddd)
<Leader> <Down>削除することによって現在のリストを包含リストに接合します。
カーソル位置から
親を閉じます。
たとえば、|でマークされた位置で<Leader> <Down>を押すと、
(aaa(bbb | ccc)ddd)--->(aaa | bbb ddd)
<Leader> I現在のシンボルを上げます。つまり現在のリストを次のように置き換えます。
他のすべてを削除して現在のシンボル
親のペアを含むリスト内の(シンボル)。
例えば、|でマークされた位置で<Leader> Iを押す
(aaa(b | bb ccc)ddd)--->(aaa | bbb ddd)
xまたは<Del>(、)、[、]、または "を削除しようとしているが他にもある場合
内側の文字は、右にそれをスキップします。 いつ
一致した文字の最後の部分を削除しようとしています
中に何も入っていないと、空のリスト全体が削除されます。
<count>値が前に付いている場合は、この多くを削除してください。
キャラクター
X(、)、[、]、または "を削除しようとしているが他にもある場合
内側の文字は、左にスキップしてください。 いつ
一致した文字の開始部分を削除しようとしています
中に何も入っていないと、空のリスト全体が削除されます。
D行末まで文字を削除し続けます。
バランスの取れた状態を維持する
開閉は同じです。
C 'D'と同じですが、最後に挿入モードに入ります。
■ 'x'と同じですが、最後に挿入モードに入ります。
ddバランスの取れた状態を維持して、行全体を削除します。すなわち、
開閉括弧の数を同じにしてください。
<count>値が前に付いている場合は、この多くを削除してください。
行。
cc 'dd'と同じですが、最後に挿入モードに入ります。
d {motion} {motion}までテキストを削除します。 テキストのバランスを保ちます。
囲まれたテキストには、対になっていない一致文字が含まれています
それらは削除されません。
c {motion} {motion}までテキストを削除して挿入モードを開始します。 テキストを保持
d {motion}のようにバランスが取れています。
pすべての不均衡にマッチしたテキストをカーソルの後に置きます
文字が削除されました。
Pすべての不均衡にマッチしたテキストをカーソルの前に置きます
文字が削除されました。
ビジュアルモード:
(現在のリストの最初の '('を見つけて全体を選択します
リスト。 トップレベルフォームまで繰り返し押すことができます
選択しました。
)現在のリストの最後の ')'を見つけて全体を選択します
リスト。 トップレベルフォームまで繰り返し押すことができます
選択しました。
d現在の視覚的選択を削除します。 テキストのバランスを保ちます。
xには、対になっていない一致文字が選択範囲に含まれる
<Del>それからそれらは削除されません。
c現在のビジュアル選択を削除して挿入モードを開始します。
'd'コマンドのようにテキストのバランスを保ちます。
<Leader> W現在のビジュアル選択を括弧で囲みます。
<Leader> w(視覚的選択は保持されます。
<Leader> w [現在の視覚的選択を正方形のペアで囲む
かっこ。 視覚的選択は維持されます。
<Leader> w {現在の視覚的な選択範囲を中括弧で囲みます。
視覚的選択は維持されます。
<Leader> w "現在の視覚的選択を2組のdoubleで囲む
引用符 視覚的選択は維持されます。
変数| g:paredit_shortmaps |を変更した場合は、注意してください。 ゼロではない
通常モードのマッピングに従うと<Leader>接頭辞は得られず、マッピングされます。
既存の(しかしあまり使用されていない)Vim関数と、代わりにオリジナルのVimに
関数は<Leader>接頭辞を使ってマップされます。
<、>、J、O、W、S
VimはS式を操作するための多くの組み込みマッピングを持っています。 これは
便利なコマンドのリスト、これらはparedit.vimによって定義されていません、それらは
クレジットモードがオフになっている場合でも使用可能です。
%カーソルがあるかっこの対応するペアを見つけます。
立っています。
d%一致する括弧まで削除します。 通常は使われます
カーソルが括弧の上にあるとき
角かっこと中かっこも同様に)。 に立っていない場合
それから括弧は最初の開始親まで左を削除します、
そのため、このコマンドはS式を削除するためにも使用できます。
それはカーソルの直前です。
daw単語を削除します。 リスト要素を削除するために使用できます。
カーソルは要素内のどこにでも配置できます。
da(最も内側のs式を削除します。カーソルが置かれる可能性があります。
S式内の任意の場所
di(daと同じですが、親の枠は削除されません。
Davide TavianiがPareditのチートシートを作成しました。こちらからアクセスできます。
https://github.com/StudyFlow/paredit.vim-cheatsheet
=================================================== =============================
オプションオプション* paredit-options *
| g:paredit_disable_clojure | 定義した場合、pareditはclojureファイルに対して無効になります。
| g:paredit_disable_hy | 定義した場合、pareditはhyファイルに対して無効になります。
| g:paredit_disable_lisp | 定義した場合、pareditはlispファイルに対して無効になります。
| g:paredit_disable_scheme | 定義されている場合、pareditはスキーマファイルに対して無効になります。
| g:paredit_disable_shen | 定義した場合、pareditはshenファイルに対して無効になります。
| g:paredit_electric_return | ゼロ以外の場合、電気リターン機能が有効になります。
| g:paredit_smartjump | ゼロ以外の場合、 '('と ')'も角括弧をターゲットにします。
ClojureやSchemeを編集するときは中括弧を付けます。
| g:paredit_leader | Pareditのカスタム<Leader>設定。
| g:paredit_matchlines | 前後に見る行数
現在のフォームが均衡しているかどうかをチェックするとき。
| g:paredit_mode | ゼロ以外の場合は、信用モードがオンになります。
| g:paredit_shortmaps | ゼロ以外の場合、pareditは1文字を再マッピングします。
あまり使用されないVimコマンド
* g:paredit_disable_clojure *
* g:paredit_disable_lisp *
* g:paredit_disable_scheme *
* g:paredit_disable_shen *
定義されている場合、指定されたファイルタイプに対してpareditは無効になります。 使うのに便利
特定のファイルタイプ用の別のプラグインですが、
その他
* g:paredit_electric_return *
ゼロ以外の場合、「電気リターン」機能が有効になります。 これは、
挿入モードで閉じ括弧の前に<Enter>が押された場合、pareditは実際には
空行を作成する2つの改行を挿入します。 余分な改行はで消費されます
次の閉じ括弧を押す。 この機能は
次の(空の)行に入力されたサブフォーム。
言い換えれば、<Enter>は編集中に括弧で囲まれた式を「開きます」、「)」
それらを「閉じます」。
Slimvの場合、REPLバッファの電気的リターンは無効になります。
オプション| g:slimv_repl_simple_eval | ゼロ以外の値です。 この場合は<Enter>が使用されます
評価のためにコマンドラインをスワンクサーバに送信します。
こちらの電気リターン機能のビデオデモをご覧ください。
http://img8.imageshack.us/img8/9479/openparen.gif
* g:paredit_smartjump *
ゼロ以外の場合、このオプションは通常および視覚における '('および ')'の動作を変更します。
ClojureやSchemeを編集するときのモード。 最も近いオープンまたはクローズにジャンプするのではなく
かっこの代わりに、カーソルが最も近い '('、 '['、または '{'にジャンプします。
あなたが押すと '('、そしてそれは最も近い ')'、 ']'、または '}'にジャンプします。
「)」。 このオプションはネストされたClojureデータをナビゲートすることをはるかに簡単にします
構造 ファイルタイプがclojureでもSchemeでもない場合は何もしません。
* g:paredit_leader *
このオプションは、Pareditキーバインドのカスタム<Leader>設定を許可します。
デフォルトでは| mapleader |と同じ値です。 どちらでもない場合g:paredit_leader
またMapleaderも定義されていない場合、デフォルトの<Leader>はPareditの "、"です。
例:
g:paredit_leader = '\'とします。
これが.vimrcに設定されている場合、WrapはWではなく\ Wにマップされます。
別の| g:slimv_leader |があります。 一般的なSlimvキーバインドのためのオプション。
* g:paredit_matchlines *
現在かどうかをチェックするときに前後に調べる行数
トップレベルフォームは、信用モードでバランスが取れています。 デフォルトは100です。
* g:paredit_mode *
ゼロ以外の場合、pareditモードがオンになります。つまり、プラグインは
バランスの取れた状態 これがデフォルトの動作です。
* g:paredit_shortmaps *
0でなければ、pareditは1文字の通常モードのVimコマンドを再マッピングします。
頻繁には使用されません。 これらは、<、>、J、O、W、Sです。
これらのマップは<Leader>( "、"文字)を使って到達できます。
デフォルトではParedit)。
そうでなければ、これらの信用関数は<Leader>を介して管理することができます。
これらのキーの元々の機能。
=================================================== =============================
vim:tw = 80:et:wrap:ft = help:norl:

0 件のコメント:

コメントを投稿

About

参加ユーザー

連絡フォーム

名前

メール *

メッセージ *

ページ

Featured Posts