■掲示板に戻る■ 1- 最新10

vim6

[303:300 (2001/07/26(木) 23:16)]
>>302
私が建てた説(爆)


[304:名無しさん@お腹いっぱい。 (2001/07/27(金) 06:26)]
何故突然Haskell話に(藁


[305:名無しさん@お腹いっぱい。 (2001/07/27(金) 18:46)]
何度もHaskell話で申し訳ない(wara
*.lhsファイル(*.hsとは違ってシェルから動かせるヤツ?)の
syntaxがおかしい、とかエラーを返されたような。
寝ぼけていたので良く覚えていませんが…?
再現性あったら報告しますね。


[306:名無しさん@お腹いっぱい。 (2001/07/28(土) 01:37)]
vim スクリプトの setline() てすごく便利なんですけど
これと似たような関数で文字列をバッファに挿入する関数ってないですか?


[307:KoRoN (2001/07/28(土) 07:49)]
>>306
:he append()っていうことでお願いします。
{lnum}に0を指定すれば先頭行に挿入できます。


[308:306 (2001/07/28(土) 11:54)]
>>307
ありがとう。

もうひとつお願い。
vim script で配列ってどうやって使うの?
eval.txt 見ても "string"[num] で char を返すとかしかなかったし、、、
普通に C みたいに配列を使いたいのだけど


[309:KoRoN (2001/07/28(土) 13:18)]
>>308
vim scriptに配列を扱う機能はありません。しかしエミュレートすることは可能です。
1つはScratchバッファ(:set bt=nofile)を配列代わりに使う方法。
もう1つは下記に示すようなスクリプトを使う方法です(:help cury-brace-names)。

後者の場合、連想配列も同時にエミュレートできます。
ループで回したい等の場合にはもうちょっと工夫が必要になりますが、
用途によって工夫の仕方が違ってくるので、それは自分でやってみてください。

function! SetArrayValue(name, index, value)
let {a:name}_{a:index} = a:value
return a:value
endfunction

function! GetArrayValue(name, index)
return {a:name}_{a:index}
endfunction


[310:306 (2001/07/28(土) 14:14)]
>>309

返答ありがとう。ただ、自分のやりたかったことが配列必要かと思ってたけど、
配列使わなくてもできてしまった。ちょっとした文字列の操作に配列のようなものは
使わずに済ませられるみたいですね。

因みに HTML でテーブルを生成するスクリプト書いてました。↓table.vim


[311:306 (2001/07/28(土) 14:16)]
" 使い方
" セルの中身を1行につき一つずつ書き並べる
" (注:表の左から右、上段から下段に向かって書き並べる)
" (このファイルを :source して):Table X Y で横 X 縦 Y の表が完成する
"
" 例:
"
" A ← ここで :Table 3 2 で
" B
" C
" D ↓ こうなる
" E
" F
"
" <table>
" <tr><td>A<td>B<td>C
" <tr><td>D<td>E<td>F
" </table>
"
function! Maketable( table_x, table_y )
let tx = a:table_x
let ty = a:table_y
if ( tx <= 0 || ty <= 0 )
echo "引数は自然数でなくてはなりません"
return 0
endif
let curline = line( "." )
let line_number = line( "$" )
if( line_number < curline + tx * ty - 1 )
echo "指定が EOF を超えています"
return 0
endif
let ty2 = 0
while( ty != ty2 )
let tx2 = 0
let tdstr = "<tr>"
while( tx != tx2 )
let addtdstr = getline( curline + ty2 * tx + tx2 )
let tdstr = tdstr . "<td>" . addtdstr
let tx2 = tx2 + 1
endwhile
call setline( curline + ty2, tdstr )
let ty2 = ty2 + 1
endwhile
call append( curline - 1, "<table>" )
let curline = line( "." )
call append( curline + ty2 - 1, "</table>" )
if( tx > 1 )
exe "normal! " ty + 1 . "j"
exe "normal! " tx * ty - ty . "dd"
endif
endfunction
command! -nargs=* Table call Maketable(<f-args>)


[312:名無しさん@お腹いっぱい。 (2001/07/28(土) 20:58)]
migemo使いたいなー。


次10 前10 最新10
NAME:MAIL:

read.cgi ver5.26+ (01/10/21-)