[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/18 19:04 / Filesize : 368 KB / Number-of Response : 974
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Vim6スクリプトお勉強スレ



1 名前:名無しさん@お腹いっぱい。 [01/12/17 12:15]
みんなでスクリプトを覚えよう

879 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/21(月) 19:21:33 ]
日本語全角モードになってたとき
ESC押せば、全角モードも同時に消えるようにするには、
どうしたらいいのだろうか

880 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/05/21(月) 20:30:27 ]
>>879
gvimならこれでいけるけど、コンソールのvimだとむりぽ?

香り屋氏のgvimrcより抜粋

" 日本語入力に関する設定:
"
if has('multi_byte_ime') || has('xim')
  " IME ON時のカーソルの色を設定(設定例:紫)
  highlight CursorIM guibg=Purple guifg=NONE
  " 挿入モード・検索モードでのデフォルトのIME状態設定
  set iminsert=0 imsearch=0
  if has('xim') && has('GUI_GTK')
    " XIMの入力開始キーを設定:
    " 下記の s-space はShift+Spaceの意味でkinput2+canna用設定
    "set imactivatekey=s-space
  endif
  " 挿入モードでのIME状態を記憶させない場合、次行のコメントを解除
  "inoremap <silent> <ESC> <ESC>:set iminsert=0<CR>
endif


881 名前:名無しさん@お腹いっぱい。 [2007/06/04(月) 08:58:22 ]
Hacking Vim: A Cookbook to get the Most out of the Latest Vim Editor (Paperback)
by Kim Schulz (Author)
www.amazon.com/Hacking-Vim-Cookbook-Latest-Editor/dp/1847190936/ref=sr_1_1/104-7688553-6715938?ie=UTF8&s=books&qid=1180914185&sr=8-1

題名のとおり、Vimスクリプトによる拡張やカスタマイズ、その他のディープな機能に的を絞った本らしい。

882 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/04(月) 17:00:40 ]
vimのscriptの勉強をしてます。
:lsした時に取れる、各bufferのstatusってどうやったらvimのscript上から取れるのでしょうか?
例えばイジってあるbufferである+のstatusとか。
一応次ぎのようなscriptで、一覧を取得出来る所までは出来ました。

続く

883 名前:882 mailto:sage [2007/06/04(月) 17:02:26 ]
続き
command! -nargs=? EnumBufs :call <SID>EnumBufs(<f-args>)
function! s:EnumBufs(...)
let arg = "^.*$"
if a:0 == 1
let arg = a:1
endif
let buf_idx = bufnr("$")
let bufnames = []
while buf_idx > 0
try
if ! bufexists(buf_idx) || ! buflisted(buf_idx)
continue
endif
let bufname = bufname(buf_idx)
let bufnum = bufnr(buf_idx)
if bufname =~ arg
call add(bufnames, [ bufnum, bufname ])
endif
finally
let buf_idx -= 1
endtry
endwhile
echo s:list2str(bufnames)
endfunction
続く


884 名前:882 mailto:sage [2007/06/04(月) 17:03:21 ]
続き
function! s:list2str(list)

let output = ""

for buf in a:list
let output .= buf[0] . ":" . buf[1] . "\r\n"
endfor

return output

endfunction
以上


885 名前:882 mailto:sage [2007/06/04(月) 17:06:12 ]
あー、indentが崩れてる。ごめんなさい。。。

886 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/04(月) 23:51:12 ]
>>882
+ &modified
= &modifiable
bufloaded()
&buflisted
h bufwinnr()

statのような便利なものはないのでヘルプを見ながらがんばりんさい。
バッファエクスプローラプラグインはたくさんあるから参考にするといいかも。

887 名前:882 mailto:sage [2007/06/05(火) 23:43:00 ]
出来ました。thx。
ずっと関数だと思って、optionは探していなかったよ。



888 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/06(水) 14:46:24 ]
>>881
amazon.co.jpだと
通常3~5週間以内に発送します
なんだが、もっと早く手に入るところってないかな?

