2012年11月16日 星期五

vim 常見問題

vim 分割視窗
http://stackoverflow.com/questions/53664/how-to-effectively-work-with-multiple-files-in-vim
:tabe filename
gt, gT  切換左右

josh:
http://superuser.com/questions/486532/how-to-open-files-in-vertically-horizontal-split-windows-in-vim-from-the-command


While running vim:
  1. :sp filename (horizontal)
  2. :vsp filename (vertical)



Ctrl-W s for horizontal splitting
Ctrl-W v for vertical splitting
Ctrl-w q to close one


^w fallowed by capital H,J,K or L will move the current window to the far left,bottom,top orright respectively like normal cursor navigation. The lower case equivalents move focus instead of moving the window.

^w  h, j, k, l 或 鍵盤右邊的上下左右 移動至相對應的分割

強制把檔案變成html highlight高亮
:set syntax=html

問:如何快速切換叫function的地方和function的內容
Chase:用m(mark)+ a 設定標記,再使用'(apostrophe)+a or `(grave or backticks ( http://stackoverflow.com/questions/5052079/move-cursor-to-its-last-position ) )+a  叫回來
問:不同的檔案能否互叫mark =>測試結果: 不行
問:'(apostrophe)+數字(左上角1,2,3,4...)有用嗎? => 測試結果如下
http://vim.wikia.com/wiki/Using_marks
`0 - jump to position in last file edited (when exited Vim)
`1 - like `0 but the previous file (also `2 etc)
或到~/.viminfo 的 # File marks: 看 0~9分別是哪些檔案
ps. /\cjumplist =>\c 可以忽略大小寫搜尋,之前都 :set ic 再搜尋

標點符號的英文念法
http://www.wretch.cc/blog/MayDog/20400547

顯示當下編輯的檔案名稱
http://vim.wikia.com/wiki/Get_the_name_of_the_current_file
:echo @% def/my.txt directory/name of file
:echo expand('%:t') my.txt name of file ('tail')
:echo expand('%:p') /abc/def/my.txt full path
:echo expand('%:p:h') /abc/def directory containing file ('head')

用vim比较文件(Using vim to compare files)
http://bbs.ednchina.com/BLOG_ARTICLE_222557.HTM
1. 使用vim的比较模式打开两个文件:
   vim -d file1 file2

   vimdiff file1 file2

2. 如果已经打开了文件file1,再打开另一个文件file2进行比较:
   :vert diffsplit file2
如果没有用vert命令,diffsplit则会分上下两个窗口。

3. 如果已经用split方式打开了两个文件file1,file2,又想比较两文件的不同。
   分别在两个窗口里面输入命令:
   :diffthis

4. 如果更改了某个窗口的内容,vim又没有自动更新diff检查,可以使用如下命令更新:
   :diffupdate

5. 定位到不同点:
   [c     跳到前一个不同点
   ]c     跳到后一个不同点

6. 在窗口间跳转:
   ctrl-w w    跳到下一个窗口
   ctrl-w h    跳到左侧窗口
   ctrl-w l    跳到右侧窗口
   ctrl-w j    跳到下方的窗口
   ctrl-w k    跳到上方的窗口

7. 合并文档:
   dp          将差异点的当前文档内容应用到另一文档(diff put)
   do          将差异点的另一文档的内容拷贝到当前文档(diff get)

8. 上下文的展开和查看
    比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。Vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数为3行,可以这样设置:
    :set diffopt=context:3

可以用简单的折叠命令来临时展开被折叠的相同的文本行:

    zo          (folding open, z这个字母看上去比较像折叠的纸)

然后可以用下列命令来重新折叠:

    zc          (folding close)

一次用tabe開很多檔案
$ vim -p *.html

vim insert模式時回車鍵(Backspace)無法使用
這是重裝cygwin後產生的問題
http://stackoverflow.com/questions/11560201/backspace-key-not-working-in-vim-vi
解法:
在.vimrc中新增
set backspace=2

設定文件為log格式
:setf dosini

自動把*.log檔案視為dosini格式,編輯.vimrc:
:autocmd BufRead,BufNewFile *.log setf dosini
ps. au = autocmd




沒有留言:

張貼留言