vim下怎么把一大段代python碼往前移動(dòng)一個(gè)tab?
問題描述
在vim下粘貼了一大段python代碼,但是從某一行開始全部都多后退了一個(gè)tab,有100多行,我一個(gè)個(gè)手動(dòng)調(diào)整好了,累個(gè)半死。
請(qǐng)問有沒有辦法更省事點(diǎn)?
問題解答
回答1:在vim里,粘貼代碼之前最好進(jìn)入粘貼模式,這樣就會(huì)關(guān)閉自動(dòng)縮進(jìn)
set paste
將代碼粘貼進(jìn)去之后再關(guān)閉粘貼模式
set nopaste
縮進(jìn)單行代碼是兩個(gè)大于號(hào)’>>’回縮就是兩個(gè)小于號(hào)’<<’如果想要縮進(jìn)很多行代碼的話就按照下面做
1 //在這里按下’v’進(jìn)入選擇模式111111//光標(biāo)移動(dòng)到這里,再按一次大于號(hào)’>’縮進(jìn)一次,按’6>’縮進(jìn)六次,按’<’回縮。以下同理
function helo{//將光標(biāo)移動(dòng)到’{’,在按下’%’,光標(biāo)將會(huì)移動(dòng)到匹配的括號(hào)//這里省略1000行}//光標(biāo)會(huì)移動(dòng)到這里,再按一次大于號(hà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 移動(dòng)光標(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)會(huì)在插入模式禁用自動(dòng)縮進(jìn)、映射等。詳見 :h ’paste’
回答7:可以這么玩:假如你是第10行到第100行需要?jiǎng)h除一個(gè)tab,那么可以這么寫:10,100s/^t//就ok了!
回答8:在 vimrc 里面定義好python的各種 tab,例如:
autocmd FileType python set ts=4 | set sw=4 | set expandtab
然后在 normal 模式,直接輸入=njn 是要求自動(dòng)對(duì)齊的行數(shù),不管縮進(jìn)是怎么樣的亂,都會(huì)自動(dòng)對(duì)齊
回答9:在下以為 vim 提供的命令都很靈活,但都太底層了。目前所有答主的答案都是硬敲的,難記憶也沒有效率,建議設(shè)置成快捷鍵吧。比如個(gè)人習(xí)慣用tab,選中目標(biāo)區(qū)域然后按快捷鍵即可。
vimlvnoremap <tab> >gvvnoremap <s-tab> <gv
以題主的問題為例。
移動(dòng)到目標(biāo)區(qū)域的首行輸入 v 進(jìn)入選擇模式輸入 100j 往下移動(dòng) 100 行,此時(shí)已經(jīng)選取了 100 行目標(biāo)區(qū)域輸入 < tab > 鍵。完~
回答10:提供另一個(gè)方法,不用進(jìn) V 模式。
移動(dòng)到需要處理的首行,ma
移動(dòng)到需要處理的末行,<’a
相關(guān)文章:
1. dockerfile - [docker build image失敗- npm install]2. docker - 如何修改運(yùn)行中容器的配置3. 在windows下安裝docker Toolbox 啟動(dòng)Docker Quickstart Terminal 失??!4. docker不顯示端口映射呢?5. 為什么我ping不通我的docker容器呢???6. nignx - docker內(nèi)nginx 80端口被占用7. docker綁定了nginx端口 外部訪問不到8. angular.js - angular內(nèi)容過長展開收起效果9. javascript - nodejs調(diào)用qiniu的第三方資源抓取,返回401 bad token,為什么10. docker網(wǎng)絡(luò)端口映射,沒有方便點(diǎn)的操作方法么?
