|
|
||
function! SortLine() range
let lines = []
let cl = a:firstline
while cl <= a:lastline
let line = getline(cl)
call add(lines,line)
let cl += 1
endwhile
let cl = a:firstline
call sort(lines)
for i in lines
call setline(cl,i)
let cl += 1
endfor
endfunction
不細工だ。
いまさら気づいたけど普通にあるじゃねーか
:sort
何か作るにしてもまずヘルプを読めということですね。
Perlでいうところのハッシュ,javascriptの連想配列か。
{ {key} : {value}, ....}
:let dict = {"un": "one", "deux": "two", "trois": "three"}
:echo dict["deux"]
> two
:echo dict.trois
> three
並び的にはリストのそれとよく似ている。Dictionaryだけの関数をいくつか。
:echo keys(dict) > ["deux","trois","un"]
b
Dictionaryのvalue全てを配列に
:echo values(dict) > ["two","three","one"]
keyとvalueをセットにして重配列(そんな言葉あるのか)としてかえす
:echo items(dict) [["deux","two"],["trois","three"],["un","one"]
:echo has_key(dict,"un") > 1 :echo has_key(dict,"cinq") > 0
:let hoge = ["fuga","foo","bar"] :for i in hoge :echo i :endfor > fuga foo bar
javascriptのfor inと同じかと思ったけどinのあとに取れるのはリストのみか。
http://d.hatena.ne.jp/higeorange/20060804/1154676061
で書いたように大文字の要素名で補完されるんだけど、
"<"だけ打って,C-x-oすると小文字の要素名で補完できる。んーこれを何文字か打ったあとにやってくれればなぁ。"</"のあとにC-x-oすればちゃんと閉じてくれるからよしとするか。</ppp>
んでもう一つ気づいたことは,<html>直下では<body>,<head>しかありえないとか,<head>内ではこの要素だけとかをちゃんと考えてくれているんだね。
.vimrc
autocmd FileType html :set filetype=xhtml autocmd Filetype html :set omnifunc=htmlcomplete#CompleteTags
新規にhtmlファイルをつくろうとしたとき
autocmd FileType html :set filetype=xhtml
がエラーとなってしまう。これはやめて,"/usr/share/vim/vim70/autoload/htmlcomplete.vim"の645行目をコメントアウトする方に変更。
:let hoge = [1,2,3] :echo hoge[0] > 1 :echo hoge[-1] "-1は最後の要素 > 3 "リストを展開(perlっぽい) "要素が多かったり少なかったりした場合はエラーがでる。一応展開はされるようだ。 :let [var1,var2,var3] = hoge :echo var1 > 1 :echo var2 > 2 :echo var3 > 3 "リスト連結 :let fuga = hoge + [4,5] :echo fuga > [1,2,3,4,5] "リストの要素を部分的にとりだす :let foo = fuga[1:3] :echo foo > [2,3,4] :let bar = fuga[2:] :echo bar > [3,4,5]
要素を取り出す
:echo get(hoge,2) > 3 :echo get (hoge,6,"null") > null
長さ
:echo len(hoge) > 3
最後に追加
:echo add(hoge,4) > [1,2,3,4]
特定の場所に追加
"insert(リスト,追加する要素,追加する場所) :echo insert(hoge,5,1) > [1,5,2,3,4]
要素を取り除く
:echo remove(hoge,-1) > 4 "[1,5,2,3]
各要素に対してごにょる。
:echo map(hoge,"v:val + 1") > [2,6,3,4]
v:valってのがリストの各要素。
連結
:echo join(hoge,":") > 2:6:3:4
まだまだたくさんあるけどこの辺で終了。
get(),リストの展開
letで宣言。
:let hoge = 1
再代入時もlet。
:let s:huga = 2
ほかにも,
b:name バッファ内ローカル変数 w:name ウィンドウ内ローカル変数 g:name グローバル変数 v:name vim内で定義済み変数
などがあるそうだ。
Spud2011/07/07 19:28Thanks for sahirng. Always good to find a real expert.
dcygbvxesu2011/07/08 17:01L64uk0 <a href="http://ufnsgbmwbydp.com/">ufnsgbmwbydp</a>
eqlisfgak2011/07/09 21:48iMR4Mi , [url=http://amlsalzderls.com/]amlsalzderls[/url], [link=http://zkqsjkczakaf.com/]zkqsjkczakaf[/link], http://tbjlcvxpxhcq.com/
cxdckfc2011/07/10 18:53hKZbPp <a href="http://rwowewdwnffq.com/">rwowewdwnffq</a>