set 功能設定
本單元可說是 vi(m) 的微調功能,可依您個人的喜好做有限度的調整。由於 vim 做了相當的擴充,文內主要是述敘 vim 的設定,但 elvis 沒有的也會標明。但並不打算一網打盡,只說明重要、常用的部份,其它的可以 :h option-list 來查閱。Linux Journal 四月份(April, 2000)有一篇關於 configuring Vim 的文章,有興趣的朋友也可參考一下,不過依據的版本是 vim 5.5 版,而非最新的 5.6 版。
該在何處設定呢?
可在線上做設定,例如 :set ai 或 :set noai,ai 是 autoindent 的縮寫,這樣就可以馬上改變縮格的設定,但離開 vim 後就又恢復原狀。要永久設定就得設在設定檔中。 vim 的設定檔在:
~/.exrc
~/.vimrc
~/.gvimrc GUI 版本
$VIM/vimrc
$VIM/gvimrc GUI 版本
- windows 版本則在 $VIM/_vimrc 及 $VIM/_gvimrc
- 您要把 GUI 的設定設在 ~/.vimrc 也是可以的,但分開來可能對以後要修改時會比較找得到地方改。
-
那 $VIM 在哪裡呢? /usr/share/vim 或 /usr/local/share/vim 這是編譯時就決定的,但可在 ~/.profie 或 ~/.bashrc 中另設。windows 版本可設在 autoexec.bat 中。
elvis 的則在:
~/.exrc
~/.elvislib/elvis.rc
- windows 版本在 C:\Program Files\elvis\elvis.rc
- 如果您的系統上同時有 vim 及 elvis,則使用 ~/.exrc 要小心,以免互相影響了設定。好處是可以把共同的設定設在 ~/.exrc 裡。
-
拜託您一下!設在設定檔中時 set 前當然是不必冒號的。:-)
如何得知目前的設定
:set 或 :se 會顯示所有經過修改的部份,就是和預設值不一樣的部份。
:set all 顯示目前所有設定值內容。
:set option? 顯示 option 這設定的目前值。
:set option 直接線上設定,有些設定需加 = 後加上設定值內容。
:set nooption 取消該設定。
-
:set 後面是可以多重設定的。例如 :set autoindent noconfirm autowrite,這樣三種設定就會同時重設。
您當然可以改設定檔來改變設定值。在 vim 也可以使用 :opt[ion] 來直接線上設定,會列出目前的設定,在 set 這個字上按 Enter 即可改變設定,或就直接修改其值亦可,改完後按 :q 就可以了。在簡短說明處按 Enter 則會叫出該部份的說明檔給您參考,您說方不方便?改好後
:mk[exrc] 則會寫入 ~/.exrc 檔
:mkv[imrc] 則會寫入 ~/.vimrc 檔
當然您得先搞清楚您目前所在目錄在什麼地方,如果您是在家目錄啟動的那就不用擔心了,否則找不到您的新 .vimrc 可不要寫信來罵我。:-) elvis 可就沒這麼方便了,得自行修改 ~/.exrc 或 ~/.elvislib/elvis.rc
各種set功能說明
autoindent(ai)
自動縮排,也就是說如果本行是從第五個字元開始寫的,您按 Enter
後游標就會停在次行第五個字元處。預設是不打開的。
autowrite(aw)
檔案一有更動就會自動存檔。預設不打開。
background(bg) <vim 才有>
可設成 dark 或 light,這是兩種不同的 highlight 顏色設定,詳見
$VIMRUNTIME/syntax/synload.vim。不過您要更動顏色的設定,最好
是設在 ~/.vimrc 或 ~/.gvimrc 中,原始檔最好不要去動她。
-
ㄟㄟㄟ,你從沒提過 $VIMRUNTIME 好不好!其實這是最近版本的 vim 為了不至安裝新版本時把舊版本的一些設定或 macro 檔幹掉,所以 $VIMRUNTIME 就是 $VIM/vimxx,xx 就是版本號碼啦!例如您使用的是 vim 5.6 版,那麼就是 $VIM/vim56。
backup(bk)
是否要 backup file。預設不打開。
writebackup(wb) <vim 才有>
在寫入檔案前先備份一份,和 backup 的作用不盡相同,請
:h backup-table。預設是打開的,所以您如果不要 backup,那要關
掉的是這個項目,而不是 backup。但請先檢查一下您編譯時是不是
有編譯進去,請 :ver。
backupdir(bdir) <vim 才有>
設定存放 backup file 的目錄。預設在所編輯的檔案之所在目錄。
binary(bin) <vim 才有>
設在編輯二進位檔狀態,這是防止存二進位檔時把 EOL 也寫進二進位
檔,那就會悔不當初,如果是圖檔將會無法再觀看,如果是可執行檔就
無法執行了!因此預設是 off。
-
elvis 會自動判斷是否為二進位檔,而且會分成左右兩半,左半部會以 16 進位的方式顯示,右半部則是以 ASCII 的方式來顯示。
browsedir(bsdir) <vim 才有>
瀏覽檔案的目錄,GUI 版本始有。預設是上一次瀏覽的目錄。就是 GUI
版本功能表上的 [File] -> [Open] 會打開的目錄。
cindent(cin) <vim 才有>
寫 C 時很好用,indent 比一般敏感,專為 C 程式碼而設。預設 off。
編輯 C/C++ code 時會自動打開。
cmdheight(ch) <vim 才有>
狀態列的行數,預設一行,建議設成兩行。
compatible(cp) <vim 才有>
設為和原始 vi 相容的狀態,vim 的擴充功能會被抑制。預設 off。
confirm(cf) <vim 才有>
各種確認動作。預設 off。
directory(dir)
swap 檔存放的目錄。前面單元已有說明。
fileformat(ff) <vim 才有>
這是寫入檔案時置放 EOL(end of line) 的形式
dos 是以 0D 0A 來斷行。
unix 是以 0A 來斷行。
mac 是以 0D 來斷行。
預設以各系統平檯而定,在 Linux 當然是 unix 形式。
fileformats(ffs) <vim 才有>
可指定多個,會依載入的檔案形式來調整 ff。
例如 :set ffs=unix,dos ff=unix
則預設為 unix 格式,但如讀入的是 dos 格式的檔案,會自動調整
為 dos 格式,這樣存檔時就會以 dos 格式存檔(狀態列會顯示)。
。此時如要改成 unix 格式,可 set ff=unix 然後存檔就會轉成
unix 格式,反之亦然。
- 如果不這樣設,也就是您不管 ff 或 ffs 都設成 unix,那讀入 dos 格式的檔案時在每行尾會出現 ^M 這個字元(就是 0D 啦!)這時縱使 :set ff=unix 也來不及了!只好 :%s/^M//g 來消去這個 ^M。ㄟ,還記得怎麼替換嗎?就是把 ^M 換成沒有啦!而且 ^M 怎麼打出來的還記得吧!翻一翻前面的單元吧!
- Hey,你怎麼知道是 0D 呀!好吧!告訴您一個密秘,您把游標移到 ^M 那個位置,然後按 ga 在狀態列就會顯示 10,16,8 進位的值。其它的字元也是可以如此顯示。a 就是 ascii 的意思。但這是 vim 的擴充功能,elvis 沒有。
-
elvis 縱使載入 dos 格式的檔案,也是會自動把 ^M 隱藏起來。
ignorecase(ic)
尋找時不分大小寫,這對中文會造成困擾。預設 off。
incsearch(is) <vim 才有>
加強式尋找功能,在鍵入 patern 時會立即反應移動至目前鍵入之
patern 上。預設 off。
hlsearch(hls) <vim 才有>
尋找時,符合字串會反白表示。預設 off。如果您是使用 vim 的
預設的 vimrc 檔的話,會設在 F8 鍵來切換。
textwidth(tw)
是一種 word wrap 的功能,從左起算之固定每行的最大字元寬度。
超過此寬度就會自動折行,這可是真的折行,也就是說在折行處會插
入 EOL。預設是 0,也就是沒有 word wrap 的功能。
wrapmargin(wm)
和 textwidth 作用相同,只是是從右視窗邊向左算起要幾個字元起
折行。預設是 0。textwidth 與 wrapmargin 的功能目前並不適用於
中文,打中文還是您自行按 Enter 吧!
wrap
這也是折行功能,可是只是螢幕效果的折行,實際上並沒有插入 EOL。
wrapscan(ws)
這和折行沒有關係,是指尋找時,找至檔尾時,是否要從檔首繼續找。
預設是要。
paste <vim 才有>
這是防止在做剪貼時位置會不正確,前面單元已有說明。
ruler(ru) <vim 才有>
會在狀態列顯示游標所在處之行列狀態,預設不打開,但建議打開。
最右邊之代號的意義如下:
Top 檔案第一行在螢幕可見範圍。
Bot 檔案最後一行在螢幕可見範圍。
All 檔案首尾皆在一個螢幕範圍內。
如非以上三種情形,則會顯示相對百分比位置。
statusline(stl) <vim 才有>
狀態列顯示的格式,使用預設就可以了,如果您想騷包一下的話,那
就請您 :h stl。
shiftwidth(sw)
指由 >> 移動整行內容時,一次移動的字元寬度,一般是使用 Tab 的
值,但可由這個設定來改變。
tabstop(ts)
一個 Tab 鍵寬度。預設是 8 個字元寬度。最好不要隨便改,以免您寫
的東西由其它編輯器來閱讀時造成困擾,為解決這個問題,vim 有一種
softtabstop 的機制,在下一節會詳細說明。
showcmd(sc)
在狀態列顯示目前所執行的指令。
showmode(smd)
在狀態列顯示目前的模式,例如是 Insert mode 或是 Visual mode。
當然平常的 normal mode(commond mode)是不顯示的。
viusalbell(vb) <vim 才有>
以螢幕閃動代替 beep 聲。
number(nu)
顯示行號。注意,冒號命令也有 :nu 這是顯示游標所在行的行號,您
嫌多打一個字的話,:# 也行。不過如果 ruler 打開的話,在狀態列本
就會顯示門前游標所在處的行列值。
list
這也可以算是一種模式,list mode。就是 Tab 的地方會以 ^I 顯示,
而行尾之 EOL 會顯示成 $。可以讓您清楚的知道 Tab 在哪裡,折行是
不是真的。
swapfile(swf) <vim 才有>
是否需 swap 至磁碟。如果設為 noswf 的話,那將不會有 swapfile
產生,通通會載入在記憶體中。預設是要 swapfile。
fileencoding(fe) <vim 才有>
首先先鼓掌一下,啪啪啪…,因為有支援 taiwan,也支援 XIM,也
就是說可以使用 xcin-2.5x 來作輸入,當然您用 xcin-2.3x 配合
XA 也是可以啦!目前支援簡繁中文、日文、韓文,unicode 尚未植
入。但前提是您要把 multi_byte 編譯進去,這在一開始就講過了。
預設是使用 ansi。set guifont 及 set guifontset 已在一開始講
過,在此就不重複了。
history(hi)
記錄冒號命令的歷史紀錄檔,就是可以用上下方向鍵叫出來的那鍋。
預設是 20 筆。
關於softtabstop(sts)
幾乎所有的 OS 及軟體都設定 Tab 就是 8 個字元長,這已經是個公認值,您硬要去改變它的話恐怕帶來許多不便,但實際上關於程式風格,許多人又認為 8 個字元太長了,幾個巢狀迴圈下來就需折行,反而不方便。因此 vim 體貼您,內建了 softtabstop 的功能,就是由 vim 來代您製造出一個假的 Tab,實際上是空白字元組成的 Tab。
舉個例子來說明比較清楚。
set softtabstop=4
set shiftwidth=4
這樣會由 4 個空白字元取代一個 Tab,您按 Tab 鍵 vim 就跳 4 格,需注意的是,如果您按了三次 Tab 鍵,那就是一個實際的 Tab 加上四個空白字元,可不是 12 個空白字元喔!是混合 Tab 及 space 的。
問題來了!那我要按真正的 8 字元的 Tab 時怎麼辦?簡單,還記得怎麼按特殊字元嗎? Ctrl-v Tab 或 Ctrl-v I 就可以了,那就是如假包換的 8 字元長之 Tab。當然,您按兩次 Tab 不就得了!:-)
關於折行
前面已說過 set wrap 就可以造成螢幕折行,可是卻會把一個英文單字折成兩半,實在很不雅觀。好了,vim 再體貼您一次,set linebreak(lbr) 就會避免這種問題發生,會在空白或標點符號的地方來折行,但也仍屬螢幕折行,並不會插入 EOL。這個功能目前在中文判斷上還是會出槌!:-(
分享到:
相关推荐
大家来学VIM(一个历久弥新的编辑器)[一] 前言 监於仍有许多人还没找到顺手的编辑器,而许多想学 vi 的人又觉得无从下手,因此在此提出一些个人的心得,希望能对这些朋友有点帮助。或许也减少一点 FAQ 吧! ...
内容概要:本文探讨了高比例可再生能源接入对电力系统调峰能力的影响,提出了一种基于净负荷波动的调峰成本量化与分摊模型。首先,通过将负荷和可再生能源出力曲线转换为无波动的均值线,构建了无调峰需求的替代场景。接着,建立了含深度调峰和抽水蓄能的调度优化模型,用于计算不同场景下的调峰成本。通过比较有无调峰需求两种场景下的系统调峰成本,确定了单一主体导致的边际调峰成本,并采用Shapley值方法合理分摊调峰成本。研究表明,该模型可以有效反映各主体的调峰成本或贡献,有助于促进可再生能源的消纳和电力系统的稳定运行。 适合人群:从事电力系统规划、运营管理和可再生能源研究的专业人士,以及关注能源政策和技术发展的研究人员。 使用场景及目标:适用于评估和优化高比例可再生能源接入条件下的电力系统调峰成本,旨在提高电力系统的灵活性和经济性,同时促进可再生能源的有效利用。 其他说明:该模型需要根据实际情况进行调整和优化,以适应不同地区的电力市场特点和技术水平。
内容概要:本文详细介绍了如何使用博图V16进行ABB机器人的外部启动及其与西门子设备的Profinet通讯配置。首先概述了ABB机器人和博图V16的基本概念,接着深入讲解了外部启动的重要性和实现方式,重点介绍了FB功能块的应用,以及Profinet通讯的具体配置步骤。文中还强调了GSD文件的作用,用于描述机器人的属性和行为,最后讨论了硬件配置的要求和注意事项,特别是对dsqc1030或dsqc652板卡的支持和888-2或888-3选项的需求。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些负责机器人集成和编程的专业人士。 使用场景及目标:适用于需要将ABB机器人与西门子设备通过Profinet网络进行通讯并实现外部启动的项目。目标是提高自动化生产线的灵活性和效率,确保机器人和PLC之间的无缝协作。 其他说明:本文不仅提供了理论指导,还包含了实际操作中的关键细节,有助于读者快速掌握相关技能并在实践中应用。
scratch少儿编程逻辑思维游戏源码-3D环境.zip
少儿编程scratch项目源代码文件案例素材-泼溅猫.zip
内容概要:本文介绍了基于EMD-ARMA的组合风光出力预测方法,详细阐述了经验模态分解(EMD)和自回归移动平均(ARMA)模型的应用步骤。首先,通过EMD将原始发电数据分解为多个本征模态函数(IMF),然后用ARMA模型对各IMF分量进行建模和预测,最后将预测结果叠加重构,获得最终的风光功率预测值。文中还提供了简化的Python代码示例,帮助读者理解和实现该方法。 适合人群:从事新能源研究和技术开发的专业人士,尤其是对风光发电预测感兴趣的科研人员和工程师。 使用场景及目标:适用于需要提高风光发电预测精度的项目,旨在通过先进的数学模型优化电力调度和资源配置。 其他说明:本文提供的代码示例仅用于教学目的,实际应用中需根据具体情况调整和完善。此外,建议在实践中参考更多专业文献和寻求专家意见以确保预测模型的准确性和可靠性。
scratch少儿编程逻辑思维游戏源码-scratch RPG 战斗.zip
scratch少儿编程逻辑思维游戏源码-窗户冒险.zip
scratch少儿编程逻辑思维游戏源码-FC经典游戏 沙罗曼蛇.zip
少儿编程scratch项目源代码文件案例素材-跑酷版《我的世界》.zip
scratch少儿编程逻辑思维游戏源码-抜刀.zip
内容概要:本文介绍了永磁同步电机(PMSM)无位置传感器控制的一种创新方法,重点探讨了通过反电动势估计和扰动观测器增益设计来实现转子位置的精确估算。该方法避免了传统的PLL等位置观测器,仅需一次反正切计算即可获得转子位置,极大简化了系统复杂度。此外,模型控制器采用离散域设计,便于参数调整和适应不同电机参数。文中还提供了具体的Python代码示例,展示了从初始化电机参数到主循环控制的具体实现步骤。 适合人群:从事电机控制系统设计的研究人员和技术工程师,尤其是关注永磁同步电机无传感器控制领域的专业人士。 使用场景及目标:适用于需要简化调试流程、提高系统灵活性和适应多种电机参数的应用场景。主要目标是在保持高性能的同时降低硬件成本和系统复杂性。 其他说明:该方法不仅简化了调试过程,还提高了系统的鲁棒性和可靠性,特别适合于工业自动化、机器人技术和电动汽车等领域。
内容概要:本文深入探讨了乘用车双腔制动主缸的精细化建模及其在Simulink和Amesim中的联合仿真验证。文章首先介绍了双腔制动主缸的物理结构和动力学方程,特别是考虑了液压特性和机械传动的耦合关系。接着,作者详细描述了如何在Simulink中实现这些模型,并通过S函数处理变步长积分问题,确保仿真精度。此外,还讨论了联合仿真过程中遇到的数据交换频率问题,并提出了使用二阶保持器来补偿相位滞后的解决方案。最终,通过对不同推杆力输入条件下的仿真结果对比,验证了精细化模型的有效性和稳定性。 适合人群:从事汽车制动系统研究的技术人员、高校相关专业师生、对车辆动力学仿真感兴趣的工程师。 使用场景及目标:①帮助研究人员更好地理解和掌握双腔制动主缸的工作原理;②为后续更复杂的整车制动系统仿真提供可靠的子系统模型;③提高仿真精度,减少因模型简化带来的误差。 其他说明:文中提供了详细的建模步骤、公式推导、代码实现以及仿真结果对比,附带完整视频教程和参考资料,便于初学者学习。同时强调了实际应用中需要注意的关键细节,如流量计算、数据交换频率调整等。
scratch少儿编程逻辑思维游戏源码-Scratch版Windows11.zip
少儿编程scratch项目源代码文件案例素材-青蛙.zip
内容概要:本文详细介绍了光伏交直流混合微电网在离网(孤岛)模式下的双下垂控制仿真模型。该模型利用Matlab/Simulink工具进行构建和仿真,涵盖了直流微电网、交流微电网以及互联变换器(ILC)的结构和控制策略。直流微电网采用电压电流双闭环下垂控制,交流微电网则通过恒压控制和下垂控制来维持稳定的频率和电压。ILC采用双下垂控制策略,通过归一化处理和偏差调整,使得交流母线频率和直流母线电压趋于一致。此外,模型还包括采样保持、坐标变换、功率滤波、SVPWM等辅助环节,以确保系统的稳定运行和高效能量管理。实验结果显示,在负载突增的情况下,系统依然能够保持良好的波形质量和稳定性。 适合人群:对微电网控制系统感兴趣的科研人员、电力工程技术人员及高校师生。 使用场景及目标:适用于研究和验证光伏交直流混合微电网在离网模式下的控制策略,特别是双下垂控制的应用效果。目标是提升微电网的稳定性和能量管理效率。 其他说明:仿真环境为Matlab2020b及以上版本,部分模块仅支持高版本软件。对于希望深入了解双下垂控制机制的研究者,可以通过进一步的学习和交流获得更多信息。
内容概要:本文详细介绍了基于扩展卡尔曼滤波器(EKF)的INS(惯性测量单元)和GPS(全球定位系统)松组合导航技术。首先解释了为何需要松组合导航,即通过融合INS和GPS的优势,提高定位的稳定性和准确性。接着阐述了15状态下的EKF融合方法,涵盖速度、姿态、位置等多个系统动态参数的估计与更新。然后讨论了NED(北东地)坐标系的应用及其带来的直观物理意义。最后提供了简化的Python代码片段,演示了如何在EKF中融合INS和GPS数据,以获得连续、稳定的导航结果。 适合人群:从事导航技术研发的专业人士,尤其是对EKF、INS、GPS以及多传感器数据融合感兴趣的工程师和技术研究人员。 使用场景及目标:适用于需要高精度、高可靠性定位系统的应用场景,如自动驾驶汽车、无人机飞行控制系统等。目标是通过融合INS和GPS数据,克服单一传感器的局限性,提升整个导航系统的性能。 其他说明:文中提供的代码仅为概念验证性质,实际工程应用中还需考虑更多复杂的因素和优化措施。
内容概要:本文详细介绍了基于MATLAB Simulink平台的三相逆变器稳压控制仿真模型,重点探讨了孤岛运行环境下的电压电流双闭环控制策略及其LCL滤波电路的应用。首先,通过对主电路电流电压的采样并进行Park和Clark变换,将数据转换为dq坐标系下的电流电压值,然后输入双闭环控制系统进行精确调节。接着,通过反变换回到abc坐标系,并利用PWM调制对逆变器进行控制,最终实现了电压电流的稳定输出。文中还提供了简化的Matlab代码片段,展示了关键步骤的具体实现方法。此外,作者通过多次仿真实验验证了该控制策略的有效性和鲁棒性。 适合人群:从事电力电子、自动化控制领域的研究人员和技术人员,尤其是对逆变器控制策略感兴趣的读者。 使用场景及目标:适用于需要深入了解三相逆变器在孤岛运行环境下的稳压控制机制的研究人员和技术人员。目标是掌握电压电流双闭环控制策略以及LCL滤波电路的设计与应用,提高逆变器系统的稳定性和可靠性。 其他说明:本文不仅提供了理论分析,还包括具体的仿真模型和代码示例,有助于读者更好地理解和实践相关技术。
少儿编程scratch项目源代码文件案例素材-七龙珠RPG 测试.zip
scratch少儿编程逻辑思维游戏源码-城市世界.zip