• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            chaosuper85

            C++博客 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
              118 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks

            2011年6月18日 #

            ubuntu下vim語(yǔ)法著色和縮排問(wèn)題的解決 2011-03-07 09:26 轉(zhuǎn)載自 javatown 最終編輯 javatown 版本號(hào):2008.07.30 關(guān)鍵字:linux ubuntu vim vi 語(yǔ)法著色 語(yǔ)法高亮 縮進(jìn) 縮排 本文的主要目的是討論記錄ubuntu下vim語(yǔ)法著色和縮排的方法 1。前提 安裝vim sudo apt-get install vim-full 之后,在/etc/vim下會(huì)發(fā)現(xiàn)vimrc這個(gè)文件這個(gè)是公共配置文件,修改它一般會(huì)對(duì)所有的ubuntu用戶產(chǎn)生效果。 2。語(yǔ)法著色 要讓語(yǔ)法高亮顯示,可以用如下辦法: 方法一: 去掉/etc/vim下vimrc中syntax on一句前面的注釋符號(hào)來(lái)開(kāi)啟 方法二: 如果方法一失效可以編輯/etc下的profile文件,添加 export TERM=xterm-color 方法三: 拷貝語(yǔ)法著色示例文件 cp /usr/share/vim/vimcurrent/vimrc_example.vim ~/.vimrc 方法四: 在vim中輸入:syntax on來(lái)開(kāi)啟語(yǔ)法著色 方法五: 直接編輯~/.vimrc文件,如果沒(méi)有就自己建立一個(gè) 然后把下面內(nèi)容加入 set autoindent set cindent set modeline set ruler set showcmd set showfulltag set showmode set smartcase set smartindent set imcmdline set previewwindow set hlsearch syntax on 一些配色方案,來(lái)自互聯(lián)網(wǎng),直接添加在vimrc文件末尾即可: colorscheme elflord "colorscheme darkblue "colorscheme evening "colorscheme murphy "colorscheme torte "colorscheme desert 3。縮進(jìn) 以下內(nèi)容來(lái)自互聯(lián)網(wǎng) 1)設(shè)置(軟)制表符寬度為4: set tabstop=4 set softtabstop=4 2)設(shè)置縮進(jìn)的空格數(shù)為4 set shiftwidth=4 3)設(shè)置自動(dòng)縮進(jìn):即每行的縮進(jìn)值與上一行相等;使用 noautoindent 取消設(shè)置: set autoindent 4)設(shè)置使用 C/C++ 語(yǔ)言的自動(dòng)縮進(jìn)方式: set cindent 5)設(shè)置C/C++語(yǔ)言的具體縮進(jìn)方式: set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s 6)如果想在左側(cè)顯示文本的行號(hào),可以用以下語(yǔ)句: set nu 7)最后,如果沒(méi)有下列語(yǔ)句,就加上吧: if &term=="xterm" set t_Co=8 set t_Sb=^[[4%dm set t_Sf=^[[3%dm endif
            posted @ 2011-06-18 07:25 chaosuper 閱讀(1075) | 評(píng)論 (0)編輯 收藏

            2011年6月16日 #

            1)文件操作 vi FileName 打開(kāi)文件 FileName,并將光標(biāo)置于第一行首。 vi +n FileName 打開(kāi)文件 FileName,并將光標(biāo)置于第 n 行首。 vi + FileName 打開(kāi)文件 FileName,并將光標(biāo)置于最后一行。 vi + /pattern File 打開(kāi)文件 File,并將光標(biāo)置于其中第一個(gè)于 pattern 匹配的字符串處。 vi –r FileName 在上次正用 vi 編輯 FileName 發(fā)生系統(tǒng)崩潰后,恢復(fù)FileName。 vi File1 … Filen 打開(kāi)多個(gè)文件,依次對(duì)之進(jìn)行編輯。 :%!xxd 按十六進(jìn)制查看當(dāng)前文件 :%!xxd -r 從十六進(jìn)制返回正常模式 :n1,n2 co n3 將 n1 行到 n2 行之間的內(nèi)容拷貝到第 n3 行下。 :n1,n2 m m3 將 n1 行到 n2 行之間的內(nèi)容移至第 n3 行下。 :n1,n2 d 將 n1 行到 n2 行之間的內(nèi)容刪除。 :n1,n2 w filename 將 n1 行到 n2 行之間的內(nèi)容保存到文件 filename 中 :n1,n2 w! Command 將文件中n1行到n2行的內(nèi)容作為 Command的輸入并執(zhí)行之, 若不指定 n1、n2,則將整個(gè)文件內(nèi)容作為 Command 的輸入。 :r! Command 將命令 Command 的輸出結(jié)果放到當(dāng)前行。 :nr 文件> 把文件>插入到第n行 :so 文件> 讀取文件>,再執(zhí)行文件里面的命令(文件中的命令應(yīng)該都是一些ex命令) :l1,l2w 文件> 把第l1和第l2行之間的文本寫到文件>中去 :w >> 文件> 添加到文件>末尾. 也可以使用行號(hào) :e! 重新編輯當(dāng)前文件,忽略所有的修改 ·(、[、、]、)對(duì)應(yīng)顯示 % 顯示當(dāng)前(、[、{ 、}、] 、)的對(duì)應(yīng)項(xiàng) ) :光標(biāo)移至句尾 ( :光標(biāo)移至句首 }:光標(biāo)移至段落開(kāi)頭 {:光標(biāo)移至段落結(jié)尾 ·(、[、、]、)內(nèi)數(shù)據(jù)選擇 daB 刪除{}及其內(nèi)的內(nèi)容 (在非v可視模式下) diB 刪除{}中的內(nèi)容 ab 選擇()中的內(nèi)容 ib 選擇()中的內(nèi)容( 不含() ) aB 選擇{}中的內(nèi)容 iB 選擇{}中的內(nèi)容( 不含{} ) ·語(yǔ)法提示與自動(dòng)補(bǔ)齊 ★ 插入模式下的單詞自動(dòng)完成 ★ 行自動(dòng)完成(超級(jí)有用) ·設(shè)置ctags #ctags -f /usr/share/vim/vim63/funcs.tags -R /opt/j2sdk/src /usr/src/kernels/2.6.9-5.EL-i686 ^p 自動(dòng)補(bǔ)齊上下文已有相近項(xiàng) ^n 自動(dòng)補(bǔ)齊~/.tags中的相近函數(shù) ^[ 顯示~/.tags中的光標(biāo)下的函數(shù)的原型, 按^t退出函數(shù) :pta 函數(shù)名 預(yù)覽窗口快速打開(kāi)相應(yīng)函數(shù)所在文件,并將光標(biāo)定位在對(duì)應(yīng)函數(shù)的開(kāi)頭 K 顯示光標(biāo)下的C函數(shù)的man說(shuō)明手冊(cè) ·變量定位 gd 轉(zhuǎn)到光標(biāo)下局部變量的定義處 Gd 轉(zhuǎn)到光標(biāo)下全局變量的定義處 ·編譯選項(xiàng) :cn 命令會(huì)把你帶到下一個(gè)出錯(cuò)地點(diǎn),而不考慮它在什么文件里。 :cc 命令會(huì)向你顯示當(dāng)前錯(cuò)誤的編譯器輸出信息; :cl 會(huì)生成一個(gè)列有項(xiàng)目所有錯(cuò)誤的列表,以供瀏覽這些錯(cuò)誤 3]光標(biāo)移動(dòng) ·字符 h 光標(biāo)左移一個(gè)字符。 l 光標(biāo)右移一個(gè)字符。 ·字 w 或 W 光標(biāo)右移一個(gè)字至字首。 B 或 b 光標(biāo)左移一個(gè)字至字首。 E 或 e 光標(biāo)右移一個(gè)字至字尾。 ·句} 光標(biāo)移至句尾。 ( 光標(biāo)移至句首。 ·段) 光標(biāo)移至段落開(kāi)頭。 { 光標(biāo)移至段落結(jié)尾。 ·行k 或 Ctrl+p 光標(biāo)上移一行。 j 或 Ctrl+n 光標(biāo)下移一行。 Enter 光標(biāo)下移一行。 nG 光標(biāo)移至第 n 行首。 n+ 光標(biāo)下移 n 行。 n- 光標(biāo)上移 n 行。 n$ 光標(biāo)移至第 n 行尾。 0 光標(biāo)移至當(dāng)前行首。 $ 光標(biāo)移至當(dāng)前行尾。 ·屏幕 H 光標(biāo)移至屏幕頂行。 M 光標(biāo)移至屏幕中間行。 L 光標(biāo)移至屏幕最后行。 Ctrl+u 向文件首翻半屏。 Ctrl+d 向文件尾翻半屏。 Ctrl+f 向文件尾翻一屏。 Ctrl+b 向文件首翻一屏。 nz 將第 n 行滾至屏幕頂部。不指定 n 時(shí)將當(dāng)前行滾至屏幕頂。 4}插入 # 在文件中插入行號(hào)(不是顯示行號(hào),是插入!) ★:g/^/exec "s/^/".strpart(line(".")." ", 0, 4) ·光標(biāo) i 在光標(biāo)前插入。 a 在光標(biāo)后插入。 ·行 I 在當(dāng)前行首插入。 A 在當(dāng)前行尾插入。 o 在當(dāng)前行之下一新行插入。 O 在當(dāng)前行之上新開(kāi)一行插入。 5)替換 r 替換當(dāng)前字符。 R 替換當(dāng)前字符及其后的字符,直至按 ESC 鍵。 s 從當(dāng)前光標(biāo)位置處開(kāi)始,以輸入的文本代替指定數(shù)目的字符。 S 刪除指定數(shù)目的行,并以所輸入的文本代替。 6)修改 ncw 或 nCW 修改指定數(shù)目的字符。 nCC 修改指定數(shù)目的行。 :r filename 將文件 filename 插入在當(dāng)前行之下 7)查找替換 / 把狹義單詞 寫到 搜索命令行 / 把廣義單詞 寫到 搜索命令行 :g/str/s/str1/str2/g 第一個(gè)g表示對(duì)每一個(gè)包括s1的行都進(jìn)行替換, 第二個(gè)g表示對(duì)每一行的所有進(jìn)行替換 包括str的行所有的str1都用str2替換 :%s/f $/for$/g 將每一行尾部的“f ”(f鍵和空格鍵)替換為for :%s/^/mv /g 在每一行的頭部添加“mv ”(mv鍵和空格鍵) :s/fred/a/g 替換fred成register a中的內(nèi)容,呵呵 :g/顯示含或的行 # 替換一個(gè)visual區(qū)域 # 選擇一個(gè)區(qū)域,然后輸入 :s/Emacs/Vim/ 等等,vim會(huì)自動(dòng)進(jìn)入:模式 :'s/Emacs/Vim/g 前面的'是vim自動(dòng)添加的 # 在多個(gè)文檔中搜索 :bufdo /searchstr :argdo /searchstr 復(fù)制與剪切 xp 交換前后兩個(gè)字符的位置 ddp 上下兩行的位置交換 :g/fred/t$ 拷貝行,從fred到文件末尾(EOF) 9)窗口操作 :vne [filename] :sp [filename] :S [filename] :new [filename] :^w + ^r 交換兩個(gè)窗口的位置 ^w = 窗口等寬 :res -n 窗口高度減小n :res +n 窗口高度增大n :vert res -n :vert res +n 10)DOS格式文本轉(zhuǎn)成Unix格式文本 :1,$s/^M//g 11)書(shū)簽 在閱讀和編寫大的程序文件時(shí),利用標(biāo)記(書(shū)簽)功能定位是十分有幫助的。 將光標(biāo)移到想做標(biāo)記的位置。假如做一個(gè)名為“debug1”的標(biāo)記,那么用戶可在命令模式下輸入做標(biāo)記的命令“mdebug1”,然后敲入回車鍵,一個(gè)名為“debug1”的標(biāo)記就做好了。 接下來(lái)用戶可以隨意將光標(biāo)移到其它的位置,當(dāng)在命令模式下輸入“`debug1”后,就能快速回到“debug1”的標(biāo)記所在行的行首。 馨竹 2007-12-24 19:13 12)刪除操作 :%s/r//g 刪除DOS方式的回車^M :%s= *$== 刪除行尾空白 :%s/^(.*)n1/1$/ 刪除重復(fù)行 :%s/^.pdf/new.pdf/ 只是刪除第一個(gè)pdf :%s/// 又是刪除多行注釋(咦?為什么要說(shuō)「又」呢?) :g/^s*$/d 刪除所有空行 :g!/^dd/d 刪除不含字符串'dd'的行 :v/^dd/d 同上 (譯釋:v == g!,就是不匹配!) :g/str1/,/str2/d 刪除所有第一個(gè)含str1到第一個(gè)含str2之間的行 :v/./.,/./-1join 壓縮空行 :g/^$/,/./-j 壓縮空行 :s/p1/p2/g:將當(dāng)前行中所有p1均用p2替代 :n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代 :g/p1/s//p2/g:將文件中所有p1均用p2替換 ndw 或 ndW 刪除光標(biāo)處開(kāi)始及其后的 n-1 個(gè)字符。 d0 刪至行首。 d$ 刪至行尾。 ndd 刪除當(dāng)前行及其后 n-1 行。 x 或 X 刪除一個(gè)字符。 Ctrl+u 刪除輸入方式下所輸入的文本。 ^R 恢復(fù)u的操作 J 把下一行合并到當(dāng)前行尾 V 選擇一行 ^V 按下^V后即可進(jìn)行矩形的選擇了 aw 選擇單詞 iw 內(nèi)部單詞(無(wú)空格) as 選擇句子 is 選擇句子(無(wú)空格) ap 選擇段落 ip 選擇段落(無(wú)空格) D 刪除到行尾 x,y 刪除與復(fù)制包含高亮區(qū) dl 刪除當(dāng)前字符(與x命令功能相同) d0 刪除到某一行的開(kāi)始位置 d^ 刪除到某一行的第一個(gè)字符位置(不包括空格或TAB字符) dw 刪除到某個(gè)單詞的結(jié)尾位置 d3w 刪除到第三個(gè)單詞的結(jié)尾位置 db 刪除到某個(gè)單詞的開(kāi)始位置 dW 刪除到某個(gè)以空格作為分隔符的單詞的結(jié)尾位置 dB 刪除到某個(gè)以空格作為分隔符的單詞的開(kāi)始位置 d7B 刪除到前面7個(gè)以空格作為分隔符的單詞的開(kāi)始位置 d) 刪除到某個(gè)語(yǔ)句的結(jié)尾位置 d4) 刪除到第四個(gè)語(yǔ)句的結(jié)尾位置 d( 刪除到某個(gè)語(yǔ)句的開(kāi)始位置 d) 刪除到某個(gè)段落的結(jié)尾位置 d{ 刪除到某個(gè)段落的開(kāi)始位置 d7{ 刪除到當(dāng)前段落起始位置之前的第7個(gè)段落位置 dd 刪除當(dāng)前行 d/text 刪除從文本中出現(xiàn)“text”中所指定字樣的位置, 一直向前直到下一個(gè)該字樣所出現(xiàn)的位置(但不包括該字樣)之間的內(nèi)容 dfc 刪除從文本中出現(xiàn)字符“c”的位置,一直向前直到下一個(gè)該字符所出現(xiàn)的位置(包括該字符)之間的內(nèi)容 dtc 刪除當(dāng)前行直到下一個(gè)字符“c”所出現(xiàn)位置之間的內(nèi)容 D 刪除到某一行的結(jié)尾 d$ 刪除到某一行的結(jié)尾 5dd 刪除從當(dāng)前行所開(kāi)始的5行內(nèi)容 dL 刪除直到屏幕上最后一行的內(nèi)容 dH 刪除直到屏幕上第一行的內(nèi)容 dG 刪除直到工作緩存區(qū)結(jié)尾的內(nèi)容 d1G 刪除直到工作緩存區(qū)開(kāi)始的內(nèi)容 修改命令操作 r 更改當(dāng)前字符 cw 修改到某個(gè)單詞的結(jié)尾位置 c3w 修改到第三個(gè)單詞的結(jié)尾位置 cb 修改到某個(gè)單詞的開(kāi)始位置 cW 修改到某個(gè)以空格作為分隔符的單詞的結(jié)尾位置 cB 修改到某個(gè)以空格作為分隔符的單詞的開(kāi)始位置 c7B 修改到前面7個(gè)以空格作為分隔符的單詞的開(kāi)始位置 c0 修改到某行的結(jié)尾位置 c} 修改到某個(gè)語(yǔ)句的結(jié)尾位置 c4} 修改到第四個(gè)語(yǔ)句的結(jié)尾位置 c( 修改到某個(gè)語(yǔ)句的開(kāi)始位置 c) 修改到某個(gè)段落的結(jié)尾位置 c{ 修改到某個(gè)段落的開(kāi)始位置 c7{ 修改到當(dāng)前段落起始位置之前的第7個(gè)段落位置 ctc 修改當(dāng)前行直到下一個(gè)字符c所出現(xiàn)位置之間的內(nèi)容 C 修改到某一行的結(jié)尾 cc 修改當(dāng)前行 5cc 修改從當(dāng)前行所開(kāi)始的5行內(nèi)容 . 重復(fù)上一次修改! 13}Set 選項(xiàng)設(shè)置 set all 列出所有選項(xiàng)設(shè)置情況。 set term 設(shè)置終端類型。 set ignorecase 在搜索中忽略大小寫。 set list 顯示制表位(^I)和行尾標(biāo)志($)。 set number 顯示行號(hào)。 set showmode 示用戶處在什么模式下 set report 顯示由面向行的命令修改國(guó)的行數(shù)目。 set terse 顯示簡(jiǎn)短的警告信息。 set warn 在轉(zhuǎn)到別的文件時(shí),若沒(méi)有保存當(dāng)前文件則顯示 No write 信息。 set autowrite 在“:n”和“:!”命令之前都自動(dòng)保存文件 set nomagic 允許在搜索模式中,使用前面不帶\的特殊字符。 set nowrapscan 禁止 vi 在搜索到達(dá)文件兩端時(shí),又從另一端開(kāi)始。 set mesg 允許 vi 顯示其他用戶用 write 寫到自己終端上的信息。 autoindent (ai) noai 使新行自動(dòng)縮進(jìn),和上(下)行的位置對(duì)齊 autoprint (ap) ap 每條命令之后都顯示出修改之處 autowrite (aw) noaw 在:n,:!命令之前都自動(dòng)保存文件 beautify (bf) nobf 在輸入的時(shí)候忽略所有的控制字符(除了制表鍵(tab),換行(newline),進(jìn)紙(formfeed)) directory= (dir=) /tmp 存放緩沖區(qū)的目錄名 edcompatible noedcompatible 在替換的時(shí)候使用類ed的用法 errorbells (eb) errorbells 出錯(cuò)的時(shí)候響鈴 exrc (ex) noexrc 允許在主目錄(home)外面之外放.exrc文件 hardtabs= (ht=) 8 設(shè)置硬制表的邊界 ignore case (ic) noic 正規(guī)式里忽略大小寫 lisp nolisp 打開(kāi)lisp模式 list nolist 顯示所有的制表鍵和行的結(jié)尾 magic agic 可以使用更多的正規(guī)表達(dá)式 mesg mesg 允許向終端發(fā)送消息 number (nu) nonumber 顯示行號(hào) open open 允許開(kāi)放和可視化 optimize (opt) optimize 優(yōu)化吞吐量,打印時(shí)不發(fā)回車 paragraphs= (para=) IPLPPPQPPLIbp 設(shè)置{ & }的分界符 prompt prompt 命令模式下的輸入給出:的提示符 readonly (ro) noro 除非用!號(hào)否則不準(zhǔn)保存文件 redraw noredraw 當(dāng)編輯的時(shí)候重繪屏幕 remap remap 允許宏指向其他的宏 report= 5 如果影響的行數(shù)>這個(gè)數(shù)的話就報(bào)告 scroll 1/2 window 下卷屏幕時(shí)滾動(dòng)屏幕的數(shù)目, 同樣這也是z命令輸出的行數(shù)(z 輸出2倍滾屏的大小) sections= SHNHH HU 定義節(jié)的末尾(當(dāng)使用命令[[ 和 ]] 時(shí)) shell= (sh=) /bin/sh 缺省的SHELL,如果設(shè)置了環(huán)境變量SHELL的話,就使用變量 shiftwidth= (sw=) 8 當(dāng)使用移動(dòng)(shift)命令時(shí)移動(dòng)的字符數(shù) showmatch (sm) nosm 顯示{, }, (, ), [, 或者 ] 的匹配情況 showmode noshowmode 顯示你處在什么模式下面 slowopen (slow) 插入之后不要立刻更新顯示 tabstop= (ts=) 8 設(shè)置制表停止位(tabstop)的長(zhǎng)度 taglength= (tl=) 0 重要標(biāo)記的字符個(gè)數(shù)(0表示所有的字符) tags= tag, /usr/lib/tags 定義包含標(biāo)記的文件路徑 term= 設(shè)置終端類型 terse noterse 顯示簡(jiǎn)短的錯(cuò)誤信息 timeout (to) timeout 一秒鐘后鍵盤映射超時(shí) ttytype= 設(shè)置終端類型 warn warn 顯示"No write since last change"信息 window= (w=) 可視模式下窗口的行數(shù) wrapmargin= (wm=) 0 右邊距,大于0的話最右邊的單詞將折行,留出n個(gè)空白位置 wrapscan (ws) ws 查找到文件尾后再重頭開(kāi)始 writeany (wa) nowa 可以保存到任意一個(gè)文件去 14}特殊字符 ^ 匹配字符串位于行首。 $ 匹配字符串位于行尾。 . 用在模式串中,表示任何單個(gè)字符。 在命令模式下,重復(fù)上次的命令。 * 在模式串中,表示其前字符可出現(xiàn)任意多次。 [] 用在模式串中,表示指定方位內(nèi)字符,其中可用-表示一個(gè)字 符范圍,用^表示不在某個(gè)范圍內(nèi)的字符。 ESC 從插入狀態(tài)轉(zhuǎn)換到命令狀態(tài) ^[ 功能同 ESC 15]大小寫轉(zhuǎn)換 guu 行小寫 gUU 行大寫 g~~ 行翻轉(zhuǎn)(當(dāng)然指大小寫啦) guw 字小寫(狹義字) 譯注:建議對(duì)比iw gUw 字大寫(狹義字) g~w 字翻轉(zhuǎn)(狹義字) vEU 字大寫(廣義字) vE~ 字翻轉(zhuǎn)(廣義字) ggguG 把整個(gè)文章全部小寫(ft!bt!) 16) 跳轉(zhuǎn)足跡'. 跳到最后修改的那一行 (超級(jí)有用)(ft,怎么又是這個(gè)評(píng)價(jià)) `. 不僅跳到最后修改的那一行,還要定位到修改點(diǎn) 依次沿著你的跳轉(zhuǎn)記錄向回跳 (從最近的一次開(kāi)始) 依次沿著你的跳轉(zhuǎn)記錄向前跳 :ju(mps) 列出你跳轉(zhuǎn)的足跡 17)命令歷史 :history 列出歷史命令記錄 :his c 命令行命令歷史 :his s 搜索命令歷史 q/ 搜索命令歷史的窗口 q 命令行命令歷史的窗口 : 歷史命令記錄的窗口 18]寄存器 # 列出寄存器(Registers) :reg 顯示所有當(dāng)前的registers "1p 表示引用register,1表示一個(gè)名字叫做1的register,p就是粘貼(paste)命令 譯釋: "也用來(lái)定義register 先輸入 ",表示定義register 然后輸入名字,如0~9,a~z 然后執(zhí)行刪除或復(fù)制命令,如dd或y, 或者是visual模式下的d(刪除選中的部分)或y(復(fù)制選中的部分) 則被刪除或復(fù)制的部分就被存入了這個(gè)命名的register 觀察:一個(gè)特殊的register, "" ,里面存儲(chǔ)了一個(gè)匿名的刪除/復(fù)制 在你執(zhí)行dd或y的時(shí)候,被作用的部分被存到了""中 19}命令行 "ayy@a 把當(dāng)前行作為一個(gè)Vim命令來(lái)執(zhí)行 譯釋:"ayy 是定義當(dāng)前行到register a,然后@a是執(zhí)行register a中存儲(chǔ)的指令 10yy copy 當(dāng)前行以下10行 11} 排序 :%!sort -u 使用sort程序排序整個(gè)文件(用結(jié)果重寫文件) !1) sort -u 排序當(dāng)前段落 (只能在normal模式下使用!!) :.,+5!sort 排序當(dāng)前行及以下5行 20) 列操作 :%s= [^ ]+$=&&= 復(fù)制最后一列 :%s= f+$=&&= 一樣的功能 :%s= S+$=&& ft,還是一樣 :s/(.*).*)/2"1/ 顛倒用:分割的兩個(gè)字段 :%s(w+s+))str1:1str2: 處理列,替換所有在第三列中的str1 :%sw+)(.*s+)(w+)$:321: 交換第一列和最后一列 (共4列) ·.vimrc " Use Vim settings, rather then Vi settings (much better!). set nocompatible "c風(fēng)格的縮進(jìn) :set expandtab "不使用tab只使用空格 :set cindent shiftwidth=4 "自動(dòng)縮進(jìn) :set ai "語(yǔ)法 ":set filetype=java :set syntax=java "鍵入)、] 、},顯示(、[、{ :set showmatch "手工定義折疊 :set foldmethod=manual "標(biāo)簽文件位置 set tags=/usr/share/vim/vim63/funcs.tags "在插入模式下通過(guò)按[Ctrl]N自動(dòng)地將任何類、方法或者字段名補(bǔ)齊 set complete+=k " 不要用聲音煩我! set visualbell "歷史 :set history=50 "顯示行列位置 :set ruler "設(shè)置字符編碼 set fileencodings=gb2312 "set encoding=euc-cn "設(shè)置ruler set ruler "顯示當(dāng)前命令 set showcmd "incsearch set incsearch " allow backspacing over everything in insert mode set backspace=indent,eol,start "自動(dòng)檢測(cè)文件類型 :filetype on
            posted @ 2011-06-16 07:58 chaosuper 閱讀(240) | 評(píng)論 (0)編輯 收藏

            2011年6月15日 #

            CSDN博客地址 http://blog.csdn.net/v_JULY_v/archive/2011/06/14/6543438.aspx http://blog.csdn.net/v_JULY_v
            posted @ 2011-06-15 22:19 chaosuper 閱讀(167) | 評(píng)論 (0)編輯 收藏

            2011年6月12日 #

            內(nèi)核導(dǎo)航 http://oss.org.cn/kernel-book/ch01/1.5.3.htm 源代碼導(dǎo)航器 http://lxr.linux.no/linux+v2.6.39/net/ipv4/
            posted @ 2011-06-12 22:33 chaosuper 閱讀(137) | 評(píng)論 (0)編輯 收藏

            2011年6月11日 #

            http://book.51cto.com/art/201104/253696.htm
            posted @ 2011-06-11 17:21 chaosuper 閱讀(177) | 評(píng)論 (0)編輯 收藏

            2011年5月9日 #

            作為L(zhǎng)inux下的程序開(kāi)發(fā)人員,大家一定都遇到過(guò)Makefile,用make命令來(lái)編譯自己寫的程序確實(shí)是很方便。一般情況下,大家都是手工寫一個(gè)簡(jiǎn)單Makefile,如果要想寫出一個(gè)符合自由軟件慣例的Makefile就不那么容易了。   在本文中,將給大家介紹如何使用autoconf和automake兩個(gè)工具來(lái)幫助我們自動(dòng)地生成符合自由軟件慣例的Makefile,這樣就可以象常見(jiàn)的GNU程序一樣,只要使用“./configure”,“make”,“make instal”就可以把程序安裝到Linux系統(tǒng)中去了。這將特別適合想做開(kāi)放源代碼軟件的程序開(kāi)發(fā)人員,又或如果你只是自己寫些小的Toy程序,那么這個(gè)文章對(duì)你也會(huì)有很大的幫助。   一、Makefile介紹   Makefile是用于自動(dòng)編譯和鏈接的,一個(gè)工程有很多文件組成,每一個(gè)文件的改變都會(huì)導(dǎo)致工程的重新鏈接,但是不是所有的文件都需要重新編譯,Makefile中紀(jì)錄有文件的信息,在make時(shí)會(huì)決定在鏈接的時(shí)候需要重新編譯哪些文件。   Makefile的宗旨就是:讓編譯器知道要編譯一個(gè)文件需要依賴其他的哪些文件。當(dāng)那些依賴文件有了改變,編譯器會(huì)自動(dòng)的發(fā)現(xiàn)最終的生成文件已經(jīng)過(guò)時(shí),而重新編譯相應(yīng)的模塊。   Makefile的基本結(jié)構(gòu)不是很復(fù)雜,但當(dāng)一個(gè)程序開(kāi)發(fā)人員開(kāi)始寫Makefile時(shí),經(jīng)常會(huì)懷疑自己寫的是否符合慣例,而且自己寫的Makefile經(jīng)常和自己的開(kāi)發(fā)環(huán)境相關(guān)聯(lián),當(dāng)系統(tǒng)環(huán)境變量或路徑發(fā)生了變化后,Makefile可能還要跟著修改。這樣就造成了手工書(shū)寫Makefile的諸多問(wèn)題,automake恰好能很好地幫助我們解決這些問(wèn)題。   使用automake,程序開(kāi)發(fā)人員只需要寫一些簡(jiǎn)單的含有預(yù)定義宏的文件,由autoconf根據(jù)一個(gè)宏文件生成configure,由automake根據(jù)另一個(gè)宏文件生成Makefile.in,再使用configure依據(jù)Makefile.in來(lái)生成一個(gè)符合慣例的Makefile。下面我們將詳細(xì)介紹Makefile的automake生成方法。   二、使用的環(huán)境  本文所提到的程序是基于Linux發(fā)行版本:Fedora Core release 1,它包含了我們要用到的autoconf,automake。   三、從helloworld入手   我們從大家最常使用的例子程序helloworld開(kāi)始。   下面的過(guò)程如果簡(jiǎn)單地說(shuō)來(lái)就是:   新建三個(gè)文件:    helloworld.c    configure.in    Makefile.am   然后執(zhí)行: aclocal; autoconf; automake --add-missing; ./configure; make; ./helloworld   就可以看到Makefile被產(chǎn)生出來(lái),而且可以將helloworld.c編譯通過(guò)。   很簡(jiǎn)單吧,幾條命令就可以做出一個(gè)符合慣例的Makefile,感覺(jué)如何呀。   現(xiàn)在開(kāi)始介紹詳細(xì)的過(guò)程:   1、建目錄   在你的工作目錄下建一個(gè)helloworld目錄,我們用它來(lái)存放helloworld程序及相關(guān)文件,如在/home/my/build下: $ mkdir helloword $ cd helloworld   2、 helloworld.c   然后用你自己最喜歡的編輯器寫一個(gè)hellowrold.c文件,如命令:vi helloworld.c。使用下面的代碼作為helloworld.c的內(nèi)容。 int main(int argc, char** argv) { printf("Hello, Linux World!\n"); return 0; }   完成后保存退出。   現(xiàn)在在helloworld目錄下就應(yīng)該有一個(gè)你自己寫的helloworld.c了。   3、生成configure   我們使用autoscan命令來(lái)幫助我們根據(jù)目錄下的源代碼生成一個(gè)configure.in的模板文件。   命令: $ autoscan $ ls configure.scan helloworld.c   執(zhí)行后在hellowrold目錄下會(huì)生成一個(gè)文件:configure.scan,我們可以拿它作為configure.in的藍(lán)本。   現(xiàn)在將configure.scan改名為configure.in,并且編輯它,按下面的內(nèi)容修改,去掉無(wú)關(guān)的語(yǔ)句: ============================configure.in內(nèi)容開(kāi)始========================================= # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_INIT(helloworld.c) AM_INIT_AUTOMAKE(helloworld, 1.0) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_OUTPUT(Makefile) ============================configure.in內(nèi)容結(jié)束=========================================   然后執(zhí)行命令aclocal和autoconf,分別會(huì)產(chǎn)生aclocal.m4及configure兩個(gè)文件: $ aclocal $ls aclocal.m4 configure.in helloworld.c $ autoconf $ ls aclocal.m4 autom4te.cache configure configure.in helloworld.c   大家可以看到configure.in內(nèi)容是一些宏定義,這些宏經(jīng)autoconf處理后會(huì)變成檢查系統(tǒng)特性、環(huán)境變量、軟件必須的參數(shù)的shell腳本。   autoconf 是用來(lái)生成自動(dòng)配置軟件源代碼腳本(configure)的工具。configure腳本能獨(dú)立于autoconf運(yùn)行,且在運(yùn)行的過(guò)程中,不需要用戶的干預(yù)。   要生成configure文件,你必須告訴autoconf如何找到你所用的宏。方式是使用aclocal程序來(lái)生成你的aclocal.m4。   aclocal根據(jù)configure.in文件的內(nèi)容,自動(dòng)生成aclocal.m4文件。aclocal是一個(gè)perl 腳本程序,它的定義是:“aclocal - create aclocal.m4 by scanning configure.ac”。   autoconf從configure.in這個(gè)列舉編譯軟件時(shí)所需要各種參數(shù)的模板文件中創(chuàng)建configure。   autoconf需要GNU m4宏處理器來(lái)處理aclocal.m4,生成configure腳本。   m4是一個(gè)宏處理器。將輸入拷貝到輸出,同時(shí)將宏展開(kāi)。宏可以是內(nèi)嵌的,也可以是用戶定義的。除了可以展開(kāi)宏,m4還有一些內(nèi)建的函數(shù),用來(lái)引用文件,執(zhí)行命令,整數(shù)運(yùn)算,文本操作,循環(huán)等。m4既可以作為編譯器的前端,也可以單獨(dú)作為一個(gè)宏處理器。 4、新建Makefile.am   新建Makefile.am文件,命令: $ vi Makefile.am   內(nèi)容如下: AUTOMAKE_OPTIONS=foreign bin_PROGRAMS=helloworld helloworld_SOURCES=helloworld.c   automake會(huì)根據(jù)你寫的Makefile.am來(lái)自動(dòng)生成Makefile.in。   Makefile.am中定義的宏和目標(biāo),會(huì)指導(dǎo)automake生成指定的代碼。例如,宏bin_PROGRAMS將導(dǎo)致編譯和連接的目標(biāo)被生成。   5、運(yùn)行automake   命令: $ automake --add-missing configure.in: installing `./install-sh' configure.in: installing `./mkinstalldirs' configure.in: installing `./missing' Makefile.am: installing `./depcomp'   automake會(huì)根據(jù)Makefile.am文件產(chǎn)生一些文件,包含最重要的Makefile.in。   6、執(zhí)行configure生成Makefile $ ./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking for gcc... gcc checking for C compiler default output... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ANSI C... none needed checking for style of include used by make... GNU checking dependency style of gcc... gcc3 configure: creating ./config.status config.status: creating Makefile config.status: executing depfiles commands $ ls -l Makefile -rw-rw-r-- 1 yutao yutao 15035 Oct 15 10:40 Makefile   你可以看到,此時(shí)Makefile已經(jīng)產(chǎn)生出來(lái)了。   7、使用Makefile編譯代碼 $ make if gcc -DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION="" - DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DPACKAGE="helloworld" -DVERSION="1.0" -I. -I. -g -O2 -MT helloworld.o -MD -MP -MF ".deps/helloworld.Tpo" \ -c -o helloworld.o `test -f 'helloworld.c' || echo './'`helloworld.c; \ then mv -f ".deps/helloworld.Tpo" ".deps/helloworld.Po"; \ else rm -f ".deps/helloworld.Tpo"; exit 1; \ fi gcc -g -O2 -o helloworld helloworld.o   運(yùn)行helloworld $ ./helloworld Hello, Linux World!   這樣helloworld就編譯出來(lái)了,你如果按上面的步驟來(lái)做的話,應(yīng)該也會(huì)很容易地編譯出正確的helloworld文件。你還可以試著使用一些其他的make命令,如make clean,make install,make dist,看看它們會(huì)給你什么樣的效果。感覺(jué)如何?自己也能寫出這么專業(yè)的Makefile,老板一定會(huì)對(duì)你刮目相看。 四、深入淺出   針對(duì)上面提到的各個(gè)命令,我們?cè)僮鲂┰敿?xì)的介紹。   1、 autoscan   autoscan是用來(lái)掃描源代碼目錄生成configure.scan文件的。autoscan可以用目錄名做為參數(shù),但如果你不使用參數(shù)的話,那么autoscan將認(rèn)為使用的是當(dāng)前目錄。autoscan將掃描你所指定目錄中的源文件,并創(chuàng)建configure.scan文件。   2、 configure.scan   configure.scan包含了系統(tǒng)配置的基本選項(xiàng),里面都是一些宏定義。我們需要將它改名為configure.in   3、 aclocal   aclocal是一個(gè)perl 腳本程序。aclocal根據(jù)configure.in文件的內(nèi)容,自動(dòng)生成aclocal.m4文件。aclocal的定義是:“aclocal - create aclocal.m4 by scanning configure.ac”。   4、 autoconf   autoconf是用來(lái)產(chǎn)生configure文件的。configure是一個(gè)腳本,它能設(shè)置源程序來(lái)適應(yīng)各種不同的操作系統(tǒng)平臺(tái),并且根據(jù)不同的系統(tǒng)來(lái)產(chǎn)生合適的Makefile,從而可以使你的源代碼能在不同的操作系統(tǒng)平臺(tái)上被編譯出來(lái)。   configure.in文件的內(nèi)容是一些宏,這些宏經(jīng)過(guò)autoconf 處理后會(huì)變成檢查系統(tǒng)特性、環(huán)境變量、軟件必須的參數(shù)的shell腳本。configure.in文件中的宏的順序并沒(méi)有規(guī)定,但是你必須在所有宏的最前面和最后面分別加上AC_INIT宏和AC_OUTPUT宏。   在configure.ini中:   #號(hào)表示注釋,這個(gè)宏后面的內(nèi)容將被忽略。   AC_INIT(FILE)   這個(gè)宏用來(lái)檢查源代碼所在的路徑。 AM_INIT_AUTOMAKE(PACKAGE, VERSION)    這個(gè)宏是必須的,它描述了我們將要生成的軟件包的名字及其版本號(hào):PACKAGE是軟件包的名字,VERSION是版本號(hào)。當(dāng)你使用make dist命令時(shí),它會(huì)給你生成一個(gè)類似helloworld-1.0.tar.gz的軟件發(fā)行包,其中就有對(duì)應(yīng)的軟件包的名字和版本號(hào)。 AC_PROG_CC   這個(gè)宏將檢查系統(tǒng)所用的C編譯器。 AC_OUTPUT(FILE)   這個(gè)宏是我們要輸出的Makefile的名字。   我們?cè)谑褂胊utomake時(shí),實(shí)際上還需要用到其他的一些宏,但我們可以用aclocal 來(lái)幫我們自動(dòng)產(chǎn)生。執(zhí)行aclocal后我們會(huì)得到aclocal.m4文件。   產(chǎn)生了configure.in和aclocal.m4 兩個(gè)宏文件后,我們就可以使用autoconf來(lái)產(chǎn)生configure文件了。   5、 Makefile.am   Makefile.am是用來(lái)生成Makefile.in的,需要你手工書(shū)寫。Makefile.am中定義了一些內(nèi)容: AUTOMAKE_OPTIONS   這個(gè)是automake的選項(xiàng)。在執(zhí)行automake時(shí),它會(huì)檢查目錄下是否存在標(biāo)準(zhǔn)GNU軟件包中應(yīng)具備的各種文件,例如AUTHORS、ChangeLog、NEWS等文件。我們將其設(shè)置成foreign時(shí),automake會(huì)改用一般軟件包的標(biāo)準(zhǔn)來(lái)檢查。 bin_PROGRAMS   這個(gè)是指定我們所要產(chǎn)生的可執(zhí)行文件的文件名。如果你要產(chǎn)生多個(gè)可執(zhí)行文件,那么在各個(gè)名字間用空格隔開(kāi)。 helloworld_SOURCES   這個(gè)是指定產(chǎn)生“helloworld”時(shí)所需要的源代碼。如果它用到了多個(gè)源文件,那么請(qǐng)使用空格符號(hào)將它們隔開(kāi)。比如需要helloworld.h,helloworld.c那么請(qǐng)寫成helloworld_SOURCES= helloworld.h helloworld.c。   如果你在bin_PROGRAMS定義了多個(gè)可執(zhí)行文件,則對(duì)應(yīng)每個(gè)可執(zhí)行文件都要定義相對(duì)的filename_SOURCES。   6、 automake   我們使用automake --add-missing來(lái)產(chǎn)生Makefile.in。   選項(xiàng)--add-missing的定義是“add missing standard files to package”,它會(huì)讓automake加入一個(gè)標(biāo)準(zhǔn)的軟件包所必須的一些文件。   我們用automake產(chǎn)生出來(lái)的Makefile.in文件是符合GNU Makefile慣例的,接下來(lái)我們只要執(zhí)行configure這個(gè)shell 腳本就可以產(chǎn)生合適的 Makefile 文件了。   7、 Makefile   在符合GNU Makefiel慣例的Makefile中,包含了一些基本的預(yù)先定義的操作: make   根據(jù)Makefile編譯源代碼,連接,生成目標(biāo)文件,可執(zhí)行文件。 make clean   清除上次的make命令所產(chǎn)生的object文件(后綴為“.o”的文件)及可執(zhí)行文件。 make install   將編譯成功的可執(zhí)行文件安裝到系統(tǒng)目錄中,一般為/usr/local/bin目錄。 make dist   產(chǎn)生發(fā)布軟件包文件(即distribution package)。這個(gè)命令將會(huì)將可執(zhí)行文件及相關(guān)文件打包成一個(gè)tar.gz壓縮的文件用來(lái)作為發(fā)布軟件的軟件包。   它會(huì)在當(dāng)前目錄下生成一個(gè)名字類似“PACKAGE-VERSION.tar.gz”的文件。PACKAGE和VERSION,是我們?cè)赾onfigure.in中定義的AM_INIT_AUTOMAKE(PACKAGE, VERSION)。 make distcheck   生成發(fā)布軟件包并對(duì)其進(jìn)行測(cè)試檢查,以確定發(fā)布包的正確性。這個(gè)操作將自動(dòng)把壓縮包文件解開(kāi),然后執(zhí)行configure命令,并且執(zhí)行make,來(lái)確認(rèn)編譯不出現(xiàn)錯(cuò)誤,最后提示你軟件包已經(jīng)準(zhǔn)備好,可以發(fā)布了。 =============================================== helloworld-1.0.tar.gz is ready for distribution =============================================== make distclean   類似make clean,但同時(shí)也將configure生成的文件全部刪除掉,包括Makefile。   五、結(jié)束語(yǔ)   通過(guò)上面的介紹,你應(yīng)該可以很容易地生成一個(gè)你自己的符合GNU慣例的Makefile文件及對(duì)應(yīng)的項(xiàng)目文件。   如果你想寫出更復(fù)雜的且符合慣例的Makefile,你可以參考一些開(kāi)放代碼的項(xiàng)目中的configure.in和Makefile.am文件,比如:嵌入式數(shù)據(jù)庫(kù)sqlite,單元測(cè)試cppunit。
            posted @ 2011-05-09 11:19 chaosuper 閱讀(379) | 評(píng)論 (0)編輯 收藏

            2011年5月8日 #

            http://blog.csdn.net/hecant/archive/2007/12/19/1954144.aspx
            posted @ 2011-05-08 11:17 chaosuper 閱讀(531) | 評(píng)論 (0)編輯 收藏

            2010年7月8日 #

            要獲得另一窗體視圖類中的某控件指針,首先獲得視圖指針是難點(diǎn),獲的視圖指針再用GetDlgItem函數(shù)就容易可以獲得控件指針 獲得各種視圖指針如下 1) 在View中獲得Doc指針 2) 在App中獲得MainFrame指針 3) 在View中獲得MainFrame指針 4) 獲得View(已建立)指針 5) 獲得當(dāng)前文檔指針 6) 獲得狀態(tài)欄與工具欄指針 7) 獲得狀態(tài)欄與工具欄變量 8) 在Mainframe獲得菜單指針 9) 在任何類中獲得應(yīng)用程序類 10) 從文檔類取得視圖類的指針(1) 11) 在App中獲得文檔模板指針 12) 從文檔模板獲得文檔類指針 13) 在文檔類中獲得文檔模板指針 14) 從文檔類取得視圖類的指針(2) 15) 從一個(gè)視圖類取得另一視圖類的指針 16)獲取分割視圖中各個(gè)視圖的指針 VC中編程對(duì)于剛剛開(kāi)始學(xué)習(xí)的同學(xué),最大的障礙和問(wèn)題就是消息機(jī)制和指針獲取與操作。其實(shí)這些內(nèi)容基本上是每本VC學(xué)習(xí)工具書(shū)上必講的內(nèi)容,而且通過(guò)MSDN很多問(wèn)題都能解決。 下面文字主要是個(gè)人在編程中指針使用的一些體會(huì),說(shuō)的不當(dāng)?shù)牡胤秸?qǐng)指正。 一般我們使用的框架是VC提供的Wizard生成的MFC App Wizard(exe)框架,無(wú)論是多文檔還是單文檔,都存在指針獲取和操作問(wèn)題。 下面這節(jié)內(nèi)容主要是一般的框架,然后再講多線程中的指針使用。使用到的類需要包含響應(yīng)的頭文件。首先一般獲得本類(視,文檔,對(duì)話框都支持)實(shí)例指針this,用this的目的,主要可以通過(guò)類中的函數(shù)向其他類或者函數(shù)中發(fā)指針,以便于在非本類中操作和使用本類中的功能。 1) 在View中獲得Doc指針 CYouSDIDoc *pDoc=GetDocument();一個(gè)視只能有一個(gè)文檔。 2) 在App中獲得MainFrame指針 CWinApp 中的 m_pMainWnd變量就是MainFrame的指針 也可以: CMainFrame *pMain =(CMainFrame *)AfxGetMainWnd(); 3) 在View中獲得MainFrame指針 CMainFrame *pMain=(CmaimFrame *)AfxGetApp()->m_pMainWnd; 4) 獲得View(已建立)指針 CMainFrame *pMain=(CmaimFrame *)AfxGetApp()->m_pMainWnd; CyouView *pView=(CyouView *)pMain->GetActiveView(); 5) 獲得當(dāng)前文檔指針 CDocument * pCurrentDoc =(CFrameWnd *)m_pMainWnd->GetActiveDocument(); 6) 獲得狀態(tài)欄與工具欄指針 CStatusBar * pStatusBar=(CStatusBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR); CToolBar * pToolBar=(CtoolBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR); 7) 如果框架中加入工具欄和狀態(tài)欄變量還可以這樣 (CMainFrame *)GetParent()->m_wndToolBar; (CMainFrame *)GetParent()->m_wndStatusBar; 8) 在Mainframe獲得菜單指針 CMenu *pMenu=m_pMainWnd->GetMenu(); 9) 在任何類中獲得應(yīng)用程序類 用MFC全局函數(shù)AfxGetApp()獲得。 10) 從文檔類取得視圖類的指針 我是從http://download.cqcnc.com/soft/program/article/vc/vc405.html學(xué)到的,從文檔獲得視圖類指針目的一般為了控制同一文檔的多個(gè)視圖的定位問(wèn)題,我的體會(huì)特別是文字處理CEditView當(dāng)產(chǎn)生多個(gè)視圖類時(shí),這個(gè)功能是非常需要的。 CDocument類提供了兩個(gè)函數(shù)用于視圖類的定位: GetFirstViewPosition()和GetNextView() virtual POSITION GetFirstViewPosition() const; virtual CView* GetNextView(POSITION& rPosition) const; 注意:GetNextView()括號(hào)中的參數(shù)用的是引用方式,因此執(zhí)行后值可能改變。 GetFirstViewPosition()用于返回第一個(gè)視圖位置(返回的并非視圖類指針,而是一個(gè)POSITION類型值),GetNextView()有兩個(gè)功能:返回下一個(gè)視圖類的指針以及用引用調(diào)用的方式來(lái)改變傳入的POSITION類型參數(shù)的值。很明顯,在Test程序中,只有一個(gè)視圖類,因此只需將這兩個(gè)函數(shù)調(diào)用一次即可得到CTestView的指針如下(需定義一個(gè)POSITION結(jié)構(gòu)變量來(lái)輔助操作): CTestView* pTestView; POSITION pos=GetFirstViewPosition(); pTestView=GetNextView(pos); 這樣,便可到了CTestView類的指針pTestView.執(zhí)行完幾句后,變量pos=NULL,因?yàn)闆](méi)有下一個(gè)視圖類,自然也沒(méi)有下一個(gè)視圖類的POSITION.但是這幾條語(yǔ)句太簡(jiǎn)單,不具有太強(qiáng)的通用性和安全特征;當(dāng)象前面說(shuō)的那樣,當(dāng)要在多個(gè)視圖為中返回某個(gè)指定類的指針時(shí),我們需要遍歷所有視圖類,直到找到指定類為止。判斷一個(gè)類指針指向的是否某個(gè)類的實(shí)例時(shí),可用IsKindOf()成員函數(shù)時(shí)行檢查,如: pView->IsKindOf(RUNTIME_CLASS(CTestView)); 即可檢查pView所指是否是CTestView類。 有了以上基礎(chǔ),我們已經(jīng)可以從文檔類取得任何類的指針。為了方便,我們將其作為一個(gè)文檔類的成員函數(shù),它有一個(gè)參數(shù),表示要獲得哪個(gè)類的指針。實(shí)現(xiàn)如下: CView* CTestDoc::GetView(CRuntimeClass* pClass) { CView* pView; POSITION pos=GetFirstViewPosition(); while(pos!=NULL){ pView=GetNextView(pos); if(!pView->IsKindOf(pClass)) break; } if(!pView->IsKindOf(pClass)){ AfxMessageBox("Connt Locate the View.\r\n http://www.VCKBASE.com"); return NULL; } return pView; } 其中用了兩次視圖類的成員函數(shù)IsKindOf()來(lái)判斷,是因?yàn)橥顺鰓hile循環(huán)有三種可能: 1.pos為NULL,即已經(jīng)不存在下一個(gè)視圖類供操作; 2.pView已符合要求。 1和2同是滿足。這是因?yàn)镚etNextView()的功能是將當(dāng)前視圖指針改變成一個(gè)視圖的位置同時(shí)返回當(dāng)前視圖指針,因此pos是pView的下一個(gè)視圖類的POSITION,完全有可能既是pos==NULL又是pView符合需要。當(dāng)所需的視圖是最后一個(gè)視圖是最后一個(gè)視圖類時(shí)就如引。因此需采用兩次判斷。 使用該函數(shù)應(yīng)遵循如下格式(以取得CTestView指針為例):CTestView* pTestView=(CTestView*)GetView(RUNTIME_CLASS(CTestView)); RUNTIME_CLASS是一個(gè)宏,可以簡(jiǎn)單地理解它的作用:將類的名字轉(zhuǎn)化為CRuntimeClass為指針。 至于強(qiáng)制類型轉(zhuǎn)換也是為了安全特性考慮的,因?yàn)閺耐粋€(gè)基類之間的指針類型是互相兼容的。這種強(qiáng)制類型轉(zhuǎn)換也許并不必要,但能避免一些可能出現(xiàn)的麻煩。 3.從一個(gè)視圖類取得另一視圖類的指針 綜合1和2,很容易得出視圖類之間互相獲得指針的方法:就是用文檔類作中轉(zhuǎn),先用1的方法得到文檔類的指針,再用2的方法,以文檔類的視圖定位函數(shù)取得另一個(gè)視圖類。同樣,可以實(shí)現(xiàn)成一個(gè)函數(shù): (假設(shè)要從CTestAView中取得指向其它視圖類的指針)CView* CTestAView::GetView(CRuntimeClass* pClass) { CTestDoc* pDoc=(CTestDoc*)GetDocument(); CView* pView; POSITION pos=pDoc->GetFirstViewPosition(); while(pos!=NULL){ pView=pDoc->GetNextView(pos); if(!pView->IsKindOf(pClass)) break; } if(!pView->IsKindOf(pClass)){ AfxMessageBox("Connt Locate the View."); return NULL; } return pView; } 這個(gè)函數(shù)和2中的GetView()相比,一是多了第一句以取得文檔類指針,二是在GetFirstViewPosition()和GetNextView()前加上了文檔類指針,以表示它們是文檔類成員函數(shù)。 有了此函數(shù);當(dāng)要從CTestAView中取得CTestBView的指針時(shí),只需如下:CTestBView* pTestbView=(CTestView*)GetView(RUNTIME_CLASS(CTestBView)); 11)對(duì)于單文檔中也可以加入多個(gè)文檔模板,但是一般的開(kāi)發(fā)就使用MDI方式開(kāi)發(fā)多文檔模板,其方法與上述視圖的獲取方法很接近,這里稍做解釋,如果不清楚,請(qǐng)查閱MSDN,(以下四個(gè)內(nèi)容(11、12、13、14)來(lái)源:http://sanjianxia.myrice.com/vc/vc45.htm) 可以用CWinApp::GetFirstDocTemplatePostion獲得應(yīng)用程序注冊(cè)的第一個(gè)文檔模板的位置; 利用該值來(lái)調(diào)用CWinApp::GetNextDocTemplate函數(shù),獲得第一個(gè)CDocTemplate對(duì)象指針。 POSITION GetFirstDocTemplate( ) const; CDocTemplate *GetNextDocTemplate( POSITION & pos ) const; 第二個(gè)函數(shù)返回由pos 標(biāo)識(shí)的文檔模板。POSITION是MFC定義的一個(gè)用于迭代或?qū)ο笾羔槞z索的值。通過(guò)這兩個(gè)函數(shù),應(yīng)用程序可以遍歷整個(gè)文檔模板列表。如果被檢索的文檔模板是模板列表中的最后一個(gè),則pos參數(shù)被置為NULL。 接我的: 12)一個(gè)文檔模板可以有多個(gè)文檔,每個(gè)文檔模板都保留并維護(hù)了一個(gè)所有對(duì)應(yīng)文檔的指針列表。 用CDocTemplate::GetFirstDocPosition函數(shù)獲得與文檔模板相關(guān)的文檔集合中第一個(gè)文檔的位置,并用POSITION值作為CDocTemplate::GetNextDoc的參數(shù)來(lái)重復(fù)遍歷與模板相關(guān)的文檔列表。函數(shù)原形為: viaual POSITION GetFirstDocPosition( ) const = 0; visual CDocument *GetNextDoc(POSITION & rPos) const = 0; 如果列表為空,則rPos被置為NULL. 13)在文檔中可以調(diào)用CDocument::GetDocTemplate獲得指向該文檔模板的指針。函數(shù)原形如下: CDocTemplate * GetDocTemplate ( ) const; 如果該文檔不屬于文檔模板管理,則返回值為NULL。 14)一個(gè)文檔可以有多個(gè)視。每一個(gè)文檔都保留并維護(hù)一個(gè)所有相關(guān)視的列表。CDocument::AddView將一個(gè)視連接到文檔上,將該視加入到文檔相聯(lián)系的視的列表中,并將視的文檔指針指向該文檔。當(dāng)有File/New、File/Open、Windows/New或Window/Split的命令而將一個(gè)新創(chuàng)建的視的對(duì)象連接到文檔上時(shí), MFC會(huì)自動(dòng)調(diào)用該函數(shù),框架通過(guò)文檔/視的結(jié)構(gòu)將文檔和視聯(lián)系起來(lái)。當(dāng)然,程序員也可以根據(jù)自己的需要調(diào)用該函數(shù)。 Virtual POSITION GetFirstViewPosition( ) const; Virtual CView * GetNextView( POSITION &rPosition) cosnt; 應(yīng)用程序可以調(diào)用CDocument::GetFirstViewPosition返回與調(diào)用文檔相聯(lián)系的視的列表中的第一個(gè)視的位置,并調(diào)用CDocument::GetNextView返回指定位置的視,并將rPositon的值置為列表中下一個(gè)視的POSITION值。如果找到的視為列表中的最后一個(gè)視,則將rPosition置為NULL. 15)從一個(gè)視圖類取得另一視圖類的指針 這個(gè)應(yīng)用在多視的應(yīng)用程序中很多見(jiàn),一般如果自己在主程序或者主框架中做好變量記號(hào),也可以獲得,還有比較通用的就是用文檔類作中轉(zhuǎn),以文檔類的視圖遍歷定位,取得另一個(gè)視圖類。這個(gè)功能從本文第10項(xiàng)中可以得到。 16)獲取分割視圖中各個(gè)視圖的指針 CSplitterWnd m_wndSplitter; m_wndSplitter.CreateStatic(this, 1, 2);//分割成一行兩列 m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftPaneView), CSize(10, 10), pContext); m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CRightPaneFrame), CSize(0, 0), pContext); //獲取左邊視圖的兩種方法 CLeftPaneView* pLeftPaneView = (CLeftPaneView*) m_wndSplitter.GetPane(0,0); //上一句可以用下句代替: //CLeftPaneView* pLeftPaneView = (CLeftPaneView *)GetActiveView(); //獲取右邊視圖 pLeftPaneView->m_pRightPaneFrame = (CRightPaneFrame*) m_wndSplitter.GetPane(0,1);
            posted @ 2010-07-08 17:26 chaosuper 閱讀(562) | 評(píng)論 (0)編輯 收藏

            2010年4月10日 #

            Factory:客戶類和工廠類分開(kāi)。消費(fèi)者任何時(shí)候需要某種產(chǎn)品,只需向工廠請(qǐng)求即可。消費(fèi)者無(wú)須修改就可以接納新產(chǎn)品。缺點(diǎn)是當(dāng)產(chǎn)品修改時(shí),工廠類也要做相應(yīng)的修改。如:如何創(chuàng)建及如何向客戶端提供。 Builder:將產(chǎn)品的內(nèi)部表象和產(chǎn)品的生成過(guò)程分割開(kāi)來(lái),從而使一個(gè)建造過(guò)程生成具有不同的內(nèi)部表象的產(chǎn)品對(duì)象。建造模式使得產(chǎn)品內(nèi)部表象可以獨(dú)立的變化,客戶不必知道產(chǎn)品內(nèi)部組成的細(xì)節(jié)。建造模式可以強(qiáng)制實(shí)行一種分步驟進(jìn)行的建造過(guò)程。    Factory Method:核心工廠類不再負(fù)責(zé)所有產(chǎn)品的創(chuàng)建,而是將具體創(chuàng)建的工作交給子類去做,成為一個(gè)抽象工廠角色,僅負(fù)責(zé)給出具體工廠類必須實(shí)現(xiàn)的接口,而不接觸哪一個(gè)產(chǎn)品類應(yīng)當(dāng)被實(shí)例化這種細(xì)節(jié)。 Prototype:通過(guò)給出一個(gè)原型對(duì)象來(lái)指明所要?jiǎng)?chuàng)建的對(duì)象的類型,然后用復(fù)制這個(gè)原型對(duì)象的方法創(chuàng)建出更多同類型的對(duì)象。原始模型模式允許動(dòng)態(tài)的增加或減少產(chǎn)品類,產(chǎn)品類不需要非得有任何事先確定的等級(jí)結(jié)構(gòu),原始模型模式適用于任何的等級(jí)結(jié)構(gòu)。缺點(diǎn)是每一個(gè)類都必須配備一個(gè)克隆方法。    Singleton:?jiǎn)卫J酱_保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例單例模式。單例模式只應(yīng)在有真正的"單一實(shí)例"的需求時(shí)才可使用。 Adapter:把一個(gè)類的接口變換成客戶端所期待的另一種接口,從而使原本因接口原因不匹配而無(wú)法一起工作的兩個(gè)類能夠一起工作。適配類可以根據(jù)參數(shù)返還一個(gè)合適的實(shí)例給客戶端。    Bridge:將抽象化與實(shí)現(xiàn)化脫耦,使得二者可以獨(dú)立的變化,也就是說(shuō)將他們之間的強(qiáng)關(guān)聯(lián)變成弱關(guān)聯(lián),也就是指在一個(gè)軟件系統(tǒng)的抽象化和實(shí)現(xiàn)化之間使用組合/聚合關(guān)系而不是繼承關(guān)系,從而使兩者可以獨(dú)立的變化。    Composite:合成模式將對(duì)象組織到樹(shù)結(jié)構(gòu)中,可以用來(lái)描述整體與部分的關(guān)系。合成模式就是一個(gè)處理對(duì)象的樹(shù)結(jié)構(gòu)的模式。合成模式把部分與整體的關(guān)系用樹(shù)結(jié)構(gòu)表示出來(lái)。合成模式使得客戶端把一個(gè)個(gè)單獨(dú)的成分對(duì)象和由他們復(fù)合而成的合成對(duì)象同等看待。    Decorator:裝飾模式以對(duì)客戶端透明的方式擴(kuò)展對(duì)象的功能,是繼承關(guān)系的一個(gè)替代方案,提供比繼承更多的靈活性。動(dòng)態(tài)給一個(gè)對(duì)象增加功能,這些功能可以再動(dòng)態(tài)的撤消。增加由一些基本功能的排列組合而產(chǎn)生的非常大量的功能。   Facade:外部與一個(gè)子系統(tǒng)的通信必須通過(guò)一個(gè)統(tǒng)一的門面對(duì)象進(jìn)行。門面模式提供一個(gè)高層次的接口,使得子系統(tǒng)更易于使用。每一個(gè)子系統(tǒng)只有一個(gè)門面類,而且此門面類只有一個(gè)實(shí)例,也就是說(shuō)它是一個(gè)單例模式。但整個(gè)系統(tǒng)可以有多個(gè)門面類。   Flyweight:FLYWEIGHT在拳擊比賽中指最輕量級(jí)。享元模式以共享的方式高效的支持大量的細(xì)粒度對(duì)象。享元模式能做到共享的關(guān)鍵是區(qū)分內(nèi)蘊(yùn)狀態(tài)和外蘊(yùn)狀態(tài)。內(nèi)蘊(yùn)狀態(tài)存儲(chǔ)在享元內(nèi)部,不會(huì)隨環(huán)境的改變而有所不同。外蘊(yùn)狀態(tài)是隨環(huán)境的改變而改變的。外蘊(yùn)狀態(tài)不能影響內(nèi)蘊(yùn)狀態(tài),它們是相互獨(dú)立的。將可以共享的狀態(tài)和不可以共享的狀態(tài)從常規(guī)類中區(qū)分開(kāi)來(lái),將不可以共享的狀態(tài)從類里剔除出去。客戶端不可以直接創(chuàng)建被共享的對(duì)象,而應(yīng)當(dāng)使用一個(gè)工廠對(duì)象負(fù)責(zé)創(chuàng)建被共享的對(duì)象。享元模式大幅度的降低內(nèi)存中對(duì)象的數(shù)量。 Proxy:代理模式給某一個(gè)對(duì)象提供一個(gè)代理對(duì)象,并由代理對(duì)象控制對(duì)源對(duì)象的引用。代理就是一個(gè)人或一個(gè)機(jī)構(gòu)代表另一個(gè)人或者一個(gè)機(jī)構(gòu)采取行動(dòng)。某些情況下,客戶不想或者不能夠直接引用一個(gè)對(duì)象,代理對(duì)象可以在客戶和目標(biāo)對(duì)象直接起到中介的作用。客戶端分辨不出代理主題對(duì)象與真實(shí)主題對(duì)象。代理模式可以并不知道真正的被代理對(duì)象,而僅僅持有一個(gè)被代理對(duì)象的接口,這時(shí)候代理對(duì)象不能夠創(chuàng)建被代理對(duì)象,被代理對(duì)象必須有系統(tǒng)的其他角色代為創(chuàng)建并傳入。    Chain of Responsibility:在責(zé)任鏈模式中,很多對(duì)象由每一個(gè)對(duì)象對(duì)其下家的引用而接 起來(lái)形成一條鏈。請(qǐng)求在這個(gè)鏈上傳遞,直到鏈上的某一個(gè)對(duì)象決定處理此請(qǐng)求。客戶并不知道鏈上的哪一個(gè)對(duì)象最終處理這個(gè)請(qǐng)求,系統(tǒng)可以在不影響客戶端的情況下動(dòng)態(tài)的重新組織鏈和分配責(zé)任。處理者有兩個(gè)選擇:承擔(dān)責(zé)任或者把責(zé)任推給下家。一個(gè)請(qǐng)求可以最終不被任何接收端對(duì)象所接受。   Command:命令模式把一個(gè)請(qǐng)求或者操作封裝到一個(gè)對(duì)象中。命令模式把發(fā)出命令的責(zé)任和執(zhí)行命令的責(zé)任分割開(kāi),委派給不同的對(duì)象。命令模式允許請(qǐng)求的一方和發(fā)送的一方獨(dú)立開(kāi)來(lái),使得請(qǐng)求的一方不必知道接收請(qǐng)求的一方的接口,更不必知道請(qǐng)求是怎么被接收,以及操作是否執(zhí)行,何時(shí)被執(zhí)行以及是怎么被執(zhí)行的。系統(tǒng)支持命令的撤消。   Interpreter:給定一個(gè)語(yǔ)言后,解釋器模式可以定義出其文法的一種表示,并同時(shí)提供一個(gè)解釋器。客戶端可以使用這個(gè)解釋器來(lái)解釋這個(gè)語(yǔ)言中的句子。解釋器模式將描述怎樣在有了一個(gè)簡(jiǎn)單的文法后,使用模式設(shè)計(jì)解釋這些語(yǔ)句。在解釋器模式里面提到的語(yǔ)言是指任何解釋器對(duì)象能夠解釋的任何組合。在解釋器模式中需要定義一個(gè)代表文法的命令類的等級(jí)結(jié)構(gòu),也就是一系列的組合規(guī)則。每一個(gè)命令對(duì)象都有一個(gè)解釋方法,代表對(duì)命令對(duì)象的解釋。命令對(duì)象的等級(jí)結(jié)構(gòu)中的對(duì)象的任何排列組合都是一個(gè)語(yǔ)言。    Iterator:迭代子模式可以順序訪問(wèn)一個(gè)聚集中的元素而不必暴露聚集的內(nèi)部表象。多個(gè)對(duì)象聚在一起形成的總體稱之為聚集,聚集對(duì)象是能夠包容一組對(duì)象的容器對(duì)象。迭代子模式將迭代邏輯封裝到一個(gè)獨(dú)立的子對(duì)象中,從而與聚集本身隔開(kāi)。迭代子模式簡(jiǎn)化了聚集的界面。每一個(gè)聚集對(duì)象都可以有一個(gè)或一個(gè)以上的迭代子對(duì)象,每一個(gè)迭代子的迭代狀態(tài)可以是彼此獨(dú)立的。迭代算法可以獨(dú)立于聚集角色變化。    Mediator:調(diào)停者模式包裝了一系列對(duì)象相互作用的方式,使得這些對(duì)象不必相互明顯作用。從而使他們可以松散偶合。當(dāng)某些對(duì)象之間的作用發(fā)生改變時(shí),不會(huì)立即影響其他的一些對(duì)象之間的作用。保證這些作用可以彼此獨(dú)立的變化。調(diào)停者模式將多對(duì)多的相互作用轉(zhuǎn)化為一對(duì)多的相互作用。調(diào)停者模式將對(duì)象的行為和協(xié)作抽象化,把對(duì)象在小尺度的行為上與其他對(duì)象的相互作用分開(kāi)處理。    Memento:備忘錄對(duì)象是一個(gè)用來(lái)存儲(chǔ)另外一個(gè)對(duì)象內(nèi)部狀態(tài)的快照的對(duì)象。備忘錄模式的用意是在不破壞封裝的條件下,將一個(gè)對(duì)象的狀態(tài)捉住,并外部化,存儲(chǔ)起來(lái),從而可以在將來(lái)合適的時(shí)候把這個(gè)對(duì)象還原到存儲(chǔ)起來(lái)的狀態(tài)。    Observer:觀察者模式定義了一種一隊(duì)多的依賴關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽(tīng)某一個(gè)主題對(duì)象。這個(gè)主題對(duì)象在狀態(tài)上發(fā)生變化時(shí),會(huì)通知所有觀察者對(duì)象,使他們能夠自動(dòng)更新自己。    State:狀態(tài)模式允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變的時(shí)候改變行為。這個(gè)對(duì)象看上去象是改變了它的類一樣。狀態(tài)模式把所研究的對(duì)象的行為包裝在不同的狀態(tài)對(duì)象里,每一個(gè)狀態(tài)對(duì)象都屬于一個(gè)抽象狀態(tài)類的一個(gè)子類。狀態(tài)模式的意圖是讓一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變的時(shí)候,其行為也隨之改變。狀態(tài)模式需要對(duì)每一個(gè)系統(tǒng)可能取得的狀態(tài)創(chuàng)立一個(gè)狀態(tài)類的子類。當(dāng)系統(tǒng)的狀態(tài)變化時(shí),系統(tǒng)便改變所選的子類。    Strategy:策略模式針對(duì)一組算法,將每一個(gè)算法封裝到具有共同接口的獨(dú)立的類中,從而使得它們可以相互替換。策略模式使得算法可以在不影響到客戶端的情況下發(fā)生變化。策略模式把行為和環(huán)境分開(kāi)。環(huán)境類負(fù)責(zé)維持和查詢行為類,各種算法在具體的策略類中提供。由于算法和環(huán)境獨(dú)立開(kāi)來(lái),算法的增減,修改都不會(huì)影響到環(huán)境和客戶端。 Template Method:模板方法模式準(zhǔn)備一個(gè)抽象類,將部分邏輯以具體方法以及具體構(gòu)造子的形式實(shí)現(xiàn),然后聲明一些抽象方法來(lái)迫使子類實(shí)現(xiàn)剩余的邏輯。不同的子類可以以不同的方式實(shí)現(xiàn)這些抽象方法,從而對(duì)剩余的邏輯有不同的實(shí)現(xiàn)。先制定一個(gè)頂級(jí)邏輯框架,而將邏輯的細(xì)節(jié)留給具體的子類去實(shí)現(xiàn)。    Visitor:訪問(wèn)者模式的目的是封裝一些施加于某種數(shù)據(jù)結(jié)構(gòu)元素之上的操作。一旦這些操作需要修改的話,接受這個(gè)操作的數(shù)據(jù)結(jié)構(gòu)可以保持不變。訪問(wèn)者模式適用于數(shù)據(jù)結(jié)構(gòu)相對(duì)未定的系統(tǒng),它把數(shù)據(jù)結(jié)構(gòu)和作用于結(jié)構(gòu)上的操作之間的耦合解脫開(kāi),使得操作集合可以相對(duì)自由的演化。訪問(wèn)者模式使得增加新的操作變的很容易,就是增加一個(gè)新的訪問(wèn)者類。訪問(wèn)者模式將有關(guān)的行為集中到一個(gè)訪問(wèn)者對(duì)象中,而不是分散到一個(gè)個(gè)的節(jié)點(diǎn)類中。當(dāng)使用訪問(wèn)者模式時(shí),要將盡可能多的對(duì)象瀏覽邏輯放在訪問(wèn)者類中,而不是放到它的子類中。訪問(wèn)者模式可以跨過(guò)幾個(gè)類的等級(jí)結(jié)構(gòu)訪問(wèn)屬于不同的等級(jí)結(jié)構(gòu)的成員類。
            posted @ 2010-04-10 09:37 chaosuper 閱讀(196) | 評(píng)論 (0)編輯 收藏

            2010年4月5日 #

            關(guān)于北京戶口的知識(shí) 1.問(wèn):網(wǎng)上一些人說(shuō)今年應(yīng)屆生北京戶口特別難辦,是真的嗎? 答:每年都有這么說(shuō)的,主要是因?yàn)楣就浟松暾?qǐng)或者不懂得申請(qǐng)策略,打算招10人的應(yīng)該申請(qǐng)20個(gè)指標(biāo)才保險(xiǎn)。其實(shí)公司申請(qǐng)指標(biāo)非常容易特別是注冊(cè)在海淀的企業(yè),除了營(yíng)業(yè)執(zhí)照不需要任何證明,有人說(shuō)要看稅款什么的都是沒(méi)有根據(jù)的,最近兩年連高新證都不看了。事實(shí)是由于公司虛報(bào)和轉(zhuǎn)賣戶口的人存在,每年都有大量戶口指標(biāo)作廢,同時(shí)有大量同學(xué)沒(méi)有順利落戶。 2.問(wèn):費(fèi)用到底是多少? 答:都說(shuō)一百遍了,所有費(fèi)用,包括人才的檔案保管費(fèi)一共2k左右。 3.問(wèn):落了北京戶口我就是名正言順的北京人了? 答:法律上來(lái)說(shuō)是的。但是拿到綠卡的中國(guó)人你認(rèn)為他們是中國(guó)人還是美國(guó)人?老人家在北京呆了半輩子你認(rèn)為他是湖南人還是北京人?說(shuō)自己是哪里人時(shí)要對(duì)得起父母,戶籍可以變,出身永遠(yuǎn)不會(huì)變。 4.問(wèn):可以給孩子落戶了? 答:集體戶口不可以,必須買房改為個(gè)人戶口才行。有人說(shuō)可以落到親戚甚至朋友那里,假如可行的話北京所有的小孩估計(jì)都落到北大附小清華附小學(xué)區(qū)了。退一步講,假如你花10萬(wàn)元收買了派出所允許落戶,讓孩子在北京做個(gè)吉普賽人你忍心嗎? 5.問(wèn):那買房不就行了嗎? 答:是的,在北京生存發(fā)展這是唯一的選擇。前提是支付15到25萬(wàn)的首付和裝修入戶費(fèi),另一個(gè)條件是為了供養(yǎng)房子和以后可能出現(xiàn)的小孩,每年兩人稅后收入至少10萬(wàn)元,而且這種收入至少要穩(wěn)定20年。當(dāng)然如果你父母那里足夠殷實(shí)或者自己是某一方面的專才這些都不是問(wèn)題,否則沒(méi)錢看病或者40歲了還欠著父母20萬(wàn)都是有可能的。 6.問(wèn):買了房落了戶孩子就可以讀名校了 答:完全錯(cuò)誤。名校學(xué)區(qū)早已限定,不會(huì)擴(kuò)大,特別是80萬(wàn)元以下的小區(qū)都在四環(huán)以外,上地三小,馬連洼小學(xué)什么的倒不成問(wèn)題。想讀名校,拿錢,今年北大附小是6萬(wàn),有沒(méi)有北京戶口一個(gè)價(jià)。這是小學(xué),北大附中20萬(wàn)并且有認(rèn)識(shí)人不見(jiàn)得能進(jìn)去,北京有權(quán)有勢(shì)的人多的是。 7.問(wèn):算了,我不考慮那么多了,至少有集體戶口辦里一些手續(xù)方便些吧? 答:未必。目前買車已沒(méi)有限制,辦理出國(guó)手續(xù)通過(guò)公司-人才-派出所,辦理起來(lái)并不比放在老家方便。 8.問(wèn):北京信息豐富,就業(yè)機(jī)會(huì)多 答:目前的網(wǎng)絡(luò)無(wú)處不在,西部偏遠(yuǎn)地區(qū)的農(nóng)民在網(wǎng)上得到的信息不會(huì)比北京it人士少。就業(yè)機(jī)會(huì)多?冷靜點(diǎn)吧,看看人才市場(chǎng)的行情,就業(yè)機(jī)會(huì)再多也沒(méi)有老板的選擇機(jī)會(huì)多,老板正準(zhǔn)備把你趕走,用更少的錢雇傭更年輕的更努力更有活力并且沒(méi)有家庭負(fù)擔(dān)的新人呢。當(dāng)然除非你的技能比較特別,比如中醫(yī)或者面點(diǎn)師。當(dāng)然,如果你人際關(guān)系好、商務(wù)能力足夠強(qiáng),在北京還是大有作為的。 9.問(wèn):先辦個(gè)北京戶口,哪天混不下去了轉(zhuǎn)到小城市不行嗎? 答:不行。大家只知道其他城市轉(zhuǎn)到北京非常難,實(shí)際上從北京轉(zhuǎn)到其他城市的難度完全一樣,這不是城市“好”“壞”的問(wèn)題,這是我國(guó)戶籍制度和人事調(diào)動(dòng)制度決定的(省部級(jí)領(lǐng)導(dǎo)不受此限制)。 10.問(wèn):難道北京戶口就沒(méi)有優(yōu)勢(shì)了嗎? 答:有,北京特困救助高于全國(guó)平均水平。 11.問(wèn):你說(shuō)的這些顛覆了我對(duì)北京戶口的美好印象,是真的嗎? 答:兼聽(tīng)則明,了解真正情況需要問(wèn)一問(wèn)你認(rèn)識(shí)的人,別問(wèn)那幾個(gè)最燦爛的,問(wèn)問(wèn)那些占人口大多數(shù)的,畢業(yè)3、4年的,默默無(wú)聞的。和你的職業(yè)發(fā)展相比戶口不值一提,北京工作居住證基本上有了戶口的所有功能,包括孩子入學(xué)。 12.問(wèn):哎,難道現(xiàn)在畢業(yè)這么凄慘嗎? 答:別那么悲觀,老人家說(shuō)過(guò):海闊天空,大有作為 13.問(wèn):我家里可以給我提供20萬(wàn)的首付,我們兩人畢業(yè)就能拿到稅后10萬(wàn),我有能力 在北京發(fā)展,那北京戶口多少錢合適? 答:5000,北京戶口頂多值這個(gè)價(jià)了。 14..辦理北京戶口的流程是怎樣的? 單位和學(xué)生達(dá)成為就業(yè)意向。并且單位有戶口指標(biāo),承諾給解決北京戶口后,就開(kāi)始進(jìn)入 北京戶口的審批程序。(除了一些極老的國(guó)企,其他企業(yè),包括北大方正、聯(lián)想等接收應(yīng) 屆畢業(yè)生都是下面這些程序) 審批時(shí)間是:春季研究生從3月1日開(kāi)始、其他畢業(yè)生從4月1日開(kāi)始,截止時(shí)間為6月25日。 審批依據(jù):北京人事局規(guī)定本科生進(jìn)京專業(yè)目錄,在此之外的本科專業(yè)辦理難度就比較大 ,除非單位極牛又全力給你辦理。研究生辦理戶口雖然沒(méi)有專業(yè)限制,但是人事局審批時(shí) 要求專業(yè)對(duì)口,否則不給審批。今年就有網(wǎng)絡(luò)公司接收化學(xué)專業(yè)碩士被拒的。 北京人事局規(guī)定本科生進(jìn)京專業(yè)目錄,在此之外的本科專業(yè)辦理難度就比較大。具體專業(yè) 是: 北京市2005年引進(jìn)非北京生源應(yīng)屆本科畢業(yè)生緊缺專業(yè)目錄 計(jì)算機(jī) 建筑 機(jī)械 電力系統(tǒng)及其自動(dòng)化 通信工程 汽車 臨床醫(yī)學(xué) 路橋 護(hù)理學(xué) 人力資源管理 市場(chǎng)營(yíng)銷 會(huì)計(jì) 審批流程: 學(xué)生將申報(bào)材料交給公司,公司去人事局申報(bào),一般5-10個(gè)工作日會(huì)有審批結(jié)果,但有時(shí) 會(huì)拖延,例如去年3月份交上去的本科審批結(jié)果就到5月份才下來(lái)。 申報(bào)材料: 1)推薦表(要求學(xué)校就業(yè)分配部門蓋章,如果是多頁(yè)的,需要在各頁(yè)蓋章或加蓋齊縫章 ) 2)成績(jī)單(本科要求是學(xué)校教務(wù)部門蓋章,研究生可以是研究生院等校級(jí)單位蓋章,絕對(duì)不可以只有系或?qū)W院的章,如果你拿到的成績(jī)單只有系章, 不用去換,只要拿著它去教務(wù)單位補(bǔ)一個(gè)章就行了,如果是多頁(yè)情況,也需要逐頁(yè)蓋章) 3)統(tǒng)分證明(學(xué)校就業(yè)分配部門蓋章,只要寫上x(chóng)x同學(xué)是統(tǒng)分畢業(yè)生就行這樣一句話就 行) 4)品行鑒定(自己寫或是打印,由系里面蓋章就行了) 5)如果是本科,需要提交四級(jí)或六級(jí)證書(shū)原件、復(fù)印件各一份 6)身份證復(fù)印件(只有這個(gè)是復(fù)印件,其他材料都要求原件) 7)三方協(xié)議(可以空著) 批準(zhǔn)落戶的,會(huì)發(fā)給北京市人事局的接收函。不批準(zhǔn)的,會(huì)把所有申報(bào)材料退還給公司,公司再退還給學(xué)生。批準(zhǔn)落戶的,拿著人事局接受函(自己留一份復(fù)印件)和三方協(xié)議交給學(xué)校,讓學(xué)校在三方協(xié)議上蓋章,學(xué)校看到接收函,則可以在三方上蓋章,表示同意該生的就業(yè)選擇(因?yàn)槿绻本┦羞€沒(méi)同意要你,學(xué)校就給你派遣到北京,你的檔案和戶口就會(huì)飄在半空,無(wú)法落地,境況非常麻煩)。然后返一份給單位,自己留一份。辦完這些手續(xù),就等著畢業(yè),學(xué)校給你派遣證和戶口遷移卡,拿這些東西去公司報(bào)到。然后再和單位簽勞動(dòng)合同什么的。畢業(yè)落戶階段三方協(xié)議是很重要的。它不同于勞動(dòng)合同。,三方協(xié)議最主要的作用就是約束你的人事關(guān)系的轉(zhuǎn)移,三方協(xié)議上面的檔案轉(zhuǎn)寄地址,戶口轉(zhuǎn)移地址就是學(xué)校給你派遣檔案、 戶口的用的。所以,如果單位不能給你解決戶口,也就沒(méi)有資格和你簽署三方協(xié)議 。但單位可以和你簽勞動(dòng)合同,勞動(dòng)合同就和戶口、檔案沒(méi)有關(guān)系了,是約束勞動(dòng)者和單 位的關(guān)系的。其實(shí),解決你戶口的單位,在和你簽完三方協(xié)議后,也還要簽勞動(dòng)合同的。因?yàn)槿絽f(xié)議就說(shuō)明你的人事關(guān)系的轉(zhuǎn)移的,沒(méi)有涉及勞動(dòng)關(guān)系。畢業(yè)后,學(xué)校給你派遣證和戶口遷移卡,你就開(kāi)始報(bào)到落戶程序。 辦理程序及辦理地點(diǎn) 第一步:到海淀人才服務(wù)中心報(bào)到 1、在海淀人才網(wǎng)www.hdrc.com.cn 查畢業(yè)生檔案是否已到,如到請(qǐng)記錄編號(hào) 2、如檔案已到,帶接收單位填寫的保留全民身份調(diào)入表1份并加蓋單位公章和報(bào)到證(原件、復(fù)印件各一份); 3、如需在人才服務(wù)中心辦理集體戶口者,請(qǐng)帶在網(wǎng)上下載的“集體戶口申請(qǐng)表”并如實(shí)加蓋單位公章、身份證復(fù)印件、1寸黑白大頭照片2張、報(bào)到證復(fù)印件、戶口卡及遷移證。 辦理地點(diǎn):海淀科技大廈七層、海淀人才服務(wù)中心上地分部、海淀人事局業(yè)務(wù)綜合受理大 廳人才服務(wù)中心窗口 第二步:到海淀區(qū)人事局流動(dòng)調(diào)配科報(bào)到 所需材料: 1、海淀人才開(kāi)具的轉(zhuǎn)入通知; 2、報(bào)到證; 3、戶口遷移證; 4、北京市人事局接收函復(fù)印件; 5、存檔費(fèi)等收費(fèi)收據(jù)的復(fù)印件。 辦理地點(diǎn):海淀區(qū)人事局二層畢業(yè)生審批窗口(蘇州街乙29號(hào)) 第三步:到北京市人事局大學(xué)生處報(bào)到 所需材料: 1、海淀區(qū)人事局開(kāi)具的落戶介紹信; 2、北京市人事局接收函復(fù)印件; 3、戶口遷移證。 辦理地點(diǎn):東城區(qū)臺(tái)基廠三條三號(hào)北京市人事局大學(xué)生處 第四步:到海淀分局開(kāi)具落戶通知單 所需材料: 1、海淀區(qū)人事局開(kāi)具的落戶介紹信; 2、北京市人事局開(kāi)具的落戶介紹信; 3、戶口遷移證。 辦理地點(diǎn):中關(guān)村科技園服務(wù)中心144窗口(阜成路67號(hào),空軍總醫(yī)院對(duì)面)。然后到海 淀人才服務(wù)中心辦理手續(xù) 以上北京戶口知識(shí)轉(zhuǎn)自Zol_泡泡szc的博客
            posted @ 2010-04-05 10:43 chaosuper 閱讀(258) | 評(píng)論 (0)編輯 收藏

            僅列出標(biāo)題  下一頁(yè)
            日韩精品无码久久久久久| 亚洲AV日韩精品久久久久久久| 亚洲午夜福利精品久久| 中文字幕亚洲综合久久| 久久精品无码专区免费东京热 | 国产精品久久网| 亚洲中文字幕无码久久精品1 | 久久无码AV一区二区三区| 久久天天躁狠狠躁夜夜2020 | 亚洲精品97久久中文字幕无码| 日本久久久精品中文字幕| 国产精品岛国久久久久| 国产欧美久久一区二区| 伊人久久大香线蕉影院95| 久久免费国产精品一区二区| 久久精品一本到99热免费| 久久精品水蜜桃av综合天堂 | 99久久精品国产一区二区| 99久久成人18免费网站| 久久国产精品一区| 色诱久久av| 亚洲第一极品精品无码久久| 亚洲AV日韩精品久久久久| 国产精品久久久久AV福利动漫| aaa级精品久久久国产片| 国产精品欧美久久久久无广告| 久久免费视频6| 久久乐国产综合亚洲精品| 久久精品国产色蜜蜜麻豆| 潮喷大喷水系列无码久久精品| 亚洲狠狠久久综合一区77777| 成人国内精品久久久久影院VR| 美女久久久久久| 亚洲乱码中文字幕久久孕妇黑人| 久久午夜羞羞影院免费观看 | 久久天天躁狠狠躁夜夜2020老熟妇| 欧美成a人片免费看久久| 久久国产精品久久精品国产| 国产精品熟女福利久久AV| 热久久国产欧美一区二区精品| 99精品国产99久久久久久97|