889 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/06(水) 17:58:43 ]
>>881
ebookで買ってみた。
内容は、ディープとまでは感じなかった。Vimスクリプトバリバリ書いてる人は必要なし。
ヘルプにも書いてあるような解説+こう使うと便利になるよというサンプル少々。
>>803のCompleteMailやvim wikiのAutoSaveSessionに似たスクリプトも書いてあった。
やはりこれを買うよりヘルプ、vim wiki、vim onlineのTipsを熟読した方がいいと思う。


890 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/14(木) 12:50:55 ]
質問です.

「文章中にある文字列をもとに 辞書を引く」…というような
スクリプトを書こうとしています.

「カーソル位置の単語を拾い出す」のは expand("<cword>")
で…簡単に作ることができたのですが

でも 調べたい(拾いたい)文字列が 丁度 単語単位とは限らないので
「自分で範囲選択した箇所を スクリプトに渡せるようにしたい」と
考えています.

(小文字の)v キー&範囲選択直後に,
その「選択中の文字列」を 取り出すには どうしたらよいのでしょうか?

<cword> 同様に, 範囲の中身が取り出せるキーワードが
あるような気がするのですが…なかなか探せない....

あるいは 選択範囲の 開始&終了の文字位置 が分かれば
それを手がかりに 取り出せると思うのですが
これもわからない... (どちらも「行単位」なら楽勝なのですが)

…というわけで
何か分かるかた 以上よろしくお願いします.


891 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/14(木) 21:21:08 ]
いったんレジスタにヤンクするのが定石だと思う。

function! Select()
let a_save = @a
normal! gv"ay
let selected=@a
let @a=a_save
return selected
endfunction

function! Dict(word)
echo "「". a:word . "」の意味はわかりません"
endfunction

vnoremap \d <Esc>:call Dict(Select())<CR>


892 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/14(木) 21:34:49 ]

expand('<selected>') みたいなものがあればいいのにな
と思う。

893 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/14(木) 22:43:06 ]
>>891
normal! gv"ay
だけで もう満足です(笑)なるほど
gv って コマンドも 今,知りました
以上 ありがとうございました.


894 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/06/29(金) 16:49:21 ]
>>795
いまさらなんだけど
このヒアドキュメントで関数名と関数定義をとりだして、
関数名をごにょごにょして、スクリプト内の関数にevalさせれば、
外部から動的に関数できる

function! pluginHoge#eval(source_func_name,new_define_name)
 let savelist=&list
 setlocal nolist
 redir => str
 exec "silent function " a:source_func_name
 redir END
 let &list=savelist

 let lines = split(str, '\n')
 let lines[0]=substitute(lines[0],'function[^(]\+',"function! ".a:new_func_name,'')
 let lines = map(lines, 'v:val[3:]')
 let str = join(lines, "\n")

 exec str
endfunction

895 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/18(水) 03:28:53 ]
VimのrangeとPythonのrangeって違うのね。
Vim:
range(2, 3) => [2, 3]
range(2, 2) => [2]
range(2, 1) => []
range(2, 0) => エラー

Python:
range(2, 3) => [2]
range(2, 2) => []
range(2, 1) => []
range(2, 0) => []

896 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 00:45:26 ]
関数名はけっこうアバウト

fun! <SNR>99_func()
endfun
fun! <SNR>func()
endfun
fun! hoge:func()
endfun
fun! hoge::func()
endfun
fun! foo:bar:func()
endfun

897 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/29(日) 23:48:10 0]
>>896 解説キボン



898 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 19:37:54 ]
スクリプトのローカル関数(s:func() or <SID>func())はVim内部では
<SNR>99_func()という名前(数字はスクリプト番号)のグローバル関数になってるんだけど
実は直接 :function <SNR>99_func() と書いて関数を定義できる。(:callもok)
だからスクリプトのローカル関数を外部から変更できてしまう。(ただしs:var変数にはアクセスできなさそう)
let sid = GetSid("plugin.vim") " redir + scriptnames で番号取得
function! <SNR>{sid}_func()
  ...
