国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

提高Vim使用效率的 12 個技巧

移動開發
用好 Vim 的關鍵在于,你要在軟件開發過程中不斷發現你所遇到的 Vim 問題,并積極處理它們。處理方法可以是在 .vimrc 中添加鍵盤映射,或是在 google 上查找解決方案,要不就在 IRC 上提問,或者其他方法。你用什么方法提高了 Vim 的使用效率?

1. 使用空格鍵做為Leader(熱鍵)

Leader是個非常有創意的設計,通過不同按鍵的順序操作可以執行各種命令,而不需要通過組合鍵的方式,自從使用Leader之后我就很少使用ctrl-xxx的這種組合鍵。

長久以來我都是使用 , 做為Leader,直到我意識到我可以使用鍵盤上更加好用的捷按鍵:空格鍵(<Space>)。

  1. let mapleader = "\<Space>" 

這個完全顛覆了我的 Vim 操作效率,我現在可以使用雙手任何一個大拇指進行操作,同時其它手指可以保持在鍵盤的主鍵區。因為 Leader 相當容易使用,所以我就將各種常用的操作進行了 Leader 映射。

2. 將最常用的操作映射到 Leader 操作

我首先識別出最經常使用的操作,并將它們映射到 Leader 操作,我經常是這么使用的:

使用 <Space>o 創建一個新文件:

  1. nnoremap <Leader>o :CtrlP<CR>a 

使用 <Space>w 保存文件(比 :w<Enter> 明顯快得多):

  1. nnoremap <Leader>w :w<CR> 

使用 <Space>p 與 <Space>y 進行剪切板拷貝、粘貼:

  1. vmap <Leader>y "+y 
  2. vmap <Leader>d "+d 
  3. nmap <Leader>p "+p 
  4. nmap <Leader>P "+P 
  5. vmap <Leader>p "+p 
  6. vmap <Leader>P "+P 

使用 <Space><Space> 進入 Vim 編輯模式:

  1. nmap <Leader><Leader> V 

我強烈建議你找到最常用的操作并將其映射到 Leader 。

3. 使用區域擴展功能

為插件 terryma/vim-expand-region 做按鍵映射:

  1. vmap v <Plug>(expand_region_expand) 
  2. vmap <C-v> <Plug>(expand_region_shrink) 

這樣我就可以:

  • 按一次 v 選擇一個字符。
  • 再按一次 v 自動擴展選擇一個單詞。
  • 再按一次 v 自動擴展選擇一段代碼。
  • 以此類推…
  • 按<C-v> 回退上一次的選擇操作。

雖然 vvv 貌似比 vp 的操作更慢,但使用這種方式時,我壓根就不需要考慮當前要選擇哪些以及應該使用哪個組合鍵進行操作。

