題 在Vim中不僅重複最後一次更改,還重複其他更改


我怎樣才能重複上次使用的修改(。)而不是更早的修改?

完美的變體將選擇它們 按Ctrl+ñ 和 按Ctrl+P


2
2017-10-04 08:44


起源




答案:


為了擴展@ldigas關於記錄和宏的評論,這是一個簡單的細分。

  1. q 進入“記錄”模式。
  2. 按下你想要“命名”宏的鍵,我通常使用 w ^ 對於一次性使用宏,但您可以使用任何您想要的字母。
  3. 執行您想要重複的操作。
  4. q 停止錄音

獲得宏後,您可以使用它重放它 @w (假設你使用過 w ^),它將滾動您錄製的動作。


4
2017-10-30 21:07



+1我也喜歡 @@ 重複上一次運行宏。 - tidbeck


我不建議重新映射C-N和C-P,因為它們是自動完成映射,並且通常插件使用它們。事實上,我不建議重新映射任何vim的默認映射。但無論如何,這取決於你。

重複一遍,點(。)將重複您在最後一行所做的事情。如果您在使用某些插件重複命令時遇到一些問題,請嘗試使用 repeat.vim 插入。

如果您希望有一些經常使用的操作,請嘗試將其記錄在寄存器中然後播放(“:幫助記錄”),或者將其作為一個功能然後調用該功能(如果您願意,我猜測函數的調用可以作為CN或CP ...)


4
2017-10-04 08:57



qq - 宏ftw =) - akira
q [a-zA-Z]其實:) - Rook
(好的)插件不應該被自定義映射打亂,因為它們可以繞過它們 :noremap - Aaron Thoma


再次擴展映射您的命令重複:
如果你知道沒有視覺反饋你想重複什麼,這個[按Ctrl - ]空間 映射保存了另外幾個鍵擊:

" map in Normal and Visual modes, but not Select mode (see :help mapmode-x
:command -nargs=*  Nxmap      nmap     <args>| xmap     <args>
     com -nargs=*  Nxnoremap  nnoremap <args>| xnoremap <args>
     com -nargs=*  Nxunmap    nunmap   <args>| xunmap   <args>

" map <Space> to currently often-used operations (similar to space.vim)
    " quickly create custom mappings
        " Usage: <C-Space>YOURMAPPING<Enter> and then just <Space> for each repetition
        " (When you know without visual feedback what you want to repeat, this saves another few keystrokes.)
    Nxmap <C-Space> :Nxmap <lt>Space> 

    " make these commands repeatable by <Space> (similar to space.vim)
    let space_repeats_nx = ['@@','@:']
        for cmd in space_repeats_nx
            exe 'Nxnoremap '.cmd.' :Nxnoremap <lt>Space> 'cmd.'<CR>'.cmd
        endfor

0
2018-02-25 04:48





我做了 RepeatLast.vim 插件提供此功能 5\.

它通過啟用宏錄製來工作 每時每刻。因此我不推薦它!但這是我發現可以追溯執行多次重複的唯一方法。如果Vim能夠在內部提供對最近擊鍵的訪問,那將是很棒的。

記得打 q 在執行你想要重複的事情之前是更可取的。


0
2017-10-23 04:19