2014年4月30日 星期三

Vim Secret Technique-FTP sync

IDE好用歸好用,像Xcode,jetbrains不得不說真的很讚~不過用過IDE常常會發現需要create project,這對於只是要修改小程式來說實在是有點麻煩,所以拉~改改小程式往往就會使用Vim啦

最近在開發web常常會需要把code上傳到server上來測試,不過每次都開起fileZilla實在有夠麻煩,視窗切來切去一整個降低工作效率,所以這時可能會另外開一個terminal tab,然後輸入ftp或是sftp指令然後以put的方式上傳,這算是已經比開fileZilla還快上許多,不過這還不夠快如果在vim裡的命令模式使用SCP

:! scp fileName user@xxx.xxx.xx.xx:dirpath

就可以上傳到指令的資料夾,除了上面的方法外,其實vim有提供一些關於ftp的指令來給我們使用,可以直接在Terminal內輸入

vim [protocol]://user@xxx.xxx.xx.xx/path/to/file
# ex:
vim scp://user@xxx.xxx.xx.xx/path/to/file

然後我們就可以直接編輯遠端的檔案,這時如果我們在一般模式下輸入:w即可讓遠端的程式存檔!如果我們在local端已經進入vim編輯器時還有以下的指令可以用

直接編輯遠端檔案

:e dav://machine[:port]/path                       #uses cadaver 
:e fetch://[user@]machine/path                     #uses fetch 
:e ftp://[user@]machine[[:#]port]/path             #uses ftp   autodetects <.netrc> 
:e http://[user@]machine/path                      #uses http  uses wget 
:e rcp://[user@]machine/path                       #uses rcp 
:e rsync://[user@]machine[:port]/path              #uses rsync 
:e scp://[user@]machine[[:#]port]/path             #uses scp 
:e sftp://[user@]machine/path                      #uses sftp 

直接read遠端檔案(無法修改)

:Nread ?                                           #give help 
:Nread "machine:path"                              #uses rcp 
:Nread "machine path"                              #uses ftp   with <.netrc> 
:Nread "machine id password path"                  #uses ftp 
:Nread "dav://machine[:port]/path"                 #uses cadaver 
:Nread "fetch://[user@]machine/path"               #uses fetch 
:Nread "ftp://[user@]machine[[:#]port]/path"       #uses ftp   autodetects <.netrc> 
:Nread "http://[user@]machine/path"                #uses http  uses wget 
:Nread "rcp://[user@]machine/path"                 #uses rcp 
:Nread "rsync://[user@]machine[:port]/path"        #uses rsync 
:Nread "scp://[user@]machine[[:#]port]/path"       #uses scp 
:Nread "sftp://[user@]machine/path"                #uses sftp 

將local端的檔案sync到遠端

:Nwrite ?                                          #give help 
:Nwrite "machine:path"                             #uses rcp 
:Nwrite "machine path"                             #uses ftp   with <.netrc> 
:Nwrite "machine id password path"                 #uses ftp 
:Nwrite "dav://machine[:port]/path"                #uses cadaver 
:Nwrite "ftp://[user@]machine[[:#]port]/path"      #uses ftp   autodetects <.netrc> 
:Nwrite "rcp://[user@]machine/path"                #uses rcp 
:Nwrite "rsync://[user@]machine[:port]/path"       #uses rsync 
:Nwrite "scp://[user@]machine[[:#]port]/path"      #uses scp 
:Nwrite "sftp://[user@]machine/path"               #uses sftp 

在第一次輸入Nwrite "protocol://..."之後如果要寫入只需要輸入"Nwrite"即可

當然如果不知道檔案在哪的話可以直接瀏覽資料夾

vim [protocol]://[user]@hostname/path/
:e [protocol]://[user]@hostname/path/ 
:Nread [protocol]://[user]@hostname/path/ 

不得不說這些指令實在大大增加了不少工作效率,不過有個小缺點~NerdTree在這部分的支援度好像不太好,只能瀏覽local端的資料夾,所以在編輯遠端檔案時,如果打開NerdTree只能看到local端的資料夾內容

Reference:

沒有留言:

張貼留言