Contents
  1. 1. markdown word-wrap
  2. 2. expandtab or noexpandtab
  3. 3. Update cscope database
  4. 4. Remove ‘^M’ symbol
  5. 5. 修正文件中文亂碼問題
  6. 6. 常用vim regular expression
  7. 7. help
  • Use others vimrc
    1
    vim -u ~/others.vimrc

markdown word-wrap

Line breaking, also known as word wrapping, is the process of breaking a section of text into lines such that it will fit in the available width of a page, window or other display area.

參考Writing Prose with Vim, vim-pencli
在用markdown寫blog時,常常一個段落洋洋灑灑很多字,超出螢幕寬度甚多,此時可以用word wrap的功能限定字元數, 其還分成soft-wrappedhard-wrapped

soft-wrapped中間行的結尾並不會有換行字元,只是在顯示上吻合指定的區域,而hard-wrapped則會在中間行存在換行字元,目前暫用vim-pencli做soft-wrapped。

目前暫時以vim-pencli解掉。

expandtab or noexpandtab

set tabstop=4 : 設定插入tab時用幾個space取代,例如本例是1個tab == 4 space
set expandtab : 把tab用指定數目的space取代
shiftwidth用來指定程式indent的space數。

以上設定完後,之後鍵入tab都會被4個space取代,但之前存在於文件中的tab並不會改變
set retab讓全文件apply新的tab設定。

有些文件如markdown,Makefile,需要tab才區別程式區段,可在vimrc中加入

1
autocmd FileType make\|markdown setlocal noexpandtab

Update cscope database

撰寫了一隻cscope_gen_database.sh去產生cscope database

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/env bash

DIR=( "./"
"/usr/include/i386-linux-gnu/sys/"
"/usr/include/i386-linux-gnu/bits/"
)

[ -e "cscope.files" ] && rm "cscope.files"

find /usr/include/ -maxdepth 1 -type f -name "*.[hc]" >> cscope.files

for d in "${DIR[@]}"; do

if [ -d "$d" ]; then
find $d -type f -name "*.[hc]" -o -name "*.cpp" >> cscope.files
fi

done

cscope -Rbq -i cscope.files

直接在vim中輸入 !cscope_gen_database src_root,src_root代表專案的根目錄。
接著輸入cs reset即完成。

Remove ‘^M’ symbol

有時用vim開啟文件,會在行尾看到^M符號,這是Windows(DOS)系統中的換行字元,可以下2種方法移除

  1. 字串取代: :%s/^M/\r/g (ctrl-v then ctrl-m才能打出^M)
  2. doc2unix指令
    ubuntu預設沒有安裝,需要安裝tofrodos package

    1
    sudo apt-get install tofrodos

    之後執行 todos xxx (即unix2doc xxx)
    若想轉回則 fromdos xxx (即doc2unix xxx)

修正文件中文亂碼問題

發現之前在windows編輯過得文件,在linux下會顯示亂碼,這是因為windows是以big5編碼,而linux是用utf-8,此問題可用iconv解決。
bash.alias中加入

1
Big5toUTF8 () { iconv -f big5 -t utf8 -c $1 -o $1; }

假設要轉換foo,直接輸入Big5toUTF8 foo即可。

常用vim regular expression

[vimregex] [vim 我最常用的 regular expression]

Character set:
character set
%s/(\+\s/(/: 會把左括號(後的空白清除,例如執行後( a會變成(a
%s/\s\+)/)/: 會把左括號)前的空白清除,例如執行後a )會變成a)

help

h pattern : 搜尋pattern相關的help文件
link : ctrl+]用來跳轉到quickref(follow the link),ctrl+T回到原本的topic。

Contents
  1. 1. markdown word-wrap
  2. 2. expandtab or noexpandtab
  3. 3. Update cscope database
  4. 4. Remove ‘^M’ symbol
  5. 5. 修正文件中文亂碼問題
  6. 6. 常用vim regular expression
  7. 7. help