bufname() file-patternが展開される。代替ファイルは"#"または0
bufnr() bufname()と同じ。でも"$"で最後のバッファ。
bufexists() 展開されない。代替ファイルはbufexists(0)
vimはCの関数がすでにコマンドべったりで書かれてるからなあ。
なるほど。
他にはなんかある?
winheight(0) => 現在のウィンドウの高さ
winnr(0) => エラー
winnr("%") => エラー
winnr() => 現在のウィンドウの番号
winnr("#") => 最後にアクセスしたウィンドウの番号
winnr("$") => 最後のウィンドウの番号
とか。カレントを表すのも関数によって"%"や"."だったりするけど、
一応バッファが"%"で行が"."になってるのかな。
エスケープについては、関数だけじゃできなくて、文字列を組み立てて :exe
するときがけっこう嫌らしい。
じらさないで全部教えてくれよ(;´Д`)ハァハァ
:echo +-+-3
:echo 1++-+-3
そういや一時期Ctrl+@にESCあててたな
日本語ノートね
無変換、前候補、かたかな・ひらがな、でもホームに近い余ってるキー
いくらでもあるからな
そういやスペースの両隣のキーにshiftあてるのがエルゴノミクスとか周りではやった
本スレと勘違いしたか
バッファの変更と、その内容をフックしたいのですが、できますかね?
インサートモードで入力したテキストだけならこんな感じでできそうだけど。
augroup meso
au!
au InsertEnter * call InsertEnterCB()
au InsertLeave * call InsertLeaveCB()
augroup END
function! InsertEnterCB()
let g:modified_save = &modified
set nomodified
endfunction
function! InsertLeaveCB()
if &modified
echomsg "inserted text='". @. ."'"
endif
let &modified = g:modified_save
endfunction
>>940 無理。
FilterReadPreとかで限定的なものはできそうだけど。
>>941 <C-c>されるとInsertLeaveは発行されないよ。
>>940 help {event}
で見合うものを探すのだ
関数名の最初の文字はアンダースコアでも通るみたい。
function! _havesex()
echo "not implemented"
endfunction
>>944 have sex. not implemented w
946 :
名無しさん@お腹いっぱい。:2008/01/09(水) 12:26:12
vimのなかでgccでコンパイルするにはどうしたらいいですか?
perlのやり方は調べたら分かったのですが、cについてはgoogle検索でざざーっと
数十件くらいそれっぽいものを見てみても見つかりませんでした。
お願いします。
:set makeprg=gcc\ %
:make
948 :
名無しさん@お腹いっぱい。:2008/01/09(水) 15:08:18
>>947 ありがとうございます。希望どおりの動作になりました。
949 :
名無しさん@お腹いっぱい。:2008/01/09(水) 22:39:22
:compiler gcc
するとerrorformatを設定してくれるよ
このスレ7年目にしてようやく次スレが見えてきたのかよワロタ
おお、ほんとだ。ようやくだな。
次スレではvim8に突入しちゃうかもな
スレタイは
vim7スクリプトお勉強スレ
なのか、汎用的に
vimスクリプトお勉強スレpart2
なのか
>>952 バージョン入れる必要性はないから後者の方が良いね。
むしろ本スレに統合しても問題ない気もする。分離する必要性ってある?
>>953 あんまりないな
最初は珍しかったから「お勉強」ということだったんだろう
スレの最初の方のレスの流れをみてもそうだけど
>>951-953 次スレを
vim7スクリプトお勉強スレ
にしても
次々スレが
vim8スクリプトお勉強スレ
になって(ry
Windowsのvim7のinputlist()っていう選択肢の中から選ばせる関数使うと、
*********(<Enter> でキャンセル)
ってメッセージが表示されるんだけど、
Enter押すと、最初の項目が選択されたことになってる。(0が返ってくる)
これって仕様ということでいいのかな?
サンプルコードを見ると、最初の要素はプロンプト的な使い方をするぽい
ほー、なるほど
>>911 command! -range=% TemplateEngine <line1>,<line2>substitute/#{\(.\{-}\)}/\=eval(submatch(1))/g
コマンドにしておくと便利
>>962 で、この TemplateEngine コマンドは
如何に使うとよかですか?
964 :
名無しさん@お腹いっぱい。:2008/04/24(木) 23:04:43
tcvime.vimの文字ヘルプを使う時は、<Leader>?を入力します。この場
合の<leader>のデフォルトは<C-K>です。この<C-K>?を
tcode_cp932.vimのjfjにマップしたいのですが、下記のマップでは動作
しません。何が悪いのでしょうか?
jfj<tab>~K?
勿論fjのマップは外しています。宜しく、お願いします。
:h mapleader
>>964 tcvime.vimで<Leader>?にマップされてる文字ヘルプは、
Normal Mode時にカーソル位置にある文字の入力方法を表示する機能ですが、
Insert Mode用keymap(tcode_cp932.vim)のjfjにマップして、
どういう動作を期待してます?
Insert Modeでjfjと打ったら直前の文字のヘルプを表示して欲しいのでしょうか?
967 :
名無しさん@お腹いっぱい。:2008/04/26(土) 07:38:23
>966
失礼しました。もしかしたら、keymapのファイルはInsert Mode用に
定義されているのですか?私は、全てのモードに定義されていると思
っていた物ですから。やりたい事は、ノーマルモードで、jfjを^K?に
マップしたい。
例えば、nmap jfj ^Kqは動作するが、若しもの事を考慮してnnoremap
jfj ^?と定義すると、何故か動きません。jもfもキーマップは定義
していないのですが。
済みません。宜しくお願いします。
keymapは主にInsert mode用です(lnoremapされるものです。mbyte-keymapのヘルプ参照)。
Normal modeで<C-K>?にマップされている機能を別のキーにマップしたい場合は、
nnoremapではなくnmapを使います(nnoremapとnmapのヘルプ参照)。
:nmap jfj <C-K>?
969 :
名無しさん@お腹いっぱい。:2008/04/26(土) 10:40:22
>968
mbyte-keymapのヘルプを読んだが、今一つnmapとnnoremapとの違いが
分からない。この場合、nnoremapが動かないのは、再定義するキー
マップが無いからなのだろうか?
逆に、考えると確実にそのキーマップが存在していないと、nnoremap
は動かないと考えるべきなのか。私が、nnoremapにこだわるのは何処
でキーマップを使うか分からないので、誤動作を防ぎたい。それだけ
の理由ですが、逆にこれが動かない結果となる。原因が分からな
い。
宜しく、お願いします。
970 :
名無しさん@お腹いっぱい。:2008/04/26(土) 19:27:08
質問をさせてください。
コマンドの結果を変数に保存する場合、どのような記述をすれば良いのでしょうか。
以下が、やりたい事をvim の疑似言語で表したものです。
ここでは、:put を実行した時に出力される内容を変数に格納したいです
let tmp = `put`
どうかよろしくお願いします。
>>969 <C-K>?はtcvimeによってマップされているキーなのでnmapを使う必要があります。
:nmap jfj <C-K>?
としてjfjを打った場合、
以下の例のように<C-K>?はさらに展開されるので、tcvimeの関数が呼び出されます。
jfj → <C-K>? → :<C-U>call <SNR>4_ShowStrokeHelp()<CR>
一方、
:nnoremap jfj <C-K>?
としてjfjを打った場合、<C-K>?は展開されないので、
tcvimeの機能は呼び出されません。
jfj → <C-K>?
>>970 let tmp = system("put")
redir => tmp
put
redir END
上か下、どちらかでいけるよ。
どちらが使えるかは、put次第
973 :
名無しさん@お腹いっぱい。:2008/04/27(日) 10:32:29
>971
詳しい説明、有り難う御座います。何となく、mapとremapの違いが分
かった様な気がします。
>965
確かに、mapを指定するのでは無くてmapleaderの設定を変更した方が
早いかも知れません。
保守
保守
保守
保守
保守
保守
保守
急に更新しているから、なんだだと思えば、埋めか?
このスレは、6年半も使われていたんだよな。