endfunction
名前が正しいかどうかはチェックしてないみたいなので存在しないスクリプト番号が使えたり番号指定がなくても大丈夫だったりする。
そんで、おそらくs:func()とかが使える関係で関数名にコロンが使えるようになってるけど
その辺の処理は適当らしくてhoge:func()とかfoo:bar:func()とかいう名前も使える。(変数名はダメらしい)
どちらもundocumentedな動作。

899 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 23:12:59 ]
>>898
解説サンクス。
スクリプトローカル関数を外部から変更する方法は欲しいね。
Vim onlineにあるスクリプトはどうもイマイチなのが多くて
手を加えたくなってしまう。

あと話はずれるけど、プラグイン内で勝手にマッピングを
作るのはやめてほしい。
プラグインでは関数定義だけを提供して、.vimrcでそこへのマッピングを
作るのが理想だと思うのだが。
それプラス、
 (iswitchb-default-keybindings)
みたいにマッピングを作る関数を提供するとか。

900 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/06(月) 19:05:18 ]
>>899
もっともな意見なので自作スクリプトを修正するよ。後で。

901 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/06(月) 20:40:46 ]
NERDTreeでは
let g:NERDTreeMapOpenSplit = 'i'
という変数を定義することでOpenSplit機能へマッピングするキーを
変更できるようになってるね。
この辺の作法が統一されればいいんだけど。

902 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/08(水) 06:47:00 ]
:exe "exe \"exe \\\"exe 'new'\\\"\""
どんくらいネストできるんだろw

903 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/13(月) 02:20:25 ]
>>899
>それプラス、
> (iswitchb-default-keybindings)
>みたいにマッピングを作る関数を提供するとか。
いまそれやろうとして気付いたけど、最初に読み込まれるのは~/.vimrcだから、
そういう関数を呼ぼうにもまだ定義されていないという。

と書いてau VimEnter経由で呼べば良いことに気付いた。

904 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/13(月) 09:15:53 ]
関数じゃなくてフラグ変数にすればいいんじゃない?
let g:iswitchb_default_keybindings = 1

905 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/10/15(月) 09:53:15 ]
>>863
これがそうかも。
www.vim.org/scripts/script.php?script_id=513

906 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/10/24(水) 14:38:03 ]
vim 7.1以内で関数名と変数名の扱いで挙動が変わったようだ??

:let Fn=function("A")
:let Fn=function("B")

みたいな関数参照の再代入ができなくなった。E705がでる
場合に応じて関数名を繋ぎかえて動かしてた人は動かなくなる
対策として

:let fnlist=[function("A"),function("B")]

:call call(fnlist[1],[])
:call fnlist[1]()

とか

:let fndict={"A":function("A"),"B":function("B")]

:call call(fndict["A"],[])
:call fndict.A()

とかして、当面は切り抜けるとよいと思う
どっかに変更の記述てあるのか

907 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/10/24(水) 23:48:06 ]
>>906
:let Fn=function("A")
:let Fn=function("B")

エラーでないけど。



908 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/10/25(木) 10:23:47 ]
>>907
うおー別ので試したらでなかった

うちのkaoriyaのwindows gvim7.1 10月13日コンパイルバージョンだけでる

909 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [2007/10/25(木) 23:12:55 ]
7.1.098のパッチの副作用みたいです。香り屋のバージョンでいうと20070831から
20070909の間ですね。

> Patch 7.1.098
> Problem: ":call s:var()" doesn't work if "s:var" is a Funcref. (Andy Wokula)
> Solution: Before converting "s:" into a script ID, check if it is a Funcref.

試しにこのパッチを外してコンパイルしてみたら、エラーがでなくなりました。

910 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/10/26(金) 10:41:40 ]
>>909
ありがとう
当面困ってなかったので古いバージョンに戻しておきます

911 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/10/29(月) 17:00:40 ]
:s//\=/ と eval を組み合わせると簡易テンプレートエンジンになる

たとえば
これが: 今の時間は ${strftime("%c")}
  :%s/${\([^}]*\)}/\=eval(submatch(1))/g
こうなる: 今の時間は 2007/10/29 16:55:21