這么一來 v 把諸如 viw, vaw, vi", va", vi(, va(, vi[, va[, vi{, va{, vip, vap, vit,vat, … 這些操作都給替代了,這下你懂了吧。

4. 找到文本查找操作工具

我一直都不喜歡 Vim 中的查找和替換操作,直到我在 Vim wiki 找到了以下的配置:

  1. vnoremap <silent> s //e<C-r>=&selection=='exclusive'?'+1':''<CR><CR> 
  2.     :<C-u>call histdel('search',-1)<Bar>let @/=histget('search',-1)<CR>gv 
  3. omap s :normal vs<CR> 

這個直接替代了我常用的操作序列:

  • 使用 /something 查找
  • 使用 cs 替換第一個,然后按 <Esc> 鍵
  • 使用 n.n.n.n.n. 查找以及替換余下匹配項。

PS: 也可以考慮使用 Vim 7.4 提供的 cgn 命令。

5. 嘗試更多更棒的鍵盤映射

我每天都在使用這幾個快捷操作鍵,估計這已經幫我省出了幾個月時間。

自動跳轉到粘貼文本的最后

使用 ppppp 進行多行多次粘貼操作

  1. vnoremap <silent> y y`] 
  2. vnoremap <silent> p p`] 
  3. nnoremap <silent> p p`] 

避免緩沖區的內容在粘貼后被覆蓋

通過以下的配置可以避免緩沖區的內容被刪除的文本內容所覆蓋(放到~/.vimrc文件的最后)

  1. " vp doesn't replace paste buffer 
  2. function! RestoreRegister() 
  3.   let @" = s:restore_reg 
  4.   return '' 
  5. endfunction 
  6. function! s:Repl() 
  7.   let s:restore_reg = @" 
  8.   return "p@=RestoreRegister()<cr>" 
  9. endfunction 
  10. vmap <silent> <expr> p <sid>Repl() 

譯注:這里沒有Title,估計是作者漏了,加了個。

在文件中快速跳轉

  • 通過 12<Enter> 跳轉到第 12 行 (12G 我覺得不稱手)
  • 按 <Enter> 跳到行文件末尾。
  • 按 <Backspace> 回到文件開始。
  1. nnoremap <CR> G 
  2. nnoremap <BS> gg 

快速選擇粘貼的文本

  1. noremap gV `[v`] 

關閉無聊的窗口提示

  1. map q: :q 

6. 提高單元測試執行效率

我用 vim-vroom 插件以及相應的 tmux 配置來進行我的測試。

vim-room 缺省使用 <Leader>r 執行測試,由于我已將 Leader 映射為<Space> ,因此我通過 <Space>r 來運行測試工具。

由于測試在 tmux 的單獨窗口運行,因此我可以邊看測試進展共修訂我的代碼。

#p#

7. 使用 Ctrl-Z 返回 Vim

我經常要在shell下執行一些命令,我通過 Ctrl-Z 掛起 Vim ,在完成 shell 命令執行之后,通過 <Enter> 重新回到 Vim 。

使用 fg 退回 Vim 讓我覺得難受,我只想通過 Ctrl-Z 在 Vim 與 Shell 之間切換,不過我沒有找到解決方法,因此我寫了個在 ZSH 下完美運行的腳本:

  1. fancy-ctrl-z () { 
  2.   if [[ $#BUFFER -eq 0 ]]; then 
  3.     BUFFER="fg" 
  4.     zle accept-line 
  5.   else 
  6.     zle push-input 
  7.     zle clear-screen 
  8.   fi 
  9. zle -N fancy-ctrl-z 
  10. bindkey '^Z' fancy-ctrl-z 

如果你將上述代碼放到 ~/.zshrc 文件中,你就可以在 shell 與 Vim 之間快速切換,你真值得去試試看。

8. 正確地配置 Tmux

在 OS X 下使用 Tmux 和 Vim 工具非常不方便,因為:

  • 系統的剪切板處理功能很弱
  • Vim 與 Tmux 的窗口切換操作不同
  • Tmux 下執行命令的熱鍵不同 ( 使用 C-b )
  • 在 Tmux 中拷貝模式超難用

我花了非常多的時間去修正上述配置,具體可以見以下:

配置使用 <C-Space> 作為 tmux 的熱鍵

有些人習慣使用 <C-a> 作為熱鍵,不過我是用這個熱鍵回到行首,所以我這里就不細說了。使用 <C-Space> 的方式會更好用,原因我一會再說:

  1. unbind C-b 
  2. set -g prefix C-Space 
  3. bind Space send-prefix 

使用 <Space> 進入拷貝模式

設想一下,使用 <C-Space><Space> 就可以直接進入 Tmux 的拷貝模式有多方便。

  1. bind Space copy-mode 
  2. bind C-Space copy-mode 

使用 y 和 reattach-to-user-namespace (基于 OSX)

在使用系統的剪切板之前,你需要先執行 brew install reattach-to-user-namespace

  1. bind-key -t vi-copy y  
  2.   copy-pipe "reattach-to-user-namespace pbcopy" 

使用 vim-tmux-navigator

你要使用 <C-h>,<C-j>,<C-k>,<C-l> 這幾個快捷鍵在 vim 和 tmux 的各種窗口內快速切換。

同時我建議使用 <C-Space>l 和 <C-Space>j 的映射配置來進行 Tmux 窗口分割操作,這個絕對比用 <C-Space>% 和 <C-Space>| 來得快:

  1. bind j split-window -v 
  2. bind C-j split-window -v 
  3.  
  4. bind l split-window -h 
  5. bind C-l split-window -h 

參看我的 tmux.conf 文件,這里有更多的干貨。

9. 提高 Git 工程中 Ctrl-P 的執行效率

將下面的內容添加到你的 .vimrc 文件中(配置使用 <Ctrl-P> 來使用 git 或 silver 查找工具來自動補全):

  1. let g:ctrlp_use_caching = 0 
  2. if executable('ag') 
  3.     set grepprg=ag --nogroup --nocolor 
  4.  
  5.     let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""' 
  6. else 
  7.   let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files . -co --exclude-standard', 'find %s -type f'] 
  8.   let g:ctrlp_prompt_mappings = { 
  9.      'AcceptSelection("e")': ['<space>', '<cr>', '<2-LeftMouse>'], 
  10.      } 
  11. endif 

我建議使用 vim-scripts/gitignore 插件。

10. 使用包管理器

neobundle.vim 是一個強大的管理 Vim 插件的工具:

  • 你不需要手工管理 git 的子庫(submodules)
  • 能夠并行地安裝以及更新插件
  • 它支持 YouCompleteMe 這類需要 build 的插件
    1. NeoBundle 'Valloric/YouCompleteMe', { 
    2.        'build' : { 
    3.            'mac' : './install.sh', 
    4.           }, 
    5.        } 
  • 出同樣支持 pry 這類支持打補丁的插件:
    1. NeoBundle 'rking/pry-de', {'rtp': 'vim/'} 

11. 充分使用 Vim 的插件的優點

  • YouCompleteMe
  • ack.vim(ag.vim 也不錯)
  • tpope/vim-commentary
  • tpope/vim-rsi
  • tpope/vim-endwise
  • tpope/vim-fugitive 主要使用 :Gblame
  • tpope/vim-repeat
  • tpope/vim-sleuth
  • mmozuras/vim-github-comment
  • vim-airline 并加上以下配置:
    NeoBundle 'bling/vim-airline'
    let g:airline_theme='powerlineish'
    let g:airline_left_sep=''
    let g:airline_right_sep=''
    let g:airline_section_z=''

我是個 Ruby 程序員,所以我還使用一些 Ruby 的插件:

  • tpope/vim-rails
  • vim-textobj-rubyblock (使用 var,vir 查找 ruby 代碼塊)
  • ruby_pry
  • AndrewRadev/splitjoin.vim 配置以下映射 nmap sj :SplitjoinSplit<cr> nmap sk :SplitjoinJoin<cr>

12. 在服務器上快速配置 Vim

我經常需要服務上使用 Vim 進行配置,不幸的是 Vim 的缺省配置相當不合理。

一種方案是使用 vim-sensible 插件來生成壓縮包,不過這個對我來說不夠好用。我寫 vimrc 的插件來對 Vim 做合理的初始化(特別是對 Ruby 開發者),這個插件配置 Vim 只使用 ~/.vimrc 作為配置文件,同時它還包含了優化的配色、包管理工具以及多種開發語言的語法著色。

這意味著我不需要手工配置服務器上的 ~/.vim 目錄,而是通過以下操作就可以方便地在服務器上配置 Vim 環境:

  1. git clone --recursive https://github.com/sheerun/vimrc.git ~/.vim 

我還寫了個 dotfiles ,用于快速配置我的開發環境。

思考

用好 Vim 的關鍵在于,你要在軟件開發過程中不斷發現你所遇到的 Vim 問題,并積極處理它們。

處理方法可以是在 .vimrc 中添加鍵盤映射,或是在 google 上查找解決方案,要不就在 IRC 上提問,或者其他方法。

你用什么方法提高了 Vim 的使用效率?

責任編輯:倪明 來源: 程序師
相關推薦

2019-08-30 14:25:03

Vim命令Linux

2018-06-11 10:38:56

Vim使用技巧

2022-11-04 15:56:41

2022-09-05 14:17:48

Javascript技巧

2020-07-09 15:10:20

開發技能代碼

2015-04-16 10:15:45

PHPPHP執行效率PHP技巧

2010-03-10 10:41:23

Linux管理效率

2018-05-24 08:47:15

數據存儲技巧

2012-02-28 09:41:00

Linux管理效率技巧

2019-05-16 14:09:03

容器技巧開發

2012-03-06 14:38:23

Visual Stud

2020-07-13 13:00:24

CSS變量技巧

2018-08-07 09:15:49

2025-03-03 00:15:00

JavaScript開發效率

2017-09-29 10:38:30

Android

2025-01-15 17:00:00

開發Linux命令

2020-06-04 15:55:54

GitHub代碼開發者

2024-01-16 15:19:29

Python內存

2015-11-16 10:03:10

效率

2023-10-13 12:56:23

工作效率VS Code技巧
點贊
收藏

51CTO技術棧公眾號

美女激情网站| 伊人久久综合影院| 精品国产成人av| 天天操天天爽天天射| 日韩av电影免费观看高清完整版| 国产日韩在线免费| 沈樵精品国产成av片| 欧美成人三级视频网站| 日韩欧美一区二区三区免费观看| 欧美一区二区三区的| 北岛玲日韩精品一区二区三区| 一区二区三区自拍| 2018av男人天堂| 国产精品免费视频网站| 免费看a级黄色片| 不卡av免费在线观看| 2021国产视频| 国产一区二区91| 激情图片qvod| 成人av在线观| 国产精品69页| 中文在线资源观看网站视频免费不卡| 乱妇乱女熟妇熟女网站| 不卡的av电影在线观看| 国产精品秘入口18禁麻豆免会员| 成人免费av资源| av网站在线观看不卡| 久久久99久久| 成片免费观看视频| 一区二区三区不卡视频在线观看 | 国产欧美三级电影| 久久久免费精品| 精品精品久久| 97久久人人超碰caoprom欧美| 亚洲自拍偷拍网| 久久狠狠久久综合桃花| 男女性色大片免费观看一区二区| 亚洲一区二区三区精品视频| 久久99热这里只有精品| 欧美一区二区视频在线播放| 91免费在线视频观看| 成人黄色影视| 日本韩国欧美国产| 2019中文字幕在线电影免费| 中文字幕日韩专区| 神马电影久久| 日本成人三级电影网站| 91一区二区在线观看| 香港三级经典全部种子下载| 男人插女人视频在线观看| www.av亚洲| 国产在线一区二区三区播放| 天天综合在线观看| 久久久久久国产免费| 国产欧美一区二区精品久久久| 成人国产在线激情| 日韩成人一区二区三区在线观看| 日本老太婆做爰视频| 国产午夜精品一区二区三区嫩草| 黄色污网站在线免费观看| 欧美一级免费观看| 国语自产精品视频在线看抢先版结局| 国产大片精品免费永久看nba| 国产亚洲精品久久久久婷婷瑜伽| 日本在线xxx| 午夜电影一区二区| 国产v日韩v欧美v| 992tv成人免费视频| 国产欧美日韩综合一区在线播放 | 欧美精品九九99久久| 日韩美女在线| 91在线无精精品一区二区| 国产精一区二区三区| 中午字幕在线观看| 中文欧美在线视频| 亚洲手机在线| 色播五月综合网| 亚洲第一精品夜夜躁人人爽| 日韩高清三区| 亚洲欧美日韩另类精品一区二区三区 | 久久久精品日本| 影音先锋亚洲电影| 国产精品人人爽人人爽| 91精品国产色综合久久久蜜香臀| 深夜激情久久| 日韩欧美手机在线| 亚洲无人区一区| 亚洲ww精品| 日韩精品无码一区二区三区| 亚洲午夜成aⅴ人片| 涩涩涩久久久成人精品| 免费中文日韩| 偷窥少妇高潮呻吟av久久免费| 欧美电影免费观看| 精品国产一区二区三区日日嗨 | 福利网在线观看| 欧美亚洲尤物久久| 国产伦理久久久久久妇女| 亚洲午夜久久久影院伊人| 亚洲国产精品久久久久婷婷884 | 欧美伦理在线视频| 免费av网址在线| 亚洲精品美女在线观看播放| 小处雏高清一区二区三区| 50路60路老熟妇啪啪| 日韩国产中文字幕| 亚洲全部视频| 国产理论电影在线观看| 国产精品aaaa| 国产精品乱人伦一区二区| 日本午夜免费一区二区| 一区二区在线中文字幕电影视频| 在线亚洲人成电影网站色www| 日韩在线你懂的| 少妇一级淫免费播放| 日韩在线视频免费观看| 国产一区在线看| 麻豆mv在线看| 杨幂一区欧美专区| 欧美va亚洲va香蕉在线| 免播放器亚洲| 成人免费在线| 清纯唯美一区二区三区| 欧美性受xxxx黑人xyx性爽| 亚洲成人免费| 天堂中文字幕在线| 91欧美精品午夜性色福利在线 | 成年人免费视频观看| 欧美多人乱p欧美4p久久| 国产成人一区在线| 超碰这里只有精品| 免费看日本毛片| 欧美成aaa人片在线观看蜜臀| 91在线你懂得| 美女国产精品久久久| 亚洲综合婷婷久久| 欧美一区二区视频97| 一区二区三区精品在线观看| av中字幕久久| 国产高清视频免费最新在线| av在线不卡一区| 欧美性xxxxx极品少妇| 亚洲人妖在线| 三级资源在线| 国产资源第一页| 国产一区二区动漫| 久久久www成人免费毛片麻豆| 成人直播在线观看| 九色视频网站入口| 97av自拍| 亚洲国产精品成人精品| 成人免费视频一区二区| 综合视频一区| 色综合888| 日韩视频在线观看国产| 在线播放精品一区二区三区 | 97久久亚洲| 欧美变态xxxx| 久久久一本精品99久久精品| 精品亚洲国产成av人片传媒 | 久久黄色片视频| 欧美一级高清免费| 欧美性xxxxxxxx| 国产精品亚洲第一| 窝窝社区一区二区| 69久久精品| 九色自拍视频在线观看| 国产成人一区二区| 精品久久久久久最新网址| 久久婷婷久久一区二区三区| 欧洲福利电影| 欧美videossex另类| 91猫先生在线| 91久久久久久久久久久| 亚洲精品在线免费观看视频| 91丨九色丨国产丨porny| 四季av一区二区凹凸精品| 2024最新电影免费在线观看| 久久久999视频| www 成人av com| 久久精品视频中文字幕| 日本久久一区二区三区| 成人中文字幕合集| 中文无码久久精品| 成人午夜亚洲| 欧美一区二区视频| 日韩视频免费播放| 国产精品免费在线| 欧美精品18videosex性欧美| 欧美日韩国产一区| 国产精品国产三级国产专播品爱网 | 在线亚洲国产精品网站| 亚洲视频自拍| 日本中文字幕视频在线| 中文字幕第36页| 欧美lavv| 日本成人黄色片| 亚洲视频在线观看免费| 色噜噜狠狠色综合中国| 国产视频一区二区在线观看|