1. 程式人生 > >VIM和shell的切換

VIM和shell的切換

本章深入討論如何讓其它程式跟 Vim 混用。或者從 Vim 內部執行別的程式,或者暫時先
離開 Vim 而於執行了那個程式後再回來。而且,本章將進一步介紹如何記住 Vim 的當前0
狀態,並在以後把它還原回來。

----

掛起和恢復在圖形化裡面大概就沒什麼用了。(作用等同滑鼠的最小化)

簡單的說一下:用CTRL-Z 掛起。這個動作把 Vim 停下來,並讓你回
到那個你啟動 Vim 的命令 shell 裡。然後再用 "fg" 命令回到 Vim。

當你按 CTRL-Z 行不通時,你還可以用命令 ":suspend"。別忘了把 Vim 引導回前
臺,否則你會失去你所有的修改!

----
執行 shell 命令

從 Vim 內部執行單個 shell 命令,用 ":!{command}"。

Vim 將執行該程式。當它結束時,你會得到提示,讓你擊打 <Enter>。這提示允許你在回去編輯你的文字之前看一看該命令的輸出。

字元 "!" 也用在其它有個程式被呼叫執行的場合。讓我們看一看共有哪些:

       :!{program}            執行 {program}
        :r!{program}           執行 {program} 並讀取其輸出
        :w!{program}           執行 {program} 傳送文字至其輸入
       :[range]!{program}      經由 {program} 過濾文字

注意 "!{program}" 前面那個作用區產生的區別可大了。不附帶作用區,這個程式就跟
通常一樣被執行,而加了這個作用區,作用區內的文字行就經由該程式過濾而出。

用這種方法執行一系列命令也是可以的。但 shell 在此卻更勝一籌。你可以用這種方法
啟動一個新 shell:

       :shell 
這有點類似於用 CTRL-Z 來掛起 Vim。不同之處在於這種方法啟動的是一個新 shell。
(經本人試驗,在輸入:shell以後是在vim內開啟終端,相當的方便,不過也有問題是此時的vim和shell不能獨立分開,返回vim的話只有關閉shell)

退出shell模式指令:exit

################################################################################

會話(此處的東西,看上去還是比較有用的,不過在圖形話的今天,大概就沒多大必要了.猜的~呵呵)


這是下面要將的方法的作用,各位先看下,如果覺得對你有用,就繼續向下看:

假定你編著編著,編到那一天要結束了。你想放下手上的工作,而於第二天再從你停下來
的那地方繼續編下去。你可以做到這一點,只要把你的編輯會話儲存起來,第二天再把它
還原回來。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Vim 會話存放著所有跟你的編輯相關的資訊。這包括諸如檔案列表、窗口布局、全域性
變數、選項、以及其它資訊。(究竟什麼資訊被記住,則由選項 'sessionoptions' 控
制,稍後敘述。)
   下面這個命令建立一個會話檔案:

       :mksession vimbook.vim 
如果你以後要還原這個會話,你可以用這個命令:

       :source vimbook.vim 
如果你要啟動 Vim 並還原某個特別的會話,你可以用下面這個命令:

       vim -S vimbook.vim 
這命令告訴 Vim 在啟動時讀取一個特定的會話檔案。引數 'S' 指會話 (實際上,你可以
用 -S 執行任何 Vim 指令碼,因而,你也不妨指其為執行指令碼,"source")。

那個曾經開啟的視窗就還原了,跟以前一樣的位置和大小。對映和選項值也像以前一樣。
   究竟還原了什麼取決於 'sessionoptions' 選項。預設值為 "blank,buffers,curdir,
folds,help,options,winsize"。

       blank           保留空視窗
       buffers         所有緩衝區,而非僅僅一個視窗內的
       curdir          當前目錄
       folds           摺疊,包括人工建立的
       help            幫助視窗
        options        所有選項和對映
       winsize         視窗大小

你愛怎麼改就怎麼改。例如,除了上述專案以外,你還要還原 Vim 視窗大小:

       :set sessionoptions+=resize