1124 Stimmen

Was ist Ihre produktivste Abkürzung mit Vim?

Ich habe schon viel gehört über Vim sowohl Vor- als auch Nachteile. Es scheint wirklich, dass man (als Entwickler) mit Vim schneller sein sollte als mit jedem anderen Editor. Ich benutze Vim, um einige grundlegende Dinge zu tun und ich bin bestenfalls 10 mal weniger produktiv mit Vim.

Die einzigen zwei Dinge, die Ihnen wichtig sein sollten, wenn Sie über Geschwindigkeit sprechen (vielleicht sind sie Ihnen nicht wichtig genug, aber das sollten Sie), sind:

  1. Abwechselnd links und rechts verwenden Händen ist die schnellste Weg zur Verwendung des k
  2. Niemals die Maus zu berühren ist die zweite Möglichkeit, so schnell wie möglich zu sein. Es dauert ewig, bis Sie Ihre Hand bewegen können, die Maus zu greifen, sie zu bewegen und sie wieder auf die Tastatur zu bringen (und man muss oft auf die Tastatur schauen, um sicher zu sein, dass Sie um sicher zu sein, dass man die Hand wieder an der richtigen Stelle hat)

Hier sind zwei Beispiele, die zeigen, warum ich mit Vim weit weniger produktiv bin.

Kopieren/Ausschneiden & Einfügen. Ich mache das ständig. Mit all den zeitgenössischen Redakteuren, die Sie drücken Shift mit der linken Hand, und Sie bewegen den Cursor mit der rechten Hand, um Text auszuwählen. Dann Ctrl + C Kopien, bewegen Sie den Cursor und Ctrl + V Pasten.

Mit Vim ist es furchtbar:

  • yy um eine Zeile zu kopieren (Sie wollen fast nie die ganze Zeile!)
  • [number xx]yy zum Kopieren xx Zeilen in den Puffer. Aber man weiß nie genau, ob man das ausgewählt hat, was man wollte. Ich muss oft [number xx]dd dann u rückgängig zu machen!

Ein weiteres Beispiel? Suchen und Ersetzen.

  • Sur PSPad : Ctrl + f geben Sie ein, wonach Sie suchen möchten, und drücken Sie dann Enter .
  • In Vim: / ein, dann geben Sie ein, wonach Sie suchen möchten, und wenn es Sonderzeichen gibt, geben Sie \ vor jede Sonderzeichen, dann drücken Sie Enter .

Und alles mit Vim ist so: es scheint, dass ich nicht weiß, wie ich es richtig handhaben soll.

NB : Ich habe bereits den Vim gelesen schummeln Blatt :)

Meine Frage ist:

Was ist die Art und Weise, wie Sie Vim benutzen, die Sie produktiver macht als mit einem modernen Editor?

10voto

kguest Punkte 3759

Sie können \= in einer Ersetzungszeichenfolge verwenden, und das ist etwas, was ich hin und wieder tue.

Wenn Sie eine im Wesentlichen ungeordnete Liste in Vim haben, z.B. mit # als Markierung, können Sie sie in eine geordnete Liste umwandeln.

# CSSLINT
# PHPCS
# Charlie
# Delta

Wenn er in Zeile eins beginnt, können Sie Folgendes tun

:1,6s/#/\=line(".")/g

Um sie umzuwandeln in

1 CSSLINT
2 PHPCS
3 Charlie
4 Delta

Wenn es nicht in der ersten Zeile beginnt, rechnen Sie einfach nach:

:16,20s/#/\=line(".") - 15/g

Weitere Informationen unter :help sub-replace-expression

10voto

Mein produktivster vi/Vim-Trick ist:

:%s

Ich liebe die Möglichkeit, reguläre Ausdrücke zu verwenden, um alles in der Datei zu ersetzen, was ich möchte. IMHO sollte jeder Texteditor reguläre Ausdrücke unterstützen.

10voto

cit - den Inhalt des Tags mit dem Übergang im Einfügemodus leeren

yit - den Inhalt des Tags kopieren

10voto

William Pursell Punkte 188248

Ein drittes Kriterium für eine schnellere Bearbeitung ist die Anzahl der erforderlichen Tastenanschläge. Ich würde sagen, dass dies wichtiger ist als die anderen 2. In vim sind für fast alle Operationen weniger Tastenanschläge erforderlich als in jedem anderen Editor, den ich kenne.

Sie erwähnen, dass Sie Probleme mit Ausschneiden und Einfügen haben, aber es klingt, als bräuchten Sie mehr Erfahrung mit allgemeinen Bewegungsbefehlen in vim. yank 3 words: y3w yank vom Cursor zum nächsten Semikolon: yf; yank zum nächsten Vorkommen Ihrer letzten Suche: yn All das ist viel schneller als der Versuch, mit der Maus zu navigieren, während Sie eine Modifier-Taste gedrückt halten. Außerdem sind die Bewegungsbefehle von vim, wie in einigen der Beispiele in der Antwort von CMS zu sehen ist, für die effiziente Navigation in C- und C++-Quellcode optimiert.

Auf die Frage "Wie benutze ich vim so, dass ich produktiver bin?" hoffe ich, dass die Antwort lautet: "effizient".

9voto

kikuchiyo Punkte 3321

Nach der Zuordnung zu einer einfachen Tastenkombination sind die folgenden Informationen für mich sehr nützlich:

In eine Datei springen, während man über ihren Pfad geht

gf

Ermitteln des vollständigen Pfadnamens einer vorhandenen Datei

:r!echo %:p

Verzeichnis der vorhandenen Datei ermitteln

:r!echo %:p:h

Code ausführen:

:!ruby %:p

Rubin-Abkürzungen:

ab if_do if end<esc>bi<cr><esc>xhxO
ab if_else if end<esc>bi<cr><esc>xhxO else<esc>bhxA<cr> <esc>k$O
ab meth def method<cr>end<esc>k<esc>:s/method/
ab klas class KlassName<cr>end<esc>k<esc>:s/KlassName/
ab mod module ModName<cr>end<esc>k<esc>:s/ModName/

aktuelles Programm ausführen:

   map ,rby :w!<cr>:!ruby %:p<cr>

Syntax des aktuellen Programms prüfen:

   map ,c :w!<cr>:!ruby -c %:p<cr>

Führen Sie alle Spezifikationen für das aktuelle Spezifikationsprogramm aus:

   map ,s :w!<cr>:!rspec %:p<cr>

irb aufbrechen:

   map ,i :w!<cr>:!irb<cr>

rspec-Abkürzungen:

   ab shared_examples shared_examples_for "behavior here" do<cr>end
   ab shared_behavior describe "description here" do<cr>  before :each do<cr>end<cr>it_should_behave_like "behavior here"<cr><bs>end<cr>
   ab describe_do describe "description here" do<cr>end
   ab context_do describe "description here" do<cr>end
   ab it_do it "description here" do<cr>end
   ab before_each before :each do<cr>end<cr>

Schienenabkürzungen:

Benutzerauthentifizierung:

     ab userc <esc>:r $VIMRUNTIME/Templates/Ruby/c-users.rb<cr>
     ab userv <esc>:r $VIMRUNTIME/Templates/Ruby/v-users.erb<cr>
     ab userm <esc>:r $VIMRUNTIME/Templates/Ruby/m-users.rb<cr>

Öffnen Sie die visuell ausgewählte URL in Firefox:

"function
   function open_url_in_firefox:(copy_text)
     let g:open_url_in_firefox="silent !open -a \"firefox\" \"".a:copy_text."\""
     exe g:open_url_in_firefox
   endfunction

"abbreviations
   map ,d :call open_url_in_firefox:(expand("%:p"))<cr>
   map go y:call open_url_in_firefox:(@0)<cr> 

rspec: Ausführung der Spezifikation mit der aktuellen Zeile:

"function
   function run_single_rspec_test:(the_test)
     let g:rake_spec="!rspec ".a:the_test.":".line(".")
     exe g:rake_spec
   endfunction

"abbreviations
   map ,s :call run_single_rspec_test:(expand("%:p"))<cr>

rspec-rails: Spec mit der aktuellen Zeile ausführen:

"function
   function run_single_rails_rspec_test:(the_test)
     let g:rake_spec="!rake spec SPEC=\"".a:the_test.":".line(".")."\""
     exe g:rake_spec
   endfunction

"abbreviations
   map ,r :call run_single_rails_rspec_test:(expand("%:p"))<cr>

