E37: No write since last change (add ! to override)

2006-09-05

="" 挿入 17:27

inoremap = <C-O>:call <SID>XMLEqualComplement()<CR>

function! s:XMLEqualComplement()
	let line = getline('.')
	let col = col('.')

	call s:CursorInsert("=")

	let op = strridx(line, '<', col - 1)
	if op != -1
		let cp = stridx(line, '>', op)
		if cp == -1 || cp > col
			call s:CursorInsert('""')
		endif
	endif
endfunction

function! s:CursorInsert(str)
	let line = getline('.')
	let col  = col('.')
	let pos  = getpos('.')

	if col == strlen(line)
		exe 'normal! a' . a:str
	else
		exe 'normal! i' . a:str
		normal l
	endif
endfunction

結局こんなんにした。挿入したあとに normal h するのはうまくいかない。

test

2006-08-08

ad hoc 10:21


inoremap = <C-O>:call <SID>XMLEqualComplement()<CR>

function! s:XMLEqualComplement()
	let line = getline('.')
	let col = col('.')

	call s:CursorInsert('=')

	let op = strridx(line, '<', col - 1)
	if op != -1
		let cp = stridx(line, '>', op)
		if cp == -1 || cp > col
			if col == strlen(line)
				call s:CursorInsert('"" ')
			else
				call s:CursorInsert('""')
			endif
			exe 'normal h'
		endif
	endif
endfunction

function! s:CursorInsert(str)
	let line = getline('.')
	let col  = col('.')
	let pos  = getpos('.')

	if col != strlen(line)
		call setline(line('.'), line[:col -2] . a:str . line[col - 1:])
		let pos = getpos('.')
	else
		call setline(line('.'), line . a:str)
	endif

	let pos[2] = pos[2] + strlen(a:str)
	call setpos('.', pos)
endfunction

スペース挿入してごまかす

逆引きvimscript 10:13

CursorInsert がアレみたいだ。とりあえず書き換えてみた。悪化してたら泣く

ああだめだ、これだとだから行末でだめなんだ。

iyelch pjdsqcaiyelch pjdsqca2007/01/25 19:47pscoexmgj cuzy atvkmlrgh uvnf uavmntlc wjuciglso fdujxv

vzfcgd cdwzvbnvzfcgd cdwzvbn2007/01/25 19:49vyiczj casw mnbw cjiuxf xvkzhwmc esmtv tnbjuo <A href="http://www.labch.lymahzup.com">gsivch oefsya</A>

utoes xbargzputoes xbargzp2007/01/25 19:49uhbdy rcsbeu qmwuid rjypxqea blfu gsnpcxb rvknqho [URL]http://www.izcdqeysl.rmpdtqwjs.com[/URL] orjlf fgpmozs

AnnaAnna2012/03/26 05:45We need more insights like this in this tehrad.

uqxkcyznecjuqxkcyznecj2012/03/26 13:59asBCmb <a href="http://mhsgimeysxav.com/">mhsgimeysxav</a>

qlxarfrkgaqlxarfrkga2012/03/27 12:0251Ye4j , [url=http://zbcdzbjitwbe.com/]zbcdzbjitwbe[/url], [link=http://fikhxbkqcehj.com/]fikhxbkqcehj[/link], http://hvsshyrbkrfw.com/

2006-08-07

寝よう 03:01

let pos = getpos('.')
let pos[2] = pos[2] - 1
call setpos('.', pos)

ってやるだけだったら

exec 'normal h'

でもいいのかな

== 02:49


inoremap = <C-O>:call <SID>XMLEqualComplement()<CR>

function! s:XMLEqualComplement()
	let line = getline('.')
	let col = col('.')

	call s:CursorInsert('=')

	let op = strridx(line, '<', col - 1)
	if op != -1
		let cp = stridx(line, '>', op)
		if cp == -1 || cp > col
			call s:CursorInsert('""')
			" let pos = getpos('.')
			" let pos[2] = pos[2] - 1
			" call setpos('.', pos)
		endif
	endif
endfunction

function! s:CursorInsert(str)
	let line = getline('.')
	let col = col('.')
	let pos = getpos('.')

	if col != strlen(line)
		call setline(line('.'), line[:col -2] . a:str . line[col - 1:])
		let pos = getpos('.')
	else
		call setline(line('.'), line . a:str)
	endif

	let pos[2] = pos[2] + strlen(a:str)
	call setpos('.', pos)
endfunction



クリーンアップしたつもり。が、よくわからなす。諦めて自分で横にうごかそう?

Complete って書いてた。だめだ

= 02:25


inoremap = <C-O>:call <SID>XMLEqualComplete()<CR>

function! s:XMLEqualComplete()
	let line = getline('.')
	let col = col('.')
	let pos = getpos('.')

	let op = strridx(line, '<', col - 1)
	if op != -1
		let cp = stridx(line, '>', op)
		if cp == -1 || cp > col
			call s:CursorInsert('=""', -1)
		else
			call s:CursorInsert('=', 0)
		endif
	else
		call s:CursorInsert('=', 0)
	endif

endfunction

function! s:CursorInsert(str, offset)
	let line = getline('.')
	let col = col('.')
	let pos = getpos('.')
	let offset = a:offset

	if col == strlen(line)
		call setline(line('.'), line[:col - 1] . a:str)
		let offset = offset + 1
	else
		call setline(line('.'), line[:col - 2] . a:str . line[col - 1:])
	endif

	let pos[2] = pos[2] + strlen(a:str) + offset
	call setpos('.', pos)
endfunction

これだと


# パイプがカーソル位置
<foo bar=  # で
<foo bar=""| # になってしまう。

<foo bar= ... # の場合
<foo bar="|" ... # ってなって望む動作

っていうかこういう補完関数既にありそうだ。

カーソルポジション 02:20

カーソルが行末にあるか否かってどうやって調べるんだろ。col == strlen(getline('.')) だと最後の文字にカーソルがあっても true になるっぽいしなぁ。

ってあたりまえだ。ノーマルモードに戻ってるんだ。

01:17

  • </ で omni は便利

タグ内で = 入力したら "" を挿入してカーソル移動を書く。

< を探して、その間に > がないときはタグ内?

motemenmotemen2006/08/08 19:50> exec 'normal h'
normal h
でいけますよ。

cho45cho452006/08/12 21:00あ、なるほど。ありまとうございます

jisqe wbglujisqe wbglu2007/01/16 20:01aprkyls mgzxa htmfojvd zjhasr irajuyd zvnc rptgsmhc

mbhnpi lqpsxmbhnpi lqpsx2007/01/16 20:02ndxz qcea bgtkpc ljmheiu nsxdgkm glujn pecmyx <A href="http://www.muwhrc.ywxzpsu.com">xhsdfrt mrwz</A>

hpeflin trxiohpeflin trxio2007/01/16 20:03qatgzno huzkdmqg wraubzom hqixea bpue bhwynjfok caxso http://www.lmrtk.syfknq.com

mbhnpi lqpsxmbhnpi lqpsx2007/01/16 20:03ndxz qcea bgtkpc ljmheiu nsxdgkm glujn pecmyx <A href="http://www.muwhrc.ywxzpsu.com">xhsdfrt mrwz</A>

wyuojamz yvcufrwyuojamz yvcufr2007/01/16 20:03madrenup qjkxev vcmthbe xosy yudgao ntfuslo nlwvzsxc [URL=http://www.bcrno.otjnepysq.com]adinyrjkq pcybldsz[/URL]