vim下怎么把一大段代python碼往前移動一個tab?
問題描述
在vim下粘貼了一大段python代碼,但是從某一行開始全部都多后退了一個tab,有100多行,我一個個手動調整好了,累個半死。
請問有沒有辦法更省事點?
問題解答
回答1:在vim里,粘貼代碼之前最好進入粘貼模式,這樣就會關閉自動縮進
set paste
將代碼粘貼進去之后再關閉粘貼模式
set nopaste
縮進單行代碼是兩個大于號’>>’回縮就是兩個小于號’<<’如果想要縮進很多行代碼的話就按照下面做
1 //在這里按下’v’進入選擇模式111111//光標移動到這里,再按一次大于號’>’縮進一次,按’6>’縮進六次,按’<’回縮。以下同理
function helo{//將光標移動到’{’,在按下’%’,光標將會移動到匹配的括號//這里省略1000行}//光標會移動到這里,再按一次大于號’>’就可以縮進回答2:
:10,100>第10行至第100行縮進:20,80<第20行至第80行反縮進
回答3:normal模式下,光標在需要處理的起始行,然后:100>>
回答4:1,^V 在需要縮進的行前面;2,I;3,tab
回答5:1 按Esc到命令行模式2 移動光標到需要處理的開始行3 按v到視圖模式,選中所有需要處理的行4 按Ctrl+<就可以了
回答6:在 Vim 中粘貼要注意,如果 Vim 無法知道你是在粘貼(非 GUI 版本,終端中沒有打開鼠標支持或者終端本身不支持鼠標,因為 Vim 沒有 X 剪貼板支持而繞過 Vim、使用帶 Shift 鍵的方式讓終端直接粘貼(如往 ssh 中的 Vim 粘貼時通常 Vim 不能訪問本地剪貼板,所以只能讓終端去「打字」)),那么你需要在粘貼前設置 ’paste’ 選項。該選項會在插入模式禁用自動縮進、映射等。詳見 :h ’paste’
回答7:可以這么玩:假如你是第10行到第100行需要刪除一個tab,那么可以這么寫:10,100s/^t//就ok了!
回答8:在 vimrc 里面定義好python的各種 tab,例如:
autocmd FileType python set ts=4 | set sw=4 | set expandtab
然后在 normal 模式,直接輸入=njn 是要求自動對齊的行數,不管縮進是怎么樣的亂,都會自動對齊
回答9:在下以為 vim 提供的命令都很靈活,但都太底層了。目前所有答主的答案都是硬敲的,難記憶也沒有效率,建議設置成快捷鍵吧。比如個人習慣用tab,選中目標區域然后按快捷鍵即可。
vimlvnoremap <tab> >gvvnoremap <s-tab> <gv
以題主的問題為例。
移動到目標區域的首行輸入 v 進入選擇模式輸入 100j 往下移動 100 行,此時已經選取了 100 行目標區域輸入 < tab > 鍵。完~
回答10:提供另一個方法,不用進 V 模式。
移動到需要處理的首行,ma
移動到需要處理的末行,<’a
相關文章:
