Changing Vim editor settings?
Solution 1
Edit ~/.vimrc
and put these in it:
set autoindent
set tabstop=4
colorscheme default
Note: type :colorscheme
and hit Tab in order to find available colorsschemes installed for your Vim .
To use vim
as default editor, use this
export EDITOR=/path/to/vim
or simply export EDITOR=vim
or you can save this in your rc file
Solution 2
Edit your ~/.vimrc
file. If you don't have vimrc file then create new file add following content into it.
- touch
~/.vimrc
Paste this :
" COPY THIS FILE AS .vimrc in home folder. " cp vimrc ~/.vimrc " " .vimrc " " Smylers's .vimrc " http://www.stripey.com/vim/ " " 2000 Jun 1: for `Vim' 5.6 " " This vimrc is divided into these sections: " " * Terminal Settings " * User Interface " * Text Formatting -- General " * Text Formatting -- Specific File Formats " * Search & Replace " * Spelling " * Keystrokes -- Moving Around " * Keystrokes -- Formatting " * Keystrokes -- Toggles " * Keystrokes -- Insert Mode " * Keystrokes -- For HTML Files " * `SLRN' Behaviour " * Functions Referred to Above " " This file contains no control codes and no `top bit set' characters above the " normal Ascii range, and all lines contain a maximum of 79 characters. With a " bit of luck, this should make it resilient to being uploaded, downloaded, " e-mailed, posted, encoded, decoded, transmitted by morse code, or whatever. " first clear any existing autocommands: autocmd! "---" * Terminal Settings "--- "---" `XTerm', `RXVT', `Gnome Terminal', and `Konsole' all claim to be "xterm"; "---" `KVT' claims to be "xterm-color": "---if &term =~ 'xterm' "--- "--- " `Gnome Terminal' fortunately sets $COLORTERM; it needs <BkSpc> and <Del> "--- " fixing, and it has a bug which causes spurious "c"s to appear, which can be "--- " fixed by unsetting t_RV: "--- if $COLORTERM == 'gnome-terminal' "--- execute 'set t_kb=' . nr2char(8) "--- " [Char 8 is <Ctrl>+H.] "--- fixdel "--- set t_RV= "--- "--- " `XTerm', `Konsole', and `KVT' all also need <BkSpc> and <Del> fixing; "--- " there's no easy way of distinguishing these terminals from other things "--- " that claim to be "xterm", but `RXVT' sets $COLORTERM to "rxvt" and these "--- " don't: "--- elseif $COLORTERM == '' "--- execute 'set t_kb=' . nr2char(8) "--- fixdel "--- "--- " The above won't work if an `XTerm' or `KVT' is started from within a `Gnome "--- " Terminal' or an `RXVT': the $COLORTERM setting will propagate; it's always "--- " OK with `Konsole' which explicitly sets $COLORTERM to "". "--- "--- endif "---endif " * User Interface " have syntax highlighting in terminals which can display colours: "if has('syntax') && (&t_Co > 2) " syntax on "endif " have fifty lines of command-line (etc) history: set history=50 " remember all of these between sessions, but only 10 search terms; also " remember info for 10 files, but never any on removable disks, don't remember " marks in files, don't rehighlight old search patterns, and only save up to " 100 lines of registers; including @10 in there should restrict input buffer " but it causes an error for me: set viminfo=/10,'10,r/mnt/zip,r/mnt/floppy,f0,h,\"100 " have command-line completion <Tab> (for filenames, help topics, option names) " first list the available options and complete the longest common part, then " have further <Tab>s cycle through the possibilities: set wildmode=list:longest,full " use "[RO]" for "[readonly]" to save space in the message line: set shortmess+=r " display the current mode and partially-typed commands in the status line: set showmode set showcmd " when using list, keep tabs at their full width and display `arrows': execute 'set listchars+=tab:' . nr2char(187) . nr2char(183) " (Character 187 is a right double-chevron, and 183 a mid-dot.) " have the mouse enabled all the time: " set mouse=a " don't have files trying to override this .vimrc: set nomodeline " * Text Formatting -- General " don't make it look like there are line breaks where there aren't: set nowrap " use indents of 2 spaces, and have them copied down lines: set shiftwidth=2 set shiftround set expandtab set autoindent " normally don't automatically format `text' as it is typed, IE only do this " with comments, at 79 characters: set formatoptions-=t set textwidth=79 " get rid of the default style of C comments, and define a style with two stars " at the start of `middle' rows which (looks nicer and) avoids asterisks used " for bullet lists being treated like C comments; then define a bullet list " style for single stars (like already is for hyphens): set comments-=s1:/*,mb:*,ex:*/ set comments+=s:/*,mb:**,ex:*/ set comments+=fb:* " treat lines starting with a quote mark as comments (for `Vim' files, such as " this very one!), and colons as well so that reformatting usenet messages from " `Tin' users works OK: set comments+=b:\" set comments+=n:: " * Text Formatting -- Specific File Formats " enable filetype detection: filetype on " recognize anything in my .Postponed directory as a news article, and anything " at all with a .txt extension as being human-language text [this clobbers the " `help' filetype, but that doesn't seem to prevent help from working " properly]: augroup filetype autocmd BufNewFile,BufRead */.Postponed/* set filetype=mail autocmd BufNewFile,BufRead *.txt set filetype=human augroup END " in human-language files, automatically format everything at 72 chars: autocmd FileType mail,human set formatoptions+=t textwidth=72 " for C-like programming, have automatic indentation: autocmd FileType c,cpp,slang set cindent " for actual C (not C++) programming where comments have explicit end " characters, if starting a new line in the middle of a comment automatically " insert the comment leader characters: autocmd FileType c set formatoptions+=ro " for Perl programming, have things in braces indenting themselves: autocmd FileType perl set smartindent " for CSS, also have things in braces indented: autocmd FileType css set smartindent " for HTML, generally format text, but if a long line has been created leave it " alone when editing: autocmd FileType html set formatoptions+=tl " for both CSS and HTML, use genuine tab characters for indentation, to make " files a few bytes smaller: autocmd FileType html,css set noexpandtab tabstop=2 " in makefiles, don't expand tabs to spaces, since actual tab characters are " needed, and have indentation at 8 chars to be sure that all indents are tabs " (despite the mappings later): autocmd FileType make set noexpandtab shiftwidth=8 " * Search & Replace " make searches case-insensitive, unless they contain upper-case letters: set ignorecase set smartcase " show the `best match so far' as search strings are typed: set incsearch " assume the /g flag on :s substitutions to replace all matches in a line: set gdefault " * Keystrokes -- Moving Around " have the h and l cursor keys wrap between lines (like <Space> and <BkSpc> do " by default), and ~ covert case over line breaks; also have the cursor keys " wrap in insert mode: set whichwrap=h,l,~,[,] " page down with <Space> (like in `Lynx', `Mutt', `Pine', `Netscape Navigator', " `SLRN', `Less', and `More'); page up with - (like in `Lynx', `Mutt', `Pine'), " or <BkSpc> (like in `Netscape Navigator'): noremap <Space> <PageDown> noremap <BS> <PageUp> noremap - <PageUp> " [<Space> by default is like l, <BkSpc> like h, and - like k.] " scroll the window (but leaving the cursor in the same place) by a couple of " lines up/down with <Ins>/<Del> (like in `Lynx'): noremap <Ins> 2<C-Y> noremap <Del> 2<C-E> " [<Ins> by default is like i, and <Del> like x.] " use <F6> to cycle through split windows (and <Shift>+<F6> to cycle backwards, " where possible): nnoremap <F6> <C-W>w nnoremap <S-F6> <C-W>W " use <Ctrl>+N/<Ctrl>+P to cycle through files: nnoremap <C-N> :next<CR> nnoremap <C-P> :prev<CR> " [<Ctrl>+N by default is like j, and <Ctrl>+P like k.] " have % bounce between angled brackets, as well as t'other kinds: set matchpairs+=<:> " have <F1> prompt for a help topic, rather than displaying the introduction " page, and have it do this from any mode: nnoremap <F1> :help<Space> vmap <F1> <C-C><F1> omap <F1> <C-C><F1> map! <F1> <C-C><F1> " * Keystrokes -- Formatting " have Q reformat the current paragraph (or selected text if there is any): nnoremap Q gqap vnoremap Q gq " have the usual indentation keystrokes still work in visual mode: vnoremap <C-T> > vnoremap <C-D> <LT> vmap <Tab> <C-T> vmap <S-Tab> <C-D> " have Y behave analogously to D and C rather than to dd and cc (which is " already done by yy): noremap Y y$ " * Keystrokes -- Toggles " Keystrokes to toggle options are defined here. They are all set to normal " mode keystrokes beginning \t but some function keys (which won't work in all " terminals) are also mapped. " have \tp ("toggle paste") toggle paste on/off and report the change, and " where possible also have <F4> do this both in normal and insert mode: nnoremap \tp :set invpaste paste?<CR> nmap <F4> \tp imap <F4> <C-O>\tp set pastetoggle=<F4> "" have \tf ("toggle format") toggle the automatic insertion of line breaks "" during typing and report the change: "nnoremap \tf :if &fo =~ 't' <Bar> set fo-=t <Bar> else <Bar> set fo+=t <Bar> " \ endif <Bar> set fo?<CR> "nmap <F3> \tf "imap <F3> <C-O>\tf " " have \tl ("toggle list") toggle list on/off and report the change: nnoremap \tl :set invlist list?<CR> nmap <F2> \tl " have \th ("toggle highlight") toggle highlighting of search matches, and " report the change: nnoremap \th :set invhls hls?<CR> " * Keystrokes -- Insert Mode " allow <BkSpc> to delete line breaks, beyond the start of the current " insertion, and over indentations: set backspace=eol,start,indent " have <Tab> (and <Shift>+<Tab> where it works) change the level of " indentation: inoremap <Tab> <C-T> inoremap <S-Tab> <C-D> " [<Ctrl>+V <Tab> still inserts an actual tab character.] syntax on
- Press Esc
- type
:wq
That's it!
Solution 3
Put these settings in ~/.vimrc
. For more information, type
:help vimrc-intro
from within vim
.
Related videos on Youtube
Niels Savant
Updated on September 18, 2022Comments
-
Niels Savant over 1 year
I have this:
View:
@model ContosoUniversity.Models.UserProfile @{ ViewBag.Title = "Edit"; } <h2>EDIT</h2> <div id="tabs"> <ul> <li><a href="#tabs-1">Personal information</a></li> <li><a href="#tabs-2">Photos</a></li> <li><a href="#tabs-3">The Bike</a></li> </ul> <div id="tabs-1"> @using (Html.BeginForm("Edit", "Account", FormMethod.Post, new { enctype = "multipart/form-data" })) { @Html.AntiForgeryToken() <div class="form-horizontal"> <h4>Lola Biker</h4> <hr /> @Html.ValidationSummary(true) @Html.HiddenFor(model => model.Id) <form class="form-horizontal"> @Html.ActionLink("Change your password", "Manage") <div class="form-group"> @Html.LabelFor(m => m.UserName, new { @class = "control-label col-xs-2" }) @Html.TextBoxFor(m => m.UserName, new { @class = "form-control", style = "width: 250px;" }) </div> <div class="form-group"> @Html.LabelFor(m => m.Email, new { @class = "control-label col-xs-2" }) @Html.TextBoxFor(m => m.Email, new { @class = "form-control", style = "width: 250px;" }) </div> <div class="form-group "> @Html.LabelFor(m => m.FirstName, new { @class = "control-label col-xs-2" }) @Html.TextBoxFor(m => m.FirstName, new { @class = "form-control", style = "width: 250px;" }) </div> <div class=" form-group"> @Html.LabelFor(m => m.LastName, new { @class = "control-label col-xs-2" }) @Html.TextBoxFor(m => m.LastName, new { @class = "form-control", style = "width: 250px;" }) </div> <div class="form-group"> @Html.LabelFor(m => m.Motto, new { @class = "control-label col-xs-2" }) @Html.TextAreaFor(m => m.Motto, new { @class = "form-control", style = "width: 250px;" }) </div> <div class="form-group"> @Html.LabelFor(m => m.PlaceOfBirth, new { @class = "control-label col-xs-2" }) @Html.TextBoxFor(m => m.PlaceOfBirth, new { @class = "form-control", style = "width: 250px;" }) </div> <div class="form-group"> @Html.LabelFor(m => m.HowManyBikes, new { @class = "control-label col-xs-2" }) @Html.TextBoxFor(m => m.HowManyBikes, new { @class = "form-control", style = "width: 250px;" }) </div> <div class="form-group"> @Html.LabelFor(m => m.BesideYourBeth, new { @class = "control-label col-xs-2" }) @Html.TextBoxFor(m => m.BesideYourBeth, new { @class = "form-control", style = "width: 250px;" }) </div> <div class="form-group"> @Html.LabelFor(m => m.NicestRide, new { @class = "control-label col-xs-2" }) @Html.TextBoxFor(m => m.NicestRide, new { @class = "form-control", style = "width: 250px;" }) </div> <div class="form-group"> @Html.LabelFor(m => m.WorstRide, new { @class = "control-label col-xs-2" }) @Html.TextBoxFor(m => m.WorstRide, new { @class = "form-control", style = "width: 250px;" }) </div> <div class="form-group"> @Html.LabelFor(m => m.AmountKmPerYear, new { @class = "control-label col-xs-2" }) @Html.TextBoxFor(m => m.AmountKmPerYear, new { @class = "form-control", style = "width: 250px;" }) </div> <div class="form-group"> @Html.LabelFor(m => m.AverageSpeed, new { @class = "control-label col-xs-2" }) @Html.TextBoxFor(m => m.AverageSpeed, new { @class = "form-control", style = "width: 250px;" }) </div> <div class="form-group"> @Html.LabelFor(m => m.AbleToChatWhileRiding, new { @class = "control-label col-xs-2" }) @Html.TextBoxFor(m => m.AbleToChatWhileRiding, new { @class = "form-control", style = "width: 250px;" }) </div> <div class="form-group"> @Html.LabelFor(m => m.PhoneNumber, new { @class = "control-label col-xs-2" }) @Html.TextBoxFor(m => m.PhoneNumber, new { @class = "form-control", style = "width: 250px;" }) </div> </form> <br /> <div class="pull-left"> <div class="col-md-offset-0"> <input type="submit" value="Save" class="btn btn-default pull-left" /> </div> </div> </div> } <br /><br /> <div> @Html.ActionLink("Back to List", "Index") </div> </div> <div id="tabs-2"> <div id="tabs-2"> @using (Ajax.BeginForm("EditPhotos", "Account", new AjaxOptions() { HttpMethod = "POST" }, new { enctype = "multipart/form-data" } )) //new { enctype = "multipart/form-data" })) { @Html.AntiForgeryToken() <div class="form-horizontal"> <h4>Photos</h4> <hr /> @Html.HiddenFor(model => model.Id) <form class="form-horizontal"> <div class="editor-label"> @Html.LabelFor(model => model.DisplayItem) </div> <div class="editor-field"> @Html.EditorFor(model => model.DisplayItem) </div> <div id="upload-choices"> <div class="editor-label"> @Html.LabelFor(m => m.Image) @Html.ValidationMessageFor(model => model.Image) </div> <div class="editor-row"> @Html.ValidationSummary(true) </div> </div> <br /> <div class="table-responsive"> <table class="table"> <tr> <th><img width="200" height="150" src="@Url.Action("GetImage", "Account", new { id = Model.Id })"></th> </tr> </table> </div> <input type="file" name="file" class="filestyle" data-buttontext="Find file"> </form> <br /> <div class="progress progress-striped"> <div class="progress-bar progress-bar-success">0%</div> </div> <div id="status"></div> <br /> @*@Html.ActionLink("Upload photos", "Upload")*@ <div class="pull-left"> <div class="col-md-offset-0"> <input type="submit" value="Save" id="Id" class="btn btn-default pull-left" /> </div> </div> </div> } <br /><br /> <div> @Html.ActionLink("Back to List", "Index") </div> </div> <div id="tabs-3"> Content for Tab 3 goes here.<br /> Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. </div> </div> </div> <br /><br /> <div> @Html.ActionLink("Back to List", "Index") </div> @section Scripts { <link href="@Url.Content("~/Content/themes/base/jquery-ui.css")" rel="stylesheet" type="text/css" /> <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> <script src="@Url.Content("~/Scripts/jquery-1.11.0.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.form.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery-ui-1.10.4.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/bootstrap-filestyle.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.form.min.js")" type="text/javascript"></script> <script> $(document).ready(function () { $("#tabs").tabs(); // $(document).on("click", ".btn", function () { // $("#tabs").tabs("select", window.location.hash); // $(":file").filestyle({ size: "sm" }); // $(":file").filestyle({ buttonText: "Find file" }); //}); }); $(document).ready(function () { var bar = $('.progress-bar'); var percent = $('.progress-bar'); var status = $('#status'); $('form').ajaxForm({ beforeSend: function () { status.empty(); var percentVal = '0%'; bar.width(percentVal) percent.html(percentVal); }, uploadProgress: function (event, position, total, percentComplete) { var percentVal = percentComplete + '%'; bar.width(percentVal) percent.html(percentVal); }, success: function () { var percentVal = '100%'; bar.width(percentVal) percent.html(percentVal); }, complete: function (xhr) { status.html(xhr.responseText); } }); })(); </script> }
and controller action:
[HttpPost] public ActionResult EditPhotos(UserProfile userprofile,HttpPostedFileBase file) { if (file != null && file.ContentLength > 0) { // extract only the fielname var fileName = Path.GetFileName(file.FileName); // store the file inside ~/App_Data/uploads folder var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName); file.SaveAs(path); } if (ModelState.IsValid) { string username = User.Identity.Name; // Get the userprofile UserProfile user = db.userProfiles.FirstOrDefault(u => u.UserName.Equals(username)); // Update fields user.Image = new byte[file.ContentLength]; file.InputStream.Read(user.Image, 0, file.ContentLength); user.ImageMimeType = file.ContentType; db.Entry(user).State = EntityState.Modified; db.SaveChanges(); return Redirect(Url.Action("Edit", "Account") + "#tabs-2"); } return PartialView(userprofile); }
it goes about tab2
but after I put on save, the view was rendering two times, so I put a breakpoint on this line:
user.Image = new byte[file.ContentLength];
, I get the messagee:An exception of type 'System.NullReferenceException' occurred in ContosoUniversity.dll but was not handled in user code Additional information: Object reference not set to an instance of an object. file = null
but if I after continue, then it loops again and saves the file to database. But so the first time is file = null, but if I continue the file is saved, but also the view is now showing correctly after saving the image.
Thank you
Before uploading
after uploading:
oke, I made it minimal. See this:
View:
@model ContosoUniversity.Models.UserProfile @{ ViewBag.Title = "Edit"; } <h2>EDIT</h2> @using (Html.BeginForm("EditPhotos", "Account", FormMethod.Post)) { @Html.AntiForgeryToken() <input type="file" name="file"><br> <input type="submit" value="Upload File to Server"> } <div class="progress progress-striped"> <div class="progress-bar progress-bar-success">0%</div> </div> <div id="status"></div> <br /><br /> <div> @Html.ActionLink("Back to List", "Index") </div> <br /><br /> <div> @Html.ActionLink("Back to List", "Index") </div> @section Scripts { <link href="@Url.Content("~/Content/themes/base/jquery-ui.css")" rel="stylesheet" type="text/css" /> <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> <script src="@Url.Content("~/Scripts/jquery-1.11.0.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.form.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery-ui-1.10.4.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/bootstrap-filestyle.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.form.min.js")" type="text/javascript"></script> <script> $(document).ready(function () { var bar = $('.progress-bar'); var percent = $('.progress-bar'); var status = $('#status') $('form').ajaxForm({ beforeSend: function () { status.empty(); var percentVal = '0%'; bar.width(percentVal) percent.html(percentVal); }, uploadProgress: function (event, position, total, percentComplete) { var percentVal = percentComplete + '%'; bar.width(percentVal) percent.html(percentVal); }, success: function () { var percentVal = '100%'; bar.width(percentVal) percent.html(percentVal); }, complete: function (xhr) { status.html(xhr.responseText); } }); })(); </script> }
Controller action:
[HttpPost] [ValidateAntiForgeryToken] public ActionResult EditPhotos(UserProfile userprofile,HttpPostedFileBase file) { if (file != null) { // extract only the fielname var fileName = Path.GetFileName(file.FileName); // store the file inside ~/App_Data/uploads folder var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName); file.SaveAs(path); } if (ModelState.IsValid) { string username = User.Identity.Name; // Get the userprofile UserProfile user = db.userProfiles.FirstOrDefault(u => u.UserName.Equals(username)); // Update fields user.Image = new byte[file.ContentLength]; file.InputStream.Read(user.Image, 0, file.ContentLength); user.ImageMimeType = file.ContentType; db.Entry(user).State = EntityState.Modified; db.SaveChanges(); return Redirect(Url.Action("Edit", "Account")); } return View(userprofile); }
but still it looks like this, after uploading image:
-
Admin about 11 yearsI suggest you ask the second question as a separate question. Better yet, Google for its answer first.
-