912 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/10/31(水) 17:21:56 ]
すいません。
現在のカーソル位置が行末がどうかを調べるにはどうすればいいでしょうか?


913 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/10/31(水) 17:30:54 ]
getpos(".")
の現在位置のうちの列と
len(getline("."))
が同じとかどうよ

914 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/10/31(水) 17:54:30 ]
if getpos(".")[2]==strlen(getline(".")) | echo "at the end" | endif
行末の2バイト文字上に、カーソルがあるとダメだった。
# ver7 のヘルプ全然読んでいないから getpos() の戻り値に驚き。w

なんかスゲー面倒。
command! IsEnd call <sid>IsEnd()
function! s:IsEnd()
let ls=getline(".")
if ls==# ''
echo '行末'
else
"カーソル位置から、行末まで全部。
let str=matchstr(ls, '.\+', col('.')-1)
"カーソル位置の1文字
let chr=matchstr(ls, '.', col('.')-1)
if str ==# chr
echo '行末'
else
echo '行末じゃない'
endif
endif
endfunction

915 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/10/31(水) 18:10:13 ]
" >>912
" これでどうだろう?
function! IsTheCursorAtTheEndOfLine()
return search('\%#.$', 'cn')
endfunction

916 名前:912 mailto:sage [2007/10/31(水) 19:55:59 ]
おお!皆さんありがとうございます。
自分で作ったスクリプトが挙動不審だったので皆さんのヤツで試してみます。

更に質問なんですが、現在開いているバッファの数ってどうやって取得するんでしょうか?
何も開いてないかどうかを知れたらそれでいいのですが。

よろしくお願いします。

917 名前:914 mailto:sage [2007/10/31(水) 22:47:10 ]
>>915
それすごいな。
search() のオプションとか知らなかった。



918 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/01(木) 10:29:15 ]
もしかするとこんな感じでやるしかないかな?

function! BufCount()
let cnt = 0
let lastbufnr = bufnr("$")
let i = 1
while i <= lastbufnr
" :lsで表示されるものだけカウントする
if bufexists(i) && buflisted(i)
let cnt += 1
endif
let i += 1
endwhile
return cnt
endfunction

919 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/01(木) 10:33:32 ]
空バッファをカウントしたくないなら条件に↓を追加
&& bufname("%") != ""

920 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/01(木) 12:28:00 ]
バッファのカウントなら tabpagebuflist() 使うといいかもしれない

921 名前:912 mailto:sage [2007/11/01(木) 12:58:22 ]
みなさんありがとうございます。
とりあえずコピペで動いてくれています。

tabpagebuflist()という名前にまた錯乱ぎみなんですが、
VIMはタブとバッファは完全に別物で、
データとビューの関係なんですよね?

あとヘルプによく出てくるウィンドウ(変数でいう「w」)ってのはサーバーの事なんでしょうか?
グローバル(g)との違いが分かりません。


922 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/01(木) 13:21:41 ]
>VIMはタブとバッファは完全に別物で、
>データとビューの関係なんですよね?
そう。ウィンドウは:spなどで分割できるやつのこと。

let w:hoge = 1 とかすると、hogeはそのときのカレントウィンドウでのみ参照可能になる。
:h w: で出てくる。日本語版ヘルプもあるからその辺読むといいよ。
yukihiro.nakadaira.googlepages.com/#vimdoc
:h 41.2 のユーザーマニュアルの方がわかりやすいかな。

923 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/01(木) 13:30:45 ]
こんなんでもよくね

len(filter(range(1,bufnr('$')),"buflisted(v:val) && bufexists(v:val)"))


924 名前:912 mailto:sage [2007/11/01(木) 13:42:57 ]
>>922
ははー、ウインドウはTABや分割された領域単位って事ですね。
って事はグローバル(g)がサーバー(exe)単位ですね。

>>923
・・・ちょっとマニュアルとにらめっこしてきますw

925 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/01(木) 14:15:56 ]
range(1,8) => [1,2,3,4,5,6,7,8]
みたいな配列つくって
それをfilter()でいるものだけ取り出したんだよ
buflited()とbufexists()は真なら1を返すのでandした


