Open serna37 opened 11 months ago
動作確認 mac vim9とかのやつ windows gitbash上のmingw vim8.2 2019Dec12 compiled Sep 21 2021 Huge version without GUI +job +popupwin +timers
こんだけあればいける。 特にvimバージョンをいじってないので、多分8.2以上ならデフォで行ける
practice.vimが既にあるなら取得しないif文入れる なんなら、プラグインにした場合は自身のフォルダにあるので、あればそっちを見る
アニメーション中、ポップアップのキーを、アニメに合わせて色変えたい matchaddopsとclearmatchesをいっぱいやれば行けるか?
netreでCtrl移動する
augroup xxxxx
autocmd!
autocmd filetype netre call Func()
augroup END
function! Func()
nnoremap <buffer><C-h> <C-w>h
endf
↑これ何故かmacでうまく行かない。。
netrwの操作方法キモすぎるし、キーマップちゃんと作ろうか
開いてたら閉じるってしたい場合は、leader eをただの開くコマンドではなく 状態フラグ持たせる必要あり
ファイル開く時にちゃんと横のバッファで開くようにしたいぞ
winnr('$')
で、現在のタブの最大ウィンドウ番号がとれる。
1か、これまでループして、win_getidでwinidに変換すればwin_executeで指定ウィンドウにコマンド打てる
そんなハイライト名は無い、みたいに言われる
augroupは書いてるが、中のコマンドは
autocmd ColorScheme * highlight .... だった、これが呼ばれてないらしい
highlightコマンドを直書きしたら動いた ハイライト自体はずっとあっていいと思うし、直にするか…
直で有効にしてみると、検索のハイライトと被った?とかでエラー。 HiSet関数がエラー。 :messagesでは
key not present in dictionary pattern
getmatches()のうち、patternで設定済み▶︎つまり検索済みなら、ハイライトトグルしたいから、ハイライトを消す。 そのために、matchesを1度検索しているが、filter内部で呼ぶ時
{group:ハイライト名, pattern:検索ワード}
のリストだが
quickscopeでのmatchaddでは
{group:ハイライト名, id:列番号}
と登録されるので、
検索ハイライトでの filter(i,v -> v[pattern] == cword) というフィルタだと、辞書キーにpatternがない配列要素もあるので、エラーとなる。
だからFModeを無効にすると起きない。
キーがあるかないかを確認するか group名を見て、検索ハイライトのやつだけ確認するかで対応出来るはず
get(辞書, キー名, キーがない場合の返却値)
で-1とか返して-1を弾けばいい。
またはhas_key
でも確認できるらしい
こっちのが綺麗だと思う
has_key(辞書,キー名) ? あるのでv[pattern]==cw : ないから0 (false)を返す
let cw=expand('<cword>')
let already =filter(getmatches(),{i,v->has_key(v,'pattern')?v['pattern']==cw:0})
たぶんバージョン違いだと、キーがない場合はエラー出なく変な値返してたんだと思う、今までこのエラーは出てなかったはず.
本家quickscopeとキーマップ分岐すること
スクロール時に一時的に無効にするなら、スクロール前に有効かどうかを覚えておく必要があるので 状態フラグ必要
gitbashでも普通に動いてるわ has unixが、mingwだとtrueっぽい? っていうか動くなら別にif文無くていいか
mcで全消しした時サイン残ったまま。
カテゴリごとに、キーの文字を色分けしたいね
pluginインストール状況に応じてメニュー変えたい
もしポップアップ内でスクロールしたいなら winid指定のpopup_setoptions 見たいなので、手動でpos変えていく感じだ
ポップアップ中のbufferではスクロールkeymap作る感じだと思う fzf mimic作った時みたいな感じで行こう
ホバーうざくなってきた。?でポップアップとかにするか、デフォをオフにして 入った時にechoでSpace*3を促すか
色のみインストールも追加した、プラグ入れる系コマンドが増えたな、、
色だけ入れる機能ほしいよね
インストール中静かすぎて動いてるか分からんくて間違って止めちゃったりするから メッセージ変えるなりアニメーションさせるなりしよう
猫走らせとくか
もうちょいかっこよくしたいよね
ひとつのバッファでモード変えると全画面切り替わるのうざいので直したい
winid指定でsetlocalしたらいけると思う 自動コマンドでバッファ開いた時にってやる感じかな ▶︎ちがう、vimrcでset statusline=ではなく set stl=とするだけで良い
けど、ターミナル開くと全部terminalになっちゃうな 調査中…
最初にカーソル動かさないと色つかない問題もある 調査中…
airlineっぽく出来そうなのでやってみようか
https://thinca.hatenablog.com/entry/20111204/1322932585
これでタブのラインはできた これをバッファにしたいのと、ターミナルやnetrwは移さないとかいろいろ制御
Escで、CwCnのリードオンリーにしたら快適かもね
ターミナルだけじゃないかもだが、下や横のウィンドウを閉じた時に 他ウィンドウのレイアウトが崩れる。 上下左右に4ウィンドウあったとして、上を閉じると、したウィンドウが半分まですすむ。 これが嫌なので、上側ウィンドウ閉じた時は、下側ウィンドウは閉じる直前のサイズに治す、ってautocmd欲しい
ていうかもうポップアップ限定にしちゃおうか?
あと、googleコマンドをzshに追加したことで、コマンドからchrome開けるようになった
→ショトカつくる?:!google XXXX
を手動でやる?
→!コマンドじゃ無理だった、terminal開かなきゃいかん
→ショトカはいらん
ホップアップウィンドウ開く時に、同時にキーマップのチートシートも出したい たまに忘れて、調べても割と出てこない
画面に余裕あるか? previeeウィンドウのサイズを小さくすることも含めて相談かな?
→これはWikiかREADMEにしよう、流石にめんどい
ファイル開いてもfindのキャッシュ処理が重くて、猫が止まらんことがある ファイル開いたらRunCatStopするか
どうせならプラグイン入れなくてもいいレベルにしよう
いらないぞリスト hitpop quick highlight quick scope bookmarkd git系(lazygitでいい) traces
やりたいぞリスト easymotion autopair startify
どうしようもないので必要なプラグイン easymotion startify fzf / fzf.vim coc / copilot polyglot / syntax airline / airline-theme quickrun / vimspector goyo / limelight
とりあえずカッコ入れた時に入力を監視しよう
autocmd TextChangedI,TextChangedP * silent call SOMETHING()
function! SOMETHING()
if col('.') == 1 || getline('.')[col('.')-2] == ' ' | return | endif
if !pumvisible() | call feedkeys("\<Tab>") | endif
" みたいな感じで、消したり増やしたりする
endfunction
ちゃうかったわ。
execute 'inoremap <buffer> <silent> <BS> <C-R>=AutoPairsDelete()<CR>'
バックスペースそのものを、イコールの評価レジスタを用いて 関数に置き換える
カッコの場合は対消しで、その他は普通のバックスペースになる
augroup startify
autocmd VimEnter * nested call s:on_vimenter()
autocmd VimLeavePre * nested call s:on_vimleavepre()
autocmd QuickFixCmdPre *vimgrep* let g:startify_locked = 1
autocmd QuickFixCmdPost *vimgrep* let g:startify_locked = 0
augroup END
前回sessionいらんので、チートシートなどと、ぼざろロゴがほしい
どうやってスタートページをいじくるんだ?
インクリメンタルはいったん無視で 心の目モードだけとりま真似してみよう。
とりあえずf-scopeの要領で単語の先頭の文字光らせて、 列数そのままに上下に移動したときに一撃で行ける文字のみを剪定 縦方向にも被りがないようにして 光らせて、押したら、行移動+f/F移動するイメージ
inputdialog inputlist input色々ある easymotion中に入力された文字、戻れるようにするならinput的なの欲しいのかな
必要なもの
プラグインストールでカラーも入るようにしたいぞ job start
airline winresizer comfortable motion bookmarks fzf nerdtree quick scope quick highlight hitpop auto pair quickrun (shellのみ) zen (goyo) easymotion
startify 補完がちょっとやっつけなので直したいかも auto pairもなんか変
チートシート 補助輪モード プラグイン管理 IDEメニュー 対話grep ポップアップターミナル タブアンカー
coc (lspは無理だ) vimspector (dapも無理だ) カラースキーム/シンタックスハイライト (別ファイルが必要)
netrwからファイル開けない
mapは出来てるが、
map上書きじゃなくてなにか方法ないか? 入力監視してEnterならいいんだ。
Enterをmapすると、他で困る grep結果のquickfixでenterで開けなくなって困った
netrw使いにくい… トグルだけにするか?
ハイライト消すだけだけど、綺麗だし真似するか
vimrc一番下でcolorschemeしないと、途中で定義してるaug効かないので、一番下でやる必要がある
startifyもだろうし、どうせなら 一番下に、起動時、みたいなゾーン作ろう
あと、チートシートはfunctionsに入れたいぞ
基本設定 functions ここにチートシート imitations ここにぼざろ入る プラグ管理 補助輪モード プラグインの変数 プラグインでのキーマップ上書き 起動時のやつ
airlineの色や文字も、いい加減綺麗にしような
マーク、もうちょい共通部品切り分けられそうだよね
カラースキームもどうにか組み込めたらやっちまおう colorsフォルダ内に別ファイルが必ず必要になるらしいので、やるならリダイレクトでファイル作成かな… その場合、色変えランダムのデフォにonedarkいれる もし出来るならイミテーションにonedarkだ readmeにも忘れずに追加 ファイルは消そう colorinstallからも消す
もしくはtoeteとかデフォのカラースキームを、無理やりハイライト書き換えてonedarkにするか?
いま、vim開始でtorte適用のあと、hi Normal ctermbg=238
でonedarkのグレーにしてるがめっちゃいい
主要ハイライト色だけonedarkに上書きすれば結構いけるかも
coc的なもの、わんちゃん言語ごとのコマンドで行けんじゃね? シンタックスエラー検索▶︎マークする、をautocmdでjobstart 定義ジャンプ、呼び出し元検索、リネーム、doc参照は、あんのかな…?
これで、lsp dap 色系のうち dap以外はわりと実用的までいけるか? 色は正直onedarkさえ入ればいい lspも何とかなるなら強い、どうせプラグイン入れるし、多少動けばいい。 dapは最悪なくても、sysoutしまくれば何とかなるし大丈夫だ もし必要ならさすがにプラグインでいいだろ
チートシート、ホバー内のスクロール欲しいよね coc出できてるんだし、ホバーがあるならスクロールキーを上書き、みたいな感じだと思う ホバーpopup内でのスクロール方法はやり方調べよう、あったはず
もしくはカーソル位置でなく画面固定にしちゃってもいいかも startify再現出来てるならぼざろも見せんでいいから notificationだけでいいかな
syntax onは現在のハイライト消してリセットする感じ enableは保持。 今、禅モード抜ける時にonで大雑把に消してるので、ちゃんと消そうな あと、forで特定のハイライトの値変えてるけどもっとまとめられるぞ。 変える前に現状の値を取得しておいてから変えよう。 後からカラースキーム変えた時は知らん。
他にもsyntaxコマンドやってないか調べよう
timer変か?
一番下までGで行ってから、C-bすると、C-uと同じ量しかスクロールできん
あの三角形はpowerline fontっぽいな フォントがないと文字化けなので、標準の三角形で代用してみたが、見た目は割といい 縦にもっと大きいとなお良いが…
ひとまず、powerline fontがあるかどうか、を判定する必要がある
winならC:¥Windows¥Fonts¥にフォントのファイル一覧がある
macならコマンドで行けそう?フォントくらい入れろでいいかな
macならfc-list | grep powerline
であればok
というか必要フォントはpowerlineだけなのか?nerdfontいらない? deviconはアイコンだよね??
gitでなくbrewで入れられそうだ、README直そう
ファイル名なげーので、フルパスでなくファイル名だけにしようぜ matchstrで[^/]*$ タブの方はそうする statuslineはFをtでいいが、フルパスだす? fなら〜からのパスになる(pwdからの相対)
fatalから始まる場合repoでないが、拾えてないかも
ん、gitプロジェクトなのにfatalって出てるな、gitの設定が悪いだけかも
https://qiita.com/gosairei1207/items/701b7ae494b96db0f9a1
初期設定がないとなるらしい 問題は、どこででたか。正規表現マッチは確認してるはずだぞ branchの確認のときにcdしてなかったわw
ていうか何回もgit status叩いてるのやめようか、1回取得してからvimscriptで計算しよ どっちのが早いかな…
pwd表示が、ユーザフォルダまでが長いのでチルダで略したい execute pws 1コロンを '[^'.$HOME.'].*$' でmatchstrして、先頭に~/つける。 HOME含んでなければそのまま出すので、先に確認すること
無名バッファは排除しよう。oldfilesじゃなくlsから出てる ls結果、ダブルkwoutで区切る。変更するとインデックス変わる [No Name] [無名]
全然使わんし言語ごとのコマンド結果を:r!で表示で良さそう 実行時間も前後でshellで取ればいい
https://qiita.com/nil2/items/9f2365eb1e8abf3d323b
thinca/vim-quickrun
lsp、dapなので coc系列、なければfzf copilot vimspector
シンタックスハイライトは無しだと色少ないなって感じはするが見れなくは無い polyglotとかjava syntax抜きでやってみよう cocのlspがハイライト持ってるかもしれん、cocだけで色んな言語のソース確認してみよう
▶︎ 今のままで、PlugInstallコマンドのrepoを copilot、vimspectorだけ にしてcocだけを入れてみて、ちょっとソース触って操作感を動作確認してみよう
まぁlspに色はなさそうだが、そのままでも別に見れるので、シンタックスハイライトはなくていいかなぁ
イベント発火タイミングだが 文字を変えてなくても発火はしてるらしいので、カーソル位置が動いたかを見る必要がある見たいだが、いったん
前の文字が空白やカッコ 補完メニューが開いてる
場合はTab押さないので問題ないかも。
空白でTab押した時に空文字入れたければ、TabはpumあるときのみC-nとキーマップ変えよう
問題は、Enterで補完を決定したときもまたTabが押されちゃうことだ
pmu開いててEnterするとCyでpum消すのでpumvisibleがfalseになり、その後TextChangeイベントが発火するからまた開くので、改行出来ない。
↪︎補完決定のあとにはpum開かないようしたい
↪︎どう知る?
どうせ自動で補完開くし、自動で補完単語が挿入されんだから、CRはCyにしなければいい。
CRのマップをなくしたことで全部解決したが 補完選んでエンターでも改行するので、補完決定にはEnter必要ない!って覚えてなきゃダメ。
あれなんかダメだ、1度もTab押さないとだめ。 pum上でCRがマップされてる?? pumあるならCpしてCRとかやったが違うの選ぶし、Tabしてからとかだと空白入る。 ノーマルモードのoコマンドで解決。
githubアプリ、スマホだとコロンうったらバグるな…
inormap <expr><CR> pumvisible() ? '<C-o>o' '<CR>'
inoremapがbufferに適用になってるwww
チルダがキモいことになる
emotionみたいにキー受付て、ガンガン置換しつつハイライトつける。 ターゲットがマッチしないと置換プレビューのための実行でエラーになるのでハンドリング必要。
分かりにくいから、ポップアップ以外に情報欲しい。 2個、入力するからね。 (Esc to exit)substitute-from 文字入力 Enter (Esc to exit)substitute-to 文字入力してるとライブ置換 Enterで完了
選択してた場合はそこだけに絞りたい、ポップアップ出す前にmodeを確認しよう
markonm/traces.vim
qiita書こうな
結局ダミーバッファでライブ描画し、コマンドライン操作されたら関数、って感じにしたので popupは使っていない。
emotionのポップアップ fzf 置換プレビューのポップアップとか IDEメニュー マークも、マークのサインも、echoも タブアンカー grep ちゃんとハイライト作ろうぜ、onedark ねこ チートシート(後でやるなら今はいい) 補完ポップアップのハイライト プラグイン管理も
既存ハイライト使ってるやつはアレなので、echo用とかポップアップ用とかでonedark風なの一括で作ろう
airlineで定義してるイミテーションonedarkとまざんないように、UserUtilOneDarkとUserAirLineOneDarkとかって分けてもいい →カラースキームに依存させない。独自定義にする。 statusline, tablineでなんく、OneDarkのハイライト作ってまとめよう
grepprgをあればrgに書き換えてるが、これは exコマンドとしてのgrepをvimgrep(設定はinternal)から書き換えているので、exe引数にvimgrepと入れてたら結局内部grep使ってる。 まぁファイル1枚程度かわらんので、grepprg書き換えてるとこやてみよう grepformatはカスタムしたい
cocから入れるfzf-previewはfzf.vimを使ってなさそう、fzfコマンドさえあればよさげ fzf.vimは抜くか?その場合gitprojectじゃない時のFilesの代替どうする?imitationだと困らないか? Filesをかえような
findの結果がはやく描画されてさえくれればいい、findコマンドの使い方工夫かな、件数絞って検索とかできない? not path や nameはあくまで表示結果を絞るだけで、総なめはするから、検索対象のファイル数だけが結果に関わると言っても過言では無い。 gitbashのMingwでは11万2千とかのファイルで25秒。 19万6千とかで53秒 49万5千とかで20分▶︎powershellだと47秒 200弱で0.3秒。 2000で2秒 現実的にdepth 1で200超えんだろうし、 mindepthとmaxdepthで、1階層ずつ追加していくか?
それか、fzf find start関数では、非同期jobの中身を配列にaddしてるし、これそのまま画面描画したらどうだろうか? Tabキーのとこの式使えばよさげ ▶︎ だめだ、動的にfind結果が入るのでなく、終わったら一括でaddしてそう こまめにaddしてもらうしかないかも ▶︎いや、程よいタイミングでaddされてはいそう。もういっそdepth指定かなー?findコマンドの限界だろこれ、fzfすげぇわ mindepthとmaxdepthを増やしながら再帰でaddならいい感じ、だんだん遅くなるから最大値をpopupに書く タブfeedkeysじゃなくて関数にしよ len 0とかの場所、りファクタできる。数字はemptyすら要らぬ
プラグイン入れる関数でも、fzfがもしbrewとかで入ってexistsだかexecutableなら、clone無くそうか
初期モード、なんか無駄なフラグがあるので直そう
hisとbufが合わさってるのは結構いい、fzfと切り替えられるのもいいが 関数がぐちゃぐちゃになってるので、ちょっとリファクタリングしたいぞ
めも
typeをf lm flmにする previewの仕方で分岐に使う confirmでも、分岐に使う
mmlistをflmに
現在のウィンドウがquickfixかどうかの判断
previewのfirstlineのみでなく、コマンドで行数ジャンプとかできる? (カーソル行が真ん中に見えていて欲しい)
Update
完了タスク
- [x] update vim operation - [x] modify & org vim plugin - [x] complete cheat sheet - [x] grep optional - [x] #11 - [x] ターミナル修正 - [x] 相対行番号 修正 - [x] fix quick-scope (imitation version) - [x] マークサイン修正 - [x] fzfの修正 - [x] プラグインストール - [x] 入力補完 - [x] mimic修正 - [x] autopair再現 - [x] タブラインの修正 - [x] ステータスラインの修正 - [x] netrw修正 - [x] zen mode - [x] セクションの修正 - [x] nerdtree塞ぐ - [x] zen修正 - [x] easymotion再現 - [x] エアライン修正 - [x] いったん確認 lspに色あるかとか - [x] powerline font判定 - [x] airline修正 - [x] grep修正 - [x] fzf修正 - [x] 補完の修正 - [x] AutoPair修正 - [x] リファクタ、コマンド用意でなくPlugにする - [x] インデントなおす - [x] 1行にパイプしてるの、1回やめようか - [x] 独自ハイライトを1箇所にまとめる - [x] fzf preview - [x] fzf catをreadに - [x] fzf listの制約 行番コロンの話 - [x] fzf filterにpopup menuいれて自作無視したら、zindex入れ替え要らないんじゃね?→描画更新がされないのでzindexは必須 - [x] fzf preview更新 - [x] mkなんか変 - [x] fzf mk his buf jump change incSerch - [x] fzf モード切り替え -> いらないか... - [x] 非同期findでfzfコマンド再現 job2個くらい同時にいこう - [x] fzf git repoかどうかはstatuslineで既に知っている - [x] gfilesが思い場合どうする? 1000以上でも0.01s未満だ - [x] fzf files gfiles - [x] fzf fileはfind次第 - [x] fzf fuzzy utilのファイナライズ - [x] fzf fuzzy検索結果文字のハイライト - [x] fzf confirmで猫とめてpopup closeも - [x] fzfベース色のハイライト - [x] fzf ベース文字のハイライト - [x] fzfボーダーのハイライト - [x] fzf fuzzy検索結果をハイライト - [x] imitationとfunction、ソースの順番とreadmeを揃える - [x] onedarkファイル消す - [x] chatgptついか - [x] startify 追加 - [x] cheatsheet リファクタ - [x] easy motion TODOを修正 - [x] cheatsheet TODO修正 - [x] plugin chatgpt お試し - [x] 置換プレビュー、popupじゃない方法調べる - [x] 置換プレビュー 作成、追加 - [x] 置換プレビュー visual mode - [x] quick run 作成、追加 - [x] quick fixやつ - [x] リファクタ、関数の順番綺麗に - [x] fzf utilを上手く使う。quickfixとかpreviewとか - [x] fzf アップデート - [x] easymotion-search-motion - [x] 置換プレビューの再現 - [x] quickrun再現 - [x] startify再現 - [x] チートシート修正 - [x] jumplist, changelistできるぞ - [x] jump changes いらんので消す - [x] チートシートスクロール - [x] チートシート最新になったら、ソース+wikiを修正 - [x] wikiじゃなくて、readmeにプラグインリストとチートシート入れて、折りたたむか? - [x] wikiのプラグイン一覧にリンク入れよう - [x] fzfポップアップのチートシートはreadmeだけでいい - [x] リファクタ、組み込み関数でいいものを治す - [x] リファクタ、ラムダとdictでクロージャまとめて綺麗にする - [x] まとまりを意識して、ソース圧縮 - [x] hi上書きでonedarkにする関数つくる`joshdick/onedark.vim`のimitationつくろう - [x] 見た目かっこよく! - [x] cocのスクロール - [x] マーク修正 - [x] 初期の.vimフォルダない時マーク大丈夫? - [x] quickfix結果->fzf quickfix画面でfuzzy searchすればok - [x] fzf->quickfix grep結果でも動く、quickfix検索中のfzfからもjumpできる - [x] GrepCurrentFile TODOを修正 - [x] Grep TODOを修正 - [x] quickrun プログラム実行 - [x] airline フォーカスでのデザイン修正 - [x] fzf.vim TODOを修正 - [x] typeを統一 - [x] preview機能を修正 - [x] previewスクロール量を多く - [x] fzf preview bufにlineとかでcursor操作できる? - [x] popup win_executeどこまでできる? - [x] mk 全体listに修正 - [x] surround欲しいかも?sがemotionと競合か - [x] RunningCat TODOを修正 - [x] quickフィックスかどうかの判断 - [x] easy motion リファクタ - [x] fzf.vim リファクタ - [x] fzf リファクタ - [x] quick scope リファクタ - [x] quick scope TODOを修正 - [x] quick hl リファクタ - [x] boomarks リファクタ - [x] goyo リファクタ - [x] emotion buf 空行fill 性能アップ - [x] cheat sheetバッファがoldfilesに入ってる->buflistから消すとタブバーからも消えるがまぁいいか... - [x] nnoremap->nmap対応でquiclhl, 検索できてない - [x] fml jump to echo 消える(feekeysのせい) - [x] fzf popup カーソル行のハイライト - [x] easymotion修正 - [x] readmeを見直す - [x] lsp dap 色の再現 - [x] 全部綺麗にしたらデモムービー撮る