Я также получаю катастрофические отказы проводника в Vista (я не нахожусь в версии на 64 бита хотя). Я использую Vista Супер Saijen (или независимо от того, что они называют самую дорогую версию). У меня нет ошибок с Черепахой.
Мой проводник действительно, однако, отказывает о через день (иногда многократно в день, если он имеет "от" дня). Я не положителен, что это вызывается TortoiseSVN все же. Из того, что я слышу, проводник просто отказывает много в Vista...
Вы попытались удалить Черепаху и использовать Windows в течение дня или два и видеть, отказывает ли это все еще? Вы перезапускаете свой компьютер, по крайней мере, один раз в день (Это кажется, чем дольше я иду между перезапусками, тем хуже катастрофические отказы становятся)?
Вы можете определить свое сокращение на «бит», а затем проверить, предшествует ли ему «\», если да, вернуть новый текст или «бит» в противном случае.
function! s:Expr(default, repl)
if getline('.')[col('.')-2]=='\'
return "\<bs>".a:repl
else
return a:default
endif
endfunction
:inoreab bit <c-r>=<sid>Expr('bit', 'foobar')<cr>
Это трюки, которые я использовал в MapNoContext () .
РЕДАКТИРОВАТЬ: см. : h аббревиатуры , чтобы узнать, почему то, что вы просили, не может быть достигнуто напрямую.
EDIT2 : Его можно легко инкапсулировать следующим образом:
function! s:DefIab(nore, ...)
let opt = ''
let i = 0
while i != len(a:000)
let arg = a:000[i]
if arg !~? '<buffer>\|<silent>'
break
endif
let opt .= ' '.arg
let i += 1
endwhile
if i+2 != len(a:000)
throw "Invalid number of arguments"
endif
let lhs = a:000[i]
let rhs = a:000[i+1]
exe 'i'.a:nore.'ab'.opt.' '.lhs.' <c-r>=<sid>Expr('.string(lhs).', '.string(rhs).')<cr>'
endfunction
command! -nargs=+ InoreabBSlash call s:DefIab('nore', <f-args>)
И использовать с простым:
InoreabBSlash <buffer> locbit foobar
или
InoreabBSlash bit foobar
вы могли бы
inoremap \bit replacementtext
Также, если вам не нравится задержка, используйте альтернативный лидер, например обратную кавычку `(для меня над вкладкой)
:iab `f foobar
, если вы не часто используете их в своем коде
Я предлагаю использовать обратную косую черту с обеих сторон, vim доволен этим:
inoreabbr \bit\ replacement_text
Обратите внимание, что я использую "nore" версию abbr, лучше прояснить, если вы не собираетесь рекурсивное расширение. Я использую следующие сокращения в течение долгого времени, и они отлично работают:
inoreabbr \time\ <C-R>=strftime("%d-%b-%Y @ %H:%M")<CR>
inoreabbr \date\ <C-R>=strftime("%d-%b-%Y")<CR>
Вы можете использовать обратную косую черту в качестве префикса для аббревиатуры только в том случае, если за ней стоит только один символ, поэтому : iab \ b replacetext
будет работать.