filter([1,2,3],1) => [1,2,3]
filter([1,2,3],0) => []
filter([1,2,3,4,5,6],"(v:val % 2) == 0") => [2,4,6]
filter([1,2,3,4,5,6],"(v:val % 2)") => [1,3,5]


926 名前:912 mailto:sage [2007/11/01(木) 14:50:07 ]
なるほど!perlの正規表現でいえば、「e」ですな。
それを全要素に対して処理をしてくれると。

こうやって勉強してみるとVIMスクリプトはしょぼいしょぼい言われているけど、
ネットワーク関連の組込み関数がない(?)ぐらいで、それほどひどかないですよね。


927 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/24(土) 12:25:16 ]
:echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++3



928 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/24(土) 13:04:27 ]
機能という点では何とでもなるけど
exコマンドが元になってるからスクリプト言語としては
根本的に文法が腐ってると思います
まあよしあしですけども

929 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/25(日) 00:24:37 ]
文法なんてこんなもんじゃないかな
いわゆる一つの言語的機能と普通のコマンドが混在してるから慣れが必要だけど

930 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/26(月) 09:15:26 ]
文法はなれれば我慢できるが、exコマンドが元になってるから機能的に腐ってる。
関数によって特殊文字にエスケープが必要だったりそうじゃなかったり。
bunname()とかわけわからん。
オプションの退避とかカーソル、レジスタの復元とか書かせるのも勘弁。

931 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/26(月) 19:50:36 ]
> 関数によって特殊文字にエスケープが必要だったりそうじゃなかったり。
そんな関数あったっけ

932 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/27(火) 13:07:14 ]
bufname() file-patternが展開される。代替ファイルは"#"または0
bufnr() bufname()と同じ。でも"$"で最後のバッファ。
bufexists() 展開されない。代替ファイルはbufexists(0)

vimはCの関数がすでにコマンドべったりで書かれてるからなあ。

933 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/28(水) 01:08:53 ]
なるほど。
他にはなんかある?

934 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/28(水) 10:12:55 ]
winheight(0) => 現在のウィンドウの高さ
winnr(0) => エラー
winnr("%") => エラー
winnr() => 現在のウィンドウの番号
winnr("#") => 最後にアクセスしたウィンドウの番号
winnr("$") => 最後のウィンドウの番号
とか。カレントを表すのも関数によって"%"や"."だったりするけど、
一応バッファが"%"で行が"."になってるのかな。

エスケープについては、関数だけじゃできなくて、文字列を組み立てて :exe
するときがけっこう嫌らしい。

