‘M-x flush-lines’
‘M-x keep-lines’
‘M-x occur’
‘M-x sort-lines’
MoveByVisibleLineCommands - commands to move by visible instead of logical lines (those differs when lines are wrapped)
See BackToIndentationOrBeginning for a way to go to the beginning of the first word on the line; a command helpful to those who miss the Home
key.
See GotoLine for jumping to a line number.
See KillMatchingLines for the power of ‘M-x flush-lines’
combined with KillingText.
Some more advanced commands:
(defun pg-kill-this-line (n) "Kill the line point is on. With prefix arg, kill this many lines starting at the line point is on." (interactive "p") (kill-region (line-beginning-position) (progn (forward-line n) (point))))
(defun pg-duplicate-this-line (n) "Duplicates the line point is on. With prefix arg, duplicate current line this many times." (interactive "p") (save-excursion (copy-region-as-kill (line-beginning-position) (progn (forward-line 1) (point))) (while (< 0 n) (yank) (setq n (1- n)))))
See also MoveLine.
I have some line functions in my .emacs that I thought I’d share:
;;; Take the line from the cursor and move it up a line. (defun move-line-up () (interactive) (let ((beg (point))) (previous-line) (delete-region beg (point)))) (define-key global-map (kbd "\C-c p") 'move-line-up)
;;; A line killing function vaguely similar to vim's dd. (defun kill-line-retain-column () (interactive) (let ((goal-column (truncate temporary-goal-column)) (column (current-column))) ;; Are we on a blank line? (if (= (line-beginning-position) (line-end-position)) (progn (if (= (point) (buffer-end 1)) ;; Just delete the newline character. (backward-delete-char-untabify 1) (kill-line)) (move-to-column goal-column)) (progn ;; Are we on the last line of the buffer? (if (= (line-number-at-pos) (line-number-at-pos (buffer-end 1))) ;; We are, so delete the line and move up. (kill-whole-line -1) (kill-whole-line)) ;; Assign a new temporary goal column. (setq temporary-goal-column column) ;; Retain the column. (move-to-column column))))) (global-set-key [delete] 'kill-line-retain-column)