Vim

在 Emacs 或 Vim 中進行塊編輯 live

  • July 4, 2015

jEdit 支持塊編輯,但 Emacs 和 Vim 在同一主題上似乎存在一些嚴重的可用性問題。如果有人可以在這裡填寫未知數,那麼使用任一編輯器都會更容易忍受:

  • 實際矩形選擇螢幕上的選擇是矩形,而不是線性選擇,然後用於計算 Emacs 似乎僅限於的區域。

    • jEdit:按住Ctrl並選擇。
    • Vim:點擊Ctrl-v並選擇。
    • Emacs:未知;看起來需要一個 400 多行的外掛
  • 實時矩形編輯:在選擇塊後進行編輯時,查看所有行的結果。

    • jEdit:只需開始輸入,您就會看到最終結果。
    • Vim:點擊Shift-i並輸入。將僅在第一行顯示最終結果,直到您按下Esc退出插入模式。未知是否有某種方法可以立即查看所有行的結果。
    • Emacs:未知;看起來唯一的方法是C-x r t在按下後設置要填寫的文本Ret
  • 在文本之外的位置開始和結束選擇:例如,我想刪除每行的前 N ​​個字元,但第一行和最後一行包含少於 N 個字元。

  • 內聯粘貼塊:粘貼複製的塊,就像粘貼多行一樣,例如,將已經存在的文本向下推,不正確。

    • jEdit:預設值。要將塊粘貼為塊,您需要先進行另一個塊選擇。
    • 我來了:O``Esc``V``p
    • Emacs:未知

通用 Emacs 塊選擇功能可以在cua-mode外掛中找到。

我可以回答 Vim,但不能回答 Emacs。

在文本之外的位置開始和結束選擇:

:set virtualedit=block將啟用您想要的行為。如果您願意,您可以刪除初始冒號並將其添加到您的 .vimrc 中。更多資訊,:help 'virtualedit'來自 Vim。

粘貼塊內聯:

如果你只是p在命令模式下點擊,Vim 將插入塊,將字元推到每一行的右側。如果你選擇另一個塊並點擊p,Vim 會用粘貼的塊替換那個塊。

您可以使用命令模式鍵序列“逐行”粘貼塊O``Esc``V``p。這會在目前行上方插入一行 ( O Esc),逐行選擇它 ( V),然後粘貼到它上面 ( p)。您可以將其縮短為(例如)y``p使用諸如:nmap yp O<Esc>Vp– type that 的映射;使用五次擊鍵<Esc>而不是按 Escape 鍵。

引用自:https://unix.stackexchange.com/questions/22590