935 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/28(水) 17:17:04 ]
じらさないで全部教えてくれよ(;´Д`)ハァハァ

936 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/28(水) 17:27:46 ]
>>935
:h

937 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/28(水) 18:01:02 ]
:echo +-+-3
:echo 1++-+-3



938 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/29(木) 16:23:03 ]
そういや一時期Ctrl+@にESCあててたな
日本語ノートね

無変換、前候補、かたかな・ひらがな、でもホームに近い余ってるキー
いくらでもあるからな
そういやスペースの両隣のキーにshiftあてるのがエルゴノミクスとか周りではやった

939 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/11/29(木) 17:32:40 ]
本スレと勘違いしたか

940 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/03(月) 00:28:47 ]
バッファの変更と、その内容をフックしたいのですが、できますかね?

941 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/03(月) 02:18:39 ]
インサートモードで入力したテキストだけならこんな感じでできそうだけど。

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

942 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/03(月) 03:03:25 ]
>>940
無理。
FilterReadPreとかで限定的なものはできそうだけど。

>>941
<C-c>されるとInsertLeaveは発行されないよ。

943 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/03(月) 19:17:27 ]
>>940
help {event}

で見合うものを探すのだ

944 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/20(木) 05:10:46 ]
関数名の最初の文字はアンダースコアでも通るみたい。

function! _havesex()
echo "not implemented"
endfunction

945 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/24(月) 20:33:06 ]
>>944
have sex. not implemented w

946 名前:名無しさん@お腹いっぱい。 [2008/01/09(水) 12:26:12 ]
vimのなかでgccでコンパイルするにはどうしたらいいですか?
perlのやり方は調べたら分かったのですが、cについてはgoogle検索でざざーっと
数十件くらいそれっぽいものを見てみても見つかりませんでした。
お願いします。

947 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/09(水) 13:03:15 ]
:set makeprg=gcc\ %
:make



948 名前:名無しさん@お腹いっぱい。 [2008/01/09(水) 15:08:18 ]
>>947
ありがとうございます。希望どおりの動作になりました。

949 名前:名無しさん@お腹いっぱい。 [2008/01/09(水) 22:39:22 ]
:compiler gcc
するとerrorformatを設定してくれるよ

950 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/20(日) 14:57:42 ]
このスレ7年目にしてようやく次スレが見えてきたのかよワロタ

951 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/23(水) 00:18:49 ]
おお、ほんとだ。ようやくだな。
次スレではvim8に突入しちゃうかもな

952 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/23(水) 14:33:17 ]
スレタイは

vim7スクリプトお勉強スレ

なのか、汎用的に

vimスクリプトお勉強スレpart2

なのか

953 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/23(水) 15:32:03 ]
>>952
バージョン入れる必要性はないから後者の方が良いね。
むしろ本スレに統合しても問題ない気もする。分離する必要性ってある?

954 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/01/23(水) 16:46:31 ]
>>953
あんまりないな

最初は珍しかったから「お勉強」ということだったんだろう
スレの最初の方のレスの流れをみてもそうだけど

955 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/02/17(日) 14:46:07 ]
>>951-953
次スレを
vim7スクリプトお勉強スレ
にしても
次々スレが
vim8スクリプトお勉強スレ
になって(ry

956 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/02/20(水) 23:37:56 ]
Vim Part15
pc11.2ch.net/test/read.cgi/unix/1202050038/

953の言ってるとおり↑でいいべ

957 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/02/22(金) 18:56:26 ]
>>955
そいつはめでてーなぁ



958 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 01:02:27 ]
Windowsのvim7のinputlist()っていう選択肢の中から選ばせる関数使うと、

*********(<Enter> でキャンセル)

ってメッセージが表示されるんだけど、
Enter押すと、最初の項目が選択されたことになってる。(0が返ってくる)
これって仕様ということでいいのかな?

959 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/07(金) 01:54:06 ]
サンプルコードを見ると、最初の要素はプロンプト的な使い方をするぽい

960 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/08(土) 21:03:02 ]
ほー、なるほど

961 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/09(日) 02:42:55 ]
vim6を使っているけどrenamer.vimがうらやましかったので
6でも動くようにパッチしてみた。

よかったらどうぞ

ttp://sakuratan.ddo.jp/uploader/source/date73498.gz

962 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/15(火) 18:37:36 ]
>>911
command! -range=% TemplateEngine <line1>,<line2>substitute/#{\(.\{-}\)}/\=eval(submatch(1))/g

コマンドにしておくと便利

963 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/19(土) 18:18:32 ]
>>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のマップは外しています。宜しく、お願いします。


965 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/24(木) 23:22:12 ]
:h mapleader

966 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/25(金) 23:50:00 ]
>>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もキーマップは定義
    していないのですが。

    済みません。宜しくお願いします。





968 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/26(土) 09:04:38 ]
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`

どうかよろしくお願いします。

971 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/26(土) 22:41:23 ]
>>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>?

972 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/27(日) 00:00:11 ]
>>970
let tmp = system("put")

redir => tmp
put
redir END

上か下、どちらかでいけるよ。
どちらが使えるかは、put次第

973 名前:名無しさん@お腹いっぱい。 [2008/04/27(日) 10:32:29 ]
>971
    詳しい説明、有り難う御座います。何となく、mapとremapの違いが分
    かった様な気がします。
>965
    確かに、mapを指定するのでは無くてmapleaderの設定を変更した方が
    早いかも知れません。







[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<368KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef