参考ソース (defun beginning-of-buffer (&optional arg) "Move point to the beginning of the buffer; leave mark at previous position.With arg N, put point N/10 of the way from the true beginning.Don't use this in Lisp programs!\(goto-char (point-min)) is faster and does not set the mark." (interactive "P") (push-mark) (goto-char (if arg (if (> (buffer-size) 10000) ; Avoid overflow for large buffer sizes! (* (prefix-numeric-value arg) (/ (buffer-size) 10)) (/ (+ 10 (* (buffer-size) (prefix-numeric-value arg))) 10)) (point-min))) (if arg (forward-line 1)))