目錄
vi
vi file
emacs
emacs
nano/pico
nano file / pico file
joe
joe file
sudo apt-get install joe
Vi IMproved - enhanced vi editor (transitional package)
sudo apt-get install vim-perl vim-python vim-latexsuite
:split <filename> 按拆分模式打開檔案,預設為上下拆分 :vsplit <filename> 左右拆分
切換活動窗口
同上
切換活動窗口為 左/上/下/右 邊的窗口
關閉光標所在的分屏
neo@netkiller:~$ cat /home/neo/.vimrc set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker set paste set ruler set number set nocp " don't open Vim in Vi-compatible mode set bs=2 " setup backspace to delete previous char in insert mode set encoding=utf-8 fileencodings= " set UTF-8 for all files set autoindent set smartindent set t_Co=256 syntax on set syntax=tt2html set hlsearch colorscheme elflord
# vimdiff FILE_LEFT FILE_RIGHT # vim -d FILE_LEFT FILE_RIGHT
# vim FILE_LEFT :vertical diffsplit FILE_RIGHT
左右窗口聯動控制
:set scrollbind :set noscrollbind
在各個差異點之間快速移動。
]c 跳轉到下一個差異點 [c 跳轉到上一個差異點
如果在命令前加上數字的話,可以跳過一個或數個差異點,從而實現跳的更遠。比如如果在位於第一個差異點的行輸入"2]c",將越過下一個差異點,跳轉到第三個差異點。
檔案比較的最終目的之一就是合併,以消除差異。如果希望把一個差異點中當前檔案的內容複製到另一個檔案裡,可以使用命令 dp (diff "put") 如果希望把另一個檔案的內容複製到當前行中,可以使用命令 do (diff "get",之所以不用dg,是因為dg已經被另一個命令占用了) 如果希望手工修改某一行,可以使用通常的vim操作。如果希望在兩個檔案之間來回跳轉,可以用下列命令序列: Ctrl-w, w 在修改一個或兩個檔案之後,vimdiff會試圖自動來重新比較檔案,來實時反映比較結果。但是也會有處理失敗的情況,這個時候需要手工來刷新比較結果: :diffupdate 如果希望撤銷修改,可以和平常用vim編輯一樣,直接 <ESC>, u 但是要注意一定要將光標移動到需要撤銷修改的檔案窗口中。
上下文的展開和查看 比較和合併檔案的時候經常需要結合上下文來確定最終要採取的操作。Vimdiff 預設是會把不同之處上下各 6 行的文本都顯示出來以供參考。其他的相同的文本行被自動摺疊。如果希望修改預設的上下文行數,可以這樣設置: :set diffopt=context:3 可以用簡單的摺疊命令來臨時展開被摺疊的相同的文本行: zo (folding open,之所以用z這個字母,是因為它看上去比較像摺疊着的紙) 然後可以用下列命令來重新摺疊: zc (folding close)
#!/bin/bash ######################################## # vim script for automatic backup by neo ######################################## datetime=`date +"%Y-%m-%d.%H:%M:%S"` current_date=`date +"%Y-%m-%d"` current_time=`date +"%H:%M:%S"` filename=`basename $1` original=$1 if [ -f ${original}.original ] then echo "[${datetime}] [B] ${original} to ${original}.original" >> ~/backup/history.log else cp ${original} ${original}.original fi if [ -d ~/backup/${current_date} ] then echo "[${datetime}] [O] ${original}" >> ~/backup/history.log else mkdir -p ~/backup/${current_date} echo [${datetime}] [C] mkdir ~/backup/${current_date} >> ~/backup/history.log fi backup=~/backup/${current_date}/${filename}.${current_time} if [ -f ${original} ]; then cp ${original} ${backup} echo "[${datetime}] [B] ${original} to ${backup}" >> ~/backup/history.log fi vim ${original} datetime=`date +"%Y-%m-%d.%H:%M:%S"` current_date=`date +"%Y-%m-%d"` current_time=`date +"%H:%M:%S"` newfile=~/backup/${current_date}/${filename}.${current_time} if [ -f ${original} ]; then if [ -f ${backup} ]; then original_sha=`sha1sum ${backup} |awk -F ' ' '{print $1}'` newfile_sha=`sha1sum ${original} |awk -F ' ' '{print $1}'` if [ $original_sha = $newfile_sha ]; then echo "[${datetime}] --- " >> ~/backup/history.log exit fi fi cp ${original} ${newfile} echo "[${datetime}] [M] ${original}" >> ~/backup/history.log echo "[${datetime}] [B] ${original} to ${newfile}" >> ~/backup/history.log fi echo "[${datetime}] --- " >> ~/backup/history.log exit