顯示具有 edit 標籤的文章。 顯示所有文章
顯示具有 edit 標籤的文章。 顯示所有文章

2013年1月4日 星期五

show dos line ending mark ^M

vi 在開啟檔案時,會自動判斷他是 dos 還是 unix 格式。
避免把 dos ending 的 ^M 顯示出來,

所以在檢查一個 檔案 是不是 有 ending mark 時,會看不出來。

可以在 自己 home 的 .vimrc 加上: :set ffs=unix
強制以 unix format 開啟檔案,這樣就可以顯示出 ^M 了。



實際測試,開啟檔案後再下 command 沒效,要加在 .vimrc 裡才行。

2012年5月7日 星期一

gvim. single instance & open in tab

gvim 是圖形介面的 vim。
但是從 command line 開啟 (就是 follow 以前 vim 的 invoke 方法),每次都會開一個新的 gvim。
要作到像 gedit 一樣,每次都開在同一個 gvim,但是是不同 tab。

要先確認 這個 gvim compile 時,有沒有 +clientserver。

--- 這在, Help --- Version 裡可以看到。一般的 distribution 應該是都有 enable。

然後在 .bashrc 加入: gvim () { command gvim --remote-tab-silent $@ || command gvim $@; } 這樣以後每次在 command line 用 gvim 開啟檔案時,都會自動加上 --remote-tab-silent 選項。

  • 記得修改完 .bashrc 要重新 login 才會生效


ref:
  1. http://stackoverflow.com/questions/936501/let-gvim-always-run-a-single-instance
  2. http://superuser.com/questions/334794/having-files-opening-in-tabs-in-gvim

2012年1月10日 星期二

Show current file name in status line

用 cscope 時需要知道現在是在哪一個 file。
用這個 command 可以把現在編輯的 file show 在 status line: :set ls=2 可以把這個寫在 vimrc 裡。


ref : http://www.unix.com/shell-programming-scripting/132512-continuously-display-file-name-vim.html

2011年10月6日 星期四

Session : remember the state

想要退出,但是待會回來時,要回 vi 時,要回到原來的狀態。
用 :mksession 命令 :mksession 會把目前得的狀態存在目前目錄下的 Session.vim
等一下開啟 vi 時,加上: vi -S session.vim 就會回到剛剛的狀態。

要是目前目錄已經有Session.vim,會提醒你用 ! 確認 overwrite
:mksession!
或是自己指定 session 檔名: :mksession ~/mysession1.vim

2011年6月21日 星期二

重新排版 - indent

重新排版功能

1. 先把要重新縮排的區域 Mark 起來
2. 啟動重新縮排

ref : 這一篇 重排所有內容

0 到行首

gg 到檔案開頭

V 進入 visual mode

G 到檔案最後 (就會 mark 到檔案最後)

= 重新縮排 mark 的區域

2011年1月12日 星期三

multiple windows

ref: http://www.cs.swarthmore.edu/help/vim/windows.html

新增一個 垂直的 windows,開啟一個檔案:
: vsplit file

水平的話就用 split。
* vsplit 可以用 vsp 代,split 可以用 sp 代

到另一個 windows (這跟用 diff 時一樣)
Ctrl-W W


關閉這個 window
: hide

好像用 :bd 也可以。


好像有一整組用 Ctrl-W 的 Windows 操作。 ref: http://selinap.com/2009/07/how-to-use-multiple-windows-in-vim/

都是以 Ctrl-W 開始:

開啟,關閉:
  • close window
  • v : split vertically
  • s : split horizontally
移動 cursor:
  • l : 移動 cursor 到右邊的 window
  • h : 移動cursor 到左邊window
  • j : 移動到上面window
  • k: 移動到下面 window
window size 調整:
  • + : windows size 增加一行 (horizontal 時有效)
  • - : windows size 減一行
  • > : 增加size (vertical 時有效)
  • < : 減少size.

2010年10月28日 星期四

remove the line ending ^M mark

DOS/Windows 的ˊ文件在 Vi 打開都會在 line ending 出現
^M

要移除。可以用 Vi 的 search and replace command:

:%s/search-word/replace-word/g

%s 命令是用 "/" 來區分,第一個 "/" 間隔是 search word,第二個 "/" 是 replace word。
尾巴的 "g" 是 Globally 的意思 (search and replace the whole document)

所以要 remove ^M 就要下:

:%s/^M//g

但是 控制字元 "^M" 在 vi 裡要分兩次input:

Control-V Control-M

這樣輸入完,就會看到 ^M

2010年8月15日 星期日

edit multiple files

要 edit 多個 file 只要持續在 command 輸入: :e filename
用::ls或是:buffers可以列出目前所有開啟的 file -- vi 叫 "buffer"

:ls 會將 buffer 的 number 列在最前面,然後用:bn n=buffer number就可以跳到那個 file/buffer

要注意,用 :q 的話會關掉整個 vi,如果只是要關掉現在這個 buffer/file,要用::bd

2009年9月8日 星期二

編輯 binary file

開啟時加上 "-b" option:
vim -b RON.MPG

參考 這一篇

加 -b 是為了防止最後一被加上 換行符號。

在 vi 裡面,實際上要配合 xxd 來作 hex 轉換
%!xxd
進入 hex display

之後就可以用一般 vi command insert delete 修改。
改好後再下xxd revert command 轉回binary
%!xxd -r

最後再用 wq 寫回就可以了

2009年3月9日 星期一

Copy, Paste - block

用V 和 Y

在 copy 的開始按 "v",移動游標(不能用arrow key)就會看到反白。到結束的地方按"y"


貼上用"p"

p : 貼在後面
P : 貼在前面




v 和方向選完 block 後...

y 是 copy
d 是 cut

2009年3月1日 星期日

Undo - u

在 command mode 按下 'u' 就可以 undo 上一個修改,
反覆按 u 就可以一直 undo 下去..