vim下怎么把一大段代python碼往前移動一個(gè)tab?
問題描述
在vim下粘貼了一大段python代碼,但是從某一行開始全部都多后退了一個(gè)tab,有100多行,我一個(gè)個(gè)手動調(diào)整好了,累個(gè)半死。
請問有沒有辦法更省事點(diǎn)?
問題解答
回答1:在vim里,粘貼代碼之前最好進(jìn)入粘貼模式,這樣就會關(guān)閉自動縮進(jìn)
set paste
將代碼粘貼進(jìn)去之后再關(guān)閉粘貼模式
set nopaste
縮進(jìn)單行代碼是兩個(gè)大于號’>>’回縮就是兩個(gè)小于號’<<’如果想要縮進(jìn)很多行代碼的話就按照下面做
1 //在這里按下’v’進(jìn)入選擇模式111111//光標(biāo)移動到這里,再按一次大于號’>’縮進(jìn)一次,按’6>’縮進(jìn)六次,按’<’回縮。以下同理
function helo{//將光標(biāo)移動到’{’,在按下’%’,光標(biāo)將會移動到匹配的括號//這里省略1000行}//光標(biāo)會移動到這里,再按一次大于號’>’就可以縮進(jìn)回答2:
:10,100>第10行至第100行縮進(jìn):20,80<第20行至第80行反縮進(jìn)
回答3:normal模式下,光標(biāo)在需要處理的起始行,然后:100>>
回答4:1,^V 在需要縮進(jìn)的行前面;2,I;3,tab
回答5:1 按Esc到命令行模式2 移動光標(biāo)到需要處理的開始行3 按v到視圖模式,選中所有需要處理的行4 按Ctrl+<就可以了
回答6:在 Vim 中粘貼要注意,如果 Vim 無法知道你是在粘貼(非 GUI 版本,終端中沒有打開鼠標(biāo)支持或者終端本身不支持鼠標(biāo),因?yàn)?Vim 沒有 X 剪貼板支持而繞過 Vim、使用帶 Shift 鍵的方式讓終端直接粘貼(如往 ssh 中的 Vim 粘貼時(shí)通常 Vim 不能訪問本地剪貼板,所以只能讓終端去「打字」)),那么你需要在粘貼前設(shè)置 ’paste’ 選項(xiàng)。該選項(xiàng)會在插入模式禁用自動縮進(jìn)、映射等。詳見 :h ’paste’
回答7:可以這么玩:假如你是第10行到第100行需要刪除一個(gè)tab,那么可以這么寫:10,100s/^t//就ok了!
回答8:在 vimrc 里面定義好python的各種 tab,例如:
autocmd FileType python set ts=4 | set sw=4 | set expandtab
然后在 normal 模式,直接輸入=njn 是要求自動對齊的行數(shù),不管縮進(jìn)是怎么樣的亂,都會自動對齊
回答9:在下以為 vim 提供的命令都很靈活,但都太底層了。目前所有答主的答案都是硬敲的,難記憶也沒有效率,建議設(shè)置成快捷鍵吧。比如個(gè)人習(xí)慣用tab,選中目標(biāo)區(qū)域然后按快捷鍵即可。
vimlvnoremap <tab> >gvvnoremap <s-tab> <gv
以題主的問題為例。
移動到目標(biāo)區(qū)域的首行輸入 v 進(jìn)入選擇模式輸入 100j 往下移動 100 行,此時(shí)已經(jīng)選取了 100 行目標(biāo)區(qū)域輸入 < tab > 鍵。完~
回答10:提供另一個(gè)方法,不用進(jìn) V 模式。
移動到需要處理的首行,ma
移動到需要處理的末行,<’a
相關(guān)文章:
1. boot2docker無法啟動2. 關(guān)于docker下的nginx壓力測試3. 老師,按tab鍵不起作用怎么回事4. node.js - antdesign怎么集合react-redux對input控件進(jìn)行初始化賦值5. python from fileutils import FileUtils文件操作6. javascript - 在低版本微信如何處理引用高版本的微信小程序基礎(chǔ)庫所帶來的問題?7. mysql - sql數(shù)據(jù)還原8. python - django的model字段在保存的時(shí)候做預(yù)處理怎么辦?9. python - for循環(huán)print怎樣才能輸出csv呢10. node.js mysql Cannot find module "net" 和 "tls"和"fs" 的問題

網(wǎng)公網(wǎng)安備