chức năng
Utility mà bạn có thể sử dụng cho porpuses khác
" Utility function that save last search and cursor position
" http://technotales.wordpress.com/2010/03/31/preserve-a-vim-function-that-keeps-your-state/
" video from vimcasts.org: http://vimcasts.org/episodes/tidying-whitespace
if !exists('*Preserve')
function! Preserve(command)
try
" Preparation: save last search, and cursor position.
let l:win_view = winsaveview()
let l:old_query = getreg('/')
silent! execute 'keepjumps ' . a:command
finally
" Clean up: restore previous search history, and cursor position
call winrestview(l:win_view)
call setreg('/', l:old_query)
endtry
endfunction
endif
Dưới đây là giải pháp sử dụng các chức năng trên, lợi thế của nó: Liệu không chiếm bất kỳ thanh ghi nào
" join lines without moving the cursor (gJ prevent adding spaces between lines joined)
nnoremap J :call Preserve("exec 'normal! J'")<cr>
nnoremap gJ :call Preserve("exec 'normal! gJ'")<cr>
BTW: Nhiều hơn hai ví dụ về cách bạn có thể sử dụng Preserve chức năng
"Hủy bỏ thêm dấu cách ở cuối ONF dòng
fun! CleanExtraSpaces()
call Preserve('%s/\s\+$//ge')
endfun
com! Cls :call CleanExtraSpaces()
au! BufwritePre * :call CleanExtraSpaces()
" Reident toàn bộ tập tin
call Preserve('exec "normal! gg=G"')
Đây chính xác là những gì tôi đang tìm kiếm. Cảm ơn! Tôi chỉ còn một yêu cầu nữa thôi. Bạn có thể nhanh chóng giải thích những gì các mảnh sau khi J đang làm gì? – cledoux
Heh, tôi đã chỉnh sửa nó như bạn đã bình luận. :) –
Đây là một câu hỏi vimscript ngớ ngẩn chung nhưng tôi cảm thấy thích hợp: Phạm vi bị ô nhiễm với biến 'p' là gì? Đây có phải là thứ có khả năng gây ra lỗi cấu hình lạ không? Có một lý do chính đáng để không đặt tên cho nó một cái gì đó cụ thể hơn nhiều (và ít dễ bị va chạm tên biến) hơn là 'p'? –