rspec-rails: Spezifikation, die die aktuelle Zeile enthält, mit Debugging ausführen:

"function
   function run_spec_containing_current_line_with_debugging:(the_test)
     let g:rake_spec="!rake spec SPEC=\"".a:the_test.":".line(".")." -d\""
     exe g:rake_spec
   endfunction

"abbreviations
   map ,p :call run_spec_containing_current_line_with_debugging:(expand("%:p")) <cr>

html

"abbreviations

  "ab htm <html><cr><tab><head><cr></head><cr><body><cr></body><cr><bs><bs></html>
   ab template_html <script type = 'text/template' id = 'templateIdHere'></script>
   ab script_i <script src=''></script>
   ab script_m <script><cr></script>
   ab Tpage <esc>:r ~/.vim/templates/pageContainer.html<cr>
   ab Ttable <esc>:r ~/.vim/templates/listTable.html<cr>

"function to render common html template

   function html:() 
     call feedkeys( "i", 't' )
     call feedkeys("<html>\<cr>  <head>\<cr></head>\<cr><body>\<cr> ", 't')
     call feedkeys( "\<esc>", 't' )
     call feedkeys( "i", 't' )
     call include_js:()
     call feedkeys("\<bs>\<bs></body>\<cr> \<esc>hxhxi</html>", 't')
   endfunction

javascript

"jasmine.js
  "abbreviations
   ab describe_js describe('description here', function(){<cr>});
   ab context_js context('context here', function(){<cr>});
   ab it_js it('expectation here', function(){<cr>});
   ab expect_js expect().toEqual();
   ab before_js beforeEach(function(){<cr>});
   ab after_js afterEach(function(){<cr>});

"function abbreviations

   ab fun1 function(){}<esc>i<cr><esc>ko
   ab fun2 x=function(){};<esc>hi<cr>
   ab fun3 var x=function(){<cr>};

"method for rendering inclusion of common js files

   function include_js:()
     let includes_0  = "  <link   type = 'text\/css' rel = 'stylesheet' href = '\/Users\/johnjimenez\/common\/stylesheets\/jasmine-1.1.0\/jasmine.css'\/>"
     let includes_1  = "  <link   type = 'text\/css' rel = 'stylesheet' href = '\/Users\/johnjimenez\/common\/stylesheets\/screen.css'\/>"
     let includes_2  = "<script type = 'text\/javascript' src = '\/Users\/johnjimenez\/common\/javascripts\/jquery-1.7.2\/jquery-1.7.2.js'><\/script>"
     let includes_3  = "<script type = 'text\/javascript' src = '\/Users\/johnjimenez\/common\/javascripts\/underscore\/underscore.js'><\/script>"
     let includes_4  = "<script type = 'text\/javascript' src = '\/Users\/johnjimenez\/common\/javascripts\/backbone-0.9.2\/backbone.js'><\/script>"
     let includes_5  = "<script type = 'text\/javascript' src = '\/Users\/johnjimenez\/common\/javascripts\/jasmine-1.1.0\/jasmine.js'><\/script>"
     let includes_6  = "<script type = 'text\/javascript' src = '\/Users\/johnjimenez\/common\/javascripts\/jasmine-1.1.0\/jasmine-html.js'><\/script>"
     let includes_7  = "<script>"
     let includes_8  = "  describe('default page', function(){ "
     let includes_9  = "it('should have an html tag', function(){ "
     let includes_10 = "  expect( $( 'head' ).html() ).not.toMatch(\/^[\\s\\t\\n]*$\/);"
     let includes_11  = "});"
     let includes_12 = "});"
     let includes_13 = "$(function(){"
     let includes_14 = "jasmine.getEnv().addReporter( new jasmine.TrivialReporter() );"
     let includes_15 = "jasmine.getEnv().execute();"
     let includes_16 = "});"
     let includes_17 = "\<bs>\<bs><\/script>"

     let j = 0

     while j < 18
       let entry = 'includes_' . j
       call feedkeys( {entry}, 't' )
       call feedkeys( "\<cr>", 't' )
       let j = j + 1
     endwhile

   endfunction

"jquery

  "abbreviations

     ab docr $(document).ready(function(){});
     ab jqfun $(<cr>function(){<cr>}<cr>);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X