vim 使用技巧

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

" 在编辑的时候,我经常需要暂时离开当前的位置作一些操作后再返回原处.虽然m和'命令

" 但是一个寄存器只能保存一项内容,假如我需要保存多项当前位置就必须要用多个寄存

" 器并记住其保存顺序,才能正确返回.我只想把自己的注重力放在要编辑的内容上,而不

" 是去费力地记住这些东西.我希望寄存器能像堆栈一样工作,安照后进先出的顺序处理

" 保存的多项位置.

" 我用一个字符串来模拟堆栈的行为,各项之间用符号#分开.入栈时,将内容追加到字符串

" 的右边;出栈时,取出从右边开始的第一个#开始的子串.

2004-12-21 17:48:24

" 在编辑的时候,我经常需要暂时离开当前的位置作一些操作后再返回原处.虽然m和'命令

" 但是一个寄存器只能保存一项内容,假如我需要保存多项当前位置就必须要用多个寄存

" 器并记住其保存顺序,才能正确返回.我只想把自己的注重力放在要编辑的内容上,而不

" 是去费力地记住这些东西.我希望寄存器能像堆栈一样工作,安照后进先出的顺序处理

" 保存的多项位置.

" 我用一个字符串来模拟堆栈的行为,各项之间用符号#分开.入栈时,将内容追加到字符串

" 的右边;出栈时,取出从右边开始的第一个#开始的子串.

function! PushPosition()

let l:locate = line(".") . "." . col(".")

if !exists("s:position_heap")

let s:position_heap = "#" . l:locate

else

let s:position_heap = s:position_heap . "#" . l:locate

endif

echo "push position:" . l:locate

endfunction

function! PopPosition()

if !exists("s:position_heap")

return

endif

let l:last_push = strridx(s:position_heap, "#")

if l:last_push == -1

return

else

let l:position = strpart(s:position_heap, l:last_push + 1)

let l:row = strpart(l:position, 0, stridx(l:position, "."))

let l:column = strpart(l:position, stridx(l:position, ".") + 1)

call cursor(l:row, l:column)

let s:position_heap = strpart(s:position_heap, 0, l:last_push)

endif

endfunction

---------------

这是我自己写的VIM两个函数,放在plugin目录下。

在查看程序代码时很有用。

我将这两个函数调用绑定在F9和CTRL+F9上,当碰到要记录位置时,就F9,F9,...,需要返回原点时就CTRL+F9,CTRL+F